当前位置: 首页 > news >正文

多传感器融合定位十五-多传感器时空标定(综述)

多传感器融合定位十五-多传感器时空标定

  • 1. 多传感器标定简介
    • 1.1 标定内容及方法
    • 1.2 讲解思路
  • 2. 内参标定
    • 2.1 雷达内参标定
    • 2.2 IMU内参标定
    • 2.3 编码器内参标定
    • 2.4 相机内参标定
  • 3. 外参标定
    • 3.1 雷达和相机外参标定
    • 3.2 多雷达外参标定
    • 3.3 手眼标定
    • 3.4 融合中标定
    • 3.5 总结
  • 4. 时间标定
    • 4.1 离散时间
    • 4.2 连续时间
    • 4.3 总结

Reference:

  1. 深蓝学院-多传感器融合
  2. 多传感器融合定位理论基础

文章跳转:

  1. 多传感器融合定位一-3D激光里程计其一:ICP
  2. 多传感器融合定位二-3D激光里程计其二:NDT
  3. 多传感器融合定位三-3D激光里程计其三:点云畸变补偿
  4. 多传感器融合定位四-3D激光里程计其四:点云线面特征提取
  5. 多传感器融合定位五-点云地图构建及定位
  6. 多传感器融合定位六-惯性导航原理及误差分析
  7. 多传感器融合定位七-惯性导航解算及误差分析其一
  8. 多传感器融合定位八-惯性导航解算及误差分析其二
  9. 多传感器融合定位九-基于滤波的融合方法Ⅰ其一
  10. 多传感器融合定位十-基于滤波的融合方法Ⅰ其二
  11. 多传感器融合定位十一-基于滤波的融合方法Ⅱ
  12. 多传感器融合定位十二-基于图优化的建图方法其一
  13. 多传感器融合定位十三-基于图优化的建图方法其二
  14. 多传感器融合定位十四-基于图优化的定位方法
  15. 多传感器融合定位十五-多传感器时空标定(综述)

1. 多传感器标定简介

1.1 标定内容及方法

在这里插入图片描述

1.2 讲解思路

  1. 以思路讲解为主,并给出参考文献和开源代码,不做过多细节展开;
  2. 对已有方法做汇总分析,以求能在新的任务中掌握标定方案设计思路。

2. 内参标定

2.1 雷达内参标定

在这里插入图片描述

  1. 目的
    由于安装原因,线束之间的夹角和设计不一致,会导致测量不准。

  2. 方法
    多线束打在平面上,利用共面约束,求解夹角误差。

  3. 参考
    论文:Calibration of a rotating multi-beam Lidar
    论文:Improving the Intrinsic Calibration of a Velodyne LiDAR Sensor
    论文:3D LIDAR–camera intrinsic and extrinsic calibration: Identifiability and analytical least-squares-based initialization

2.2 IMU内参标定

  1. 目的
    由于加工原因,产生零偏、标度因数误差、安装误差。

  2. 方法
    分立级标定:基于转台;
    迭代优化标定:不需要转台。

  3. 参考
    论文:A Robust and Easy to Implement Method for IMU Calibration without External Equipments
    代码:https://github.com/Kyle-ak/imu_tk

2.3 编码器内参标定

  1. 目的
    用编码器输出解算车的位移增量和角度增量,需已知轮子半径和两轮轴距。

  2. 方法
    以车中心雷达/组合导航做观测,以此为真值,反推模型参数。

  3. 参考
    论文:Simultaneous Calibration of Odometry and Sensor Parameters for Mobile Robots

2.4 相机内参标定

在这里插入图片描述

  1. 目的
    相机与真实空间建立关联,需已知其内参。

  2. 方法
    张正友经典方法

3. 外参标定

3.1 雷达和相机外参标定

在这里插入图片描述

  1. 目的
    解算雷达和相机之间的相对旋转和平移。

  2. 方法
    PnP是主流,视觉提取特征点,雷达提取边缘,建立几何约束。

  3. 参考
    论文: LiDAR-Camera Calibration using 3D-3D Point correspondences
    代码: https://github.com/ankitdhall/lidar_camera_calibration
    论文: Automatic Extrinsic Calibration for Lidar-Stereo Vehicle Sensor Setups
    代码: https://github.com/beltransen/velo2cam_calibration

3.2 多雷达外参标定

在这里插入图片描述

  1. 目的
    多雷达是常见方案,使用时将点云直接拼接,但前提是已知雷达之间的外参(相对旋转和平移)。

  2. 方法
    基于特征(共面)建立几何约束,从而优化外参。

  3. 参考
    论文:A Novel Dual-Lidar Calibration Algorithm Using Planar Surfaces
    代码:https://github.com/ram-lab/lidar_appearance_calibration

3.3 手眼标定

在这里插入图片描述

  1. 目的
    手眼标定适用于所有无共视,但是能输出位姿的传感器之间标定。包括:
    • 无共视的相机、雷达,或雷达与雷达之间;
    • 相机与IMU,或雷达与IMU之间(前提是IMU要足够好,或直接使用组合导航)。

  2. 方法
    均基于公式 AX=XBAX=XBAX=XB

  3. 参考
    论文:LiDAR and Camera Calibration using Motion Estimated by Sensor Fusion Odometry
    代码:https://github.com/ethz-asl/lidar_align

3.4 融合中标定

  1. 目的
    • 脱离标靶,实现在线标定;
    • 某些器件无法提供准确位姿(如低精度IMU),不能手眼标定。

  2. 方法
    在融合模型中,增加外参作为待估参数。

  3. 参考
    众多vio/lio系统,如vins、 lio-mapping、 M-Loam 等

3.5 总结

  1. 这些方法中,推荐优先级从高到低为:
    a. 基于共视的标定
    b. 融合中标定
    c. 手眼标定

  2. 建议
    应在良好环境下标定,尽量避免不分场景的在线标定。良好环境指观测数据优良的场景,例如:
    a. GNSS 信号良好;
    b. 点云面特征丰富,没有特征退化;
    c. 动态物体较少

4. 时间标定

4.1 离散时间

  1. 目的
    在原有离散时间融合模式下,简单地解决时间同步问题。
    在这里插入图片描述

  2. 方案 I
    在这里插入图片描述简单但巧妙的策略: IMU时间保持不变,图像上特征点基于匀速运动模型修改位置。
    与不考虑时间误差时相比,架构不变,使用极小的改动,实现了期望的效果。
    elk=zlk−π(RckwT(Pl−pckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)−π(RckwT(Pl−pckw))zlk(td)=[ulkvlk]T+tdVlk.\begin{array}{l} \mathbf{e}_l^k=\mathbf{z}_l^k-\pi\left(\mathbf{R}_{c_k}^{w^T}\left(\mathbf{P}_l-\mathbf{p}_{c_k}^w\right)\right) \\ \mathbf{z}_l^k=\left[\begin{array}{ll} u_l^k & v_l^k \end{array}\right]^T . \\ \downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow\downarrow \\ \mathbf{e}_l^k=\mathbf{z}_l^k\left(t_d\right)-\pi\left(\mathbf{R}_{c_k}^{w^T}\left(\mathbf{P}_l-\mathbf{p}_{c_k}^w\right)\right) \\ \mathbf{z}_l^k\left(t_d\right)=\left[\begin{array}{ll} u_l^k & v_l^k \end{array}\right]^T+t_d \mathbf{V}_l^k . \end{array} elk=zlkπ(RckwT(Plpckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)π(RckwT(Plpckw))zlk(td)=[ulkvlk]T+tdVlk.参考文献:Online Temporal Calibration for Monocular Visual-Inertial Systems

  3. 方案 II
    在滤波中计算相机位姿时,直接按时间差对积分区间进行调整。
    状态量:x=[xITICq‾TCpITtdc1T⋯cMT]T\mathbf{x}=\left[\begin{array}{lllllll} \mathbf{x}_I^T & { }_I^C \overline{\mathbf{q}}^T & { }^C \mathbf{p}_I^T & t_d & \mathbf{c}_1^T & \cdots & \mathbf{c}_M^T \end{array}\right]^Tx=[xITICqTCpITtdc1TcMT]T
    相机位姿估计:c^new=[GCq(t+td)^GpC(t+td)^]=[ICq^⊗GIq^(t+t^d)Gp^I(t+t^d)+GIR^(t+t^d)TIp^C]\hat{\mathbf{c}}_{n e w}=\left[\begin{array}{c}{ }_G^C \widehat{\mathbf{q}\left(t+t_d\right)} \\ { }^G \widehat{\mathbf{p}_C\left(t+t_d\right)}\end{array}\right]=\left[\begin{array}{c}{ }_I^C \hat{\mathbf{q}} \otimes{ }_G^I \hat{\mathbf{q}}\left(t+\hat{t}_d\right) \\ { }^G \hat{\mathbf{p}}_I\left(t+\hat{t}_d\right)+{ }_G^I \hat{\mathbf{R}}\left(t+\hat{t}_d\right)^T{ }^I \hat{\mathbf{p}}_C\end{array}\right]c^new=[GCq(t+td)GpC(t+td)]=[ICq^GIq^(t+t^d)Gp^I(t+t^d)+GIR^(t+t^d)TIp^C]
    参考文献:Online Temporal Calibration for Camera-IMU Systems: Theory and Algorithms

4.2 连续时间

  1. 原因
    预积分中把时间差作为待估状态量,对时间差进行建模,如下:
    Δpmi=∑k=κi−1(ΔvmkΔtk+ΔRmk2f⁡(tk−δtm−bfm)Δtk2)Δvmi=∑k=κi−1ΔRmkf(tk−δtm)−bfm)ΔtkΔRmi=∏k=κi=1Exp⁡(ω(tk−δtm)−bωm)Δtk),\begin{array}{l} \Delta \mathbf{p}_m^i=\sum_{k=\kappa}^{i-1}\left(\Delta \mathbf{v}_m^k \Delta t_k+\frac{\Delta \mathbf{R}_m^k}{2} \operatorname{f}\left(t_k-\delta_t^m-\mathbf{b}_f^m\right) \Delta t_k^2\right) \\ \left.\Delta \mathbf{v}_m^i=\sum_{k=\kappa}^{i-1} \Delta \mathbf{R}_m^k \mathbf{f}\left(t_k-\delta_t^m\right)-\mathbf{b}_f^m\right) \Delta t_k \\ \left.\Delta \mathbf{R}_m^i=\prod_{k=\kappa}^{i=1} \operatorname{Exp}\left(\omega\left(t_k-\delta_t^m\right)-\mathbf{b}_\omega^m\right) \Delta t_k\right), \end{array} Δpmi=k=κi1(ΔvmkΔtk+2ΔRmkf(tkδtmbfm)Δtk2)Δvmi=k=κi1ΔRmkf(tkδtm)bfm)ΔtkΔRmi=k=κi=1Exp(ω(tkδtm)bωm)Δtk),由于要对时间差求雅可比,因此插值函数必须可导,雅可比如下:
    ΔRm(bω,δt)i≈ΔRm(bˉωm,δˉδm)iExp⁡(∂ΔRmi∂bωb^ωm+∂ΔRmi∂δtδ^tm).Δvm(bf,bω,δt)i≈ΔΔvm(bˉfm,bˉmm,δˉtm)i+∂Δvmi∂bfb^fm+∂Δvmi∂bωb^ωm+∂Δvmi∂δtδ^tmΔpm(bf,bω,,δt)i≈Δpm(bfm‾,bˉmm,δˉtm)i+∂Δpmm∂bfb^fm+∂Δpmi∂bωb^ωm+∂Δpmi∂δtδ^tm\begin{array}{l} \Delta \mathbf{R}_{m\left(\mathbf{b}_\omega, \delta_t\right)}^i \approx \Delta \mathbf{R}_{m\left(\bar{b}_\omega^m, \bar{\delta}_\delta^m\right)}^i \operatorname{Exp}\left(\frac{\partial \Delta \mathbf{R}_m^i}{\partial \mathbf{b}_\omega} \hat{\mathbf{b}}_\omega^m+\frac{\partial \Delta \mathbf{R}_m^i}{\partial \delta_t} \hat{\delta}_t^m\right). \\ \Delta \mathbf{v}_{m\left(\mathbf{b}_f, \mathbf{b}_\omega, \delta_t\right)}^i \approx \Delta \Delta \mathbf{v}_{m\left(\bar{b}_f^m, \bar{b}_m^m, \bar{\delta}_t^m\right)}^i+\frac{\partial \Delta \mathbf{v}_m^i}{\partial \mathbf{b}_f} \hat{\mathbf{b}}_f^m +\frac{\partial \Delta \mathbf{v}_m^i}{\partial \mathbf{b}_\omega} \hat{\mathbf{b}}_\omega^m+\frac{\partial \Delta \mathbf{v}_m^i}{\partial \delta_t} \hat{\delta}_t^m \\ \Delta \mathbf{p}_{m\left(\mathbf{b}_f, \mathbf{b}_{\omega,}, \delta_t\right)}^i \approx \Delta \mathbf{p}_{m\left(\overline{\mathbf{b}_f^m}, \bar{b}_m^m, \bar{\delta}_t^m\right)}^i+\frac{\partial \Delta \mathbf{p}_m^m}{\partial \mathbf{b}_f} \hat{\mathbf{b}}_f^m +\frac{\partial \Delta \mathbf{p}_m^i}{\partial \mathbf{b}_\omega} \hat{b}_\omega^m+\frac{\partial \Delta \mathbf{p}_m^i}{\partial \delta_t} \hat{\delta}_t^m \\ \end{array} ΔRm(bω,δt)iΔRm(bˉωm,δˉδm)iExp(bωΔRmib^ωm+δtΔRmiδ^tm).Δvm(bf,bω,δt)iΔΔvm(bˉfm,bˉmm,δˉtm)i+bfΔvmib^fm+bωΔvmib^ωm+δtΔvmiδ^tmΔpm(bf,bω,,δt)iΔpm(bfm,bˉmm,δˉtm)i+bfΔpmmb^fm+bωΔpmib^ωm+δtΔpmiδ^tm参考文献:3D Lidar-IMU Calibration based on Upsampled Preintegrated Measurements for Motion Distortion Correction
  2. 方法
    把输入建立为连续时间函数,从而可以在任意时间求导。
  3. 参考
    a. kalibr 系列
    论文:Continuous-Time Batch Estimation using Temporal Basis Functions
    论文:Unified Temporal and Spatial Calibration for Multi-Sensor Systems
    论文:Extending kalibr Calibrating the Extrinsics of Multiple IMUs and of Individual Axes
    代码:https://github.com/ethz-asl/kalibr
    b. 其他
    论文:Targetless Calibration of LiDAR-IMU System Based on Continuous-time Batch Estimation
    代码:https://github.com/APRIL-ZJU/lidar_IMU_calib

4.3 总结

  1. 时间差估计,在某些情况下不得已而为之,实际中应尽量创造条件实现硬同步;
  2. 不得不估计时,也应尽量在良好环境下估计。

相关文章:

多传感器融合定位十五-多传感器时空标定(综述)

多传感器融合定位十五-多传感器时空标定1. 多传感器标定简介1.1 标定内容及方法1.2 讲解思路2. 内参标定2.1 雷达内参标定2.2 IMU内参标定2.3 编码器内参标定2.4 相机内参标定3. 外参标定3.1 雷达和相机外参标定3.2 多雷达外参标定3.3 手眼标定3.4 融合中标定3.5 总结4. 时间标…...

开发微服务电商项目演示(三)

一,nginx动静分离第1步:通过SwitchHosts新增二级域名:images.zmall.com第2步:将本次项目的易买网所有静态资源js/css/images复制到nginx中的html目录下第3步:在nginx的核心配置文件nginx.conf中新增二级域名images.zma…...

C/C++排序算法(二) —— 选择排序和堆排序

文章目录前言1. 直接选择排序🍑 基本思想🍑 具体步骤🍑 具体步骤🍑 动图演示🍑 代码实现🍑 代码升级🍑 特性总结2. 堆排序🍑 向下调整算法🍑 任意树调整为堆的思想&#…...

爬虫笔记之——selenium安装与使用(1)

爬虫笔记之——selenium安装与使用(1)一、安装环境1、下载Chrome浏览器驱动(1)查看Chrome版本(2)下载相匹配的Chrome驱动程序地址:https://chromedriver.storage.googleapis.com/index.html2、学…...

STC15单片机软串口的使用

STC15软串口的使用📖在没有使用定时器资源的情况下,根据波特率位传输时间,利用STC-ISP工具自动计算出位延时函数。 ✨在官方所提供的库函数中位传输时间函数,仅适用于使用波特率为:9600的串口数据传输: void BitTime(…...

Ansible的脚本------playbook剧本

一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过Dynamic Inventory动态生成一般主机名使用FQDNvi /etc/ansible/hosts [webserver] #使用方括号设置组名 www1.example.org #定…...

实验5-计算中值及分治技术

目录 1.寻找中位数(利用快速排序来寻找中位数) 2.分治方法求数组的和 3.合并排序...

dbeaver从excel导入数据笔记

场景 有excel的数据,需要做到数据库里。 方案一: 开发代码来实现。缺点是需要开发成本。 方案二: 数据库导入工具导入。不用开发,相对快速一些。 这里说下数据库工具导入。 操作过程 1、拿到excel数据文件,根据标题…...

PyTorch学习笔记:nn.MarginRankingLoss——排序损失

PyTorch学习笔记:nn.MarginRankingLoss——排序损失 torch.nn.MarginRankingLoss(margin0.0, size_averageNone, reduceNone, reductionmean)功能:创建一个排序损失函数,用于衡量输入x1x_1x1​与x2x_2x2​之间的排序损失(Ranking Loss)&…...

【JavaScript】34_Date对象 ,日期的格式化

8、Date Date 在JS中所有的和时间相关的数据都由Date对象来表示 对象的方法: getFullYear() 获取4位年份 getMonth() 返当前日期的月份(0-11) getDate() 返回当前是几日 getDay() 返回当前日期是周几(0-6) 0表示周日…...

计算机视觉 对比学习13篇经典论文、解读、代码

为了快速对 机器视觉中的对比学习有一个快速了解,或者后续复习,此处收录了 13篇经典论文、一些讲解地较好的博客和相应的Github代码,用不同颜色标记。 ​ 对比学习 13篇经典论文 论文代码和博客http://​www.webhub123.com/#/home/detail?p…...

MySQL 选择数据库

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。 在 MySQL 中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。 在 MySQL 中,USE 语句用来完成一个数据库到…...

雅思经验(9)

写作:关于趋势的上升和下降在小作文中,真的是非常常见的,所以还是要积累一下。下面给出了很多词,但是在雅思写作中并不是词越丰富,分数就越高的。雅思写作强调的是准确性:在合适的地方用合适的词和句法。不…...

java面试题(二十)中间件redis

1.1 Redis可以用来做什么? 参考答案 Redis最常用来做缓存,是实现分布式缓存的首先中间件;Redis可以作为数据库,实现诸如点赞、关注、排行等对性能要求极高的互联网需求;Redis可以作为计算工具,能用很小的…...

JavaWEB必知必会-Servlet

目录 Servlet简介Servlet快速入门Servlet配置详解ServletContext 1 Servlet简介 Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码&a…...

oralce查找返回不同的值,寻找不同的表(原创)

查找返回不同的值,寻找不同的表 select case a_id when 1 then (select b_id|| ||b_desc from b where b.b_ida.a_id) else (select e_id || ||e_desc from e where e.e_ida.a_id) end from a; 以上方法的缺陷是单表,判断。今天来了个挑战&#…...

Python-第四天 Python循环语句

Python-第四天 Python循环语句一、while循环1.while循环的基础语法2.while循环的基础案例3.while循环的嵌套应用4.while循环的嵌套案例二、for循环1.for循环的基础语法1.1基础语法1.2 range语句2.for循环的嵌套应用三、循环中断 : break和continue1.continue2.break四、 综合案…...

spring中bean的生命周期(简单5步)

目录 一、概念 1.生命是bean的生命周期? 2.知道bean生命周期的意义? 3.bean的生命周期按照粗略的五步 二、例子讲解 一、概念 1.生命是bean的生命周期? 答:spring其实就是管理bean对象的工厂,它负责对象的创建&…...

10 个最难理解的 Python 概念

文章目录技术提升面向对象编程 (OOP)装饰器生成器多线程异常处理正则表达式异步/等待函数式编程元编程网络编程大家好,与其他编程语言相比,Python 是一门相对简单的编程语言,如果你想真正学透这门语言,其实可能并不容易。 今天我…...

【linux】线程概念

概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 一切进程至少都有一个执行线程,线程在进程内部运行,本质是在进程地址空间内运行 在Linux系统中&a…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...