怎样给网站做百度推广/创建网站步骤
多传感器融合定位十五-多传感器时空标定
- 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:
- 深蓝学院-多传感器融合
- 多传感器融合定位理论基础
文章跳转:
- 多传感器融合定位一-3D激光里程计其一:ICP
- 多传感器融合定位二-3D激光里程计其二:NDT
- 多传感器融合定位三-3D激光里程计其三:点云畸变补偿
- 多传感器融合定位四-3D激光里程计其四:点云线面特征提取
- 多传感器融合定位五-点云地图构建及定位
- 多传感器融合定位六-惯性导航原理及误差分析
- 多传感器融合定位七-惯性导航解算及误差分析其一
- 多传感器融合定位八-惯性导航解算及误差分析其二
- 多传感器融合定位九-基于滤波的融合方法Ⅰ其一
- 多传感器融合定位十-基于滤波的融合方法Ⅰ其二
- 多传感器融合定位十一-基于滤波的融合方法Ⅱ
- 多传感器融合定位十二-基于图优化的建图方法其一
- 多传感器融合定位十三-基于图优化的建图方法其二
- 多传感器融合定位十四-基于图优化的定位方法
- 多传感器融合定位十五-多传感器时空标定(综述)
1. 多传感器标定简介
1.1 标定内容及方法
1.2 讲解思路
- 以思路讲解为主,并给出参考文献和开源代码,不做过多细节展开;
- 对已有方法做汇总分析,以求能在新的任务中掌握标定方案设计思路。
2. 内参标定
2.1 雷达内参标定
-
目的
由于安装原因,线束之间的夹角和设计不一致,会导致测量不准。 -
方法
多线束打在平面上,利用共面约束,求解夹角误差。 -
参考
论文: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内参标定
-
目的
由于加工原因,产生零偏、标度因数误差、安装误差。 -
方法
分立级标定:基于转台;
迭代优化标定:不需要转台。 -
参考
论文:A Robust and Easy to Implement Method for IMU Calibration without External Equipments
代码:https://github.com/Kyle-ak/imu_tk
2.3 编码器内参标定
-
目的
用编码器输出解算车的位移增量和角度增量,需已知轮子半径和两轮轴距。 -
方法
以车中心雷达/组合导航做观测,以此为真值,反推模型参数。 -
参考
论文:Simultaneous Calibration of Odometry and Sensor Parameters for Mobile Robots
2.4 相机内参标定
-
目的
相机与真实空间建立关联,需已知其内参。 -
方法
张正友经典方法
3. 外参标定
3.1 雷达和相机外参标定
-
目的
解算雷达和相机之间的相对旋转和平移。 -
方法
PnP是主流,视觉提取特征点,雷达提取边缘,建立几何约束。 -
参考
论文: 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 多雷达外参标定
-
目的
多雷达是常见方案,使用时将点云直接拼接,但前提是已知雷达之间的外参(相对旋转和平移)。 -
方法
基于特征(共面)建立几何约束,从而优化外参。 -
参考
论文:A Novel Dual-Lidar Calibration Algorithm Using Planar Surfaces
代码:https://github.com/ram-lab/lidar_appearance_calibration
3.3 手眼标定
-
目的
手眼标定适用于所有无共视,但是能输出位姿的传感器之间标定。包括:
• 无共视的相机、雷达,或雷达与雷达之间;
• 相机与IMU,或雷达与IMU之间(前提是IMU要足够好,或直接使用组合导航)。 -
方法
均基于公式 AX=XBAX=XBAX=XB -
参考
论文:LiDAR and Camera Calibration using Motion Estimated by Sensor Fusion Odometry
代码:https://github.com/ethz-asl/lidar_align
3.4 融合中标定
-
目的
• 脱离标靶,实现在线标定;
• 某些器件无法提供准确位姿(如低精度IMU),不能手眼标定。 -
方法
在融合模型中,增加外参作为待估参数。 -
参考
众多vio/lio系统,如vins、 lio-mapping、 M-Loam 等
3.5 总结
-
这些方法中,推荐优先级从高到低为:
a. 基于共视的标定
b. 融合中标定
c. 手眼标定 -
建议
应在良好环境下标定,尽量避免不分场景的在线标定。良好环境指观测数据优良的场景,例如:
a. GNSS 信号良好;
b. 点云面特征丰富,没有特征退化;
c. 动态物体较少
4. 时间标定
4.1 离散时间
-
目的
在原有离散时间融合模式下,简单地解决时间同步问题。
-
方案 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(Pl−pckw))zlk=[ulkvlk]T.↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓elk=zlk(td)−π(RckwT(Pl−pckw))zlk(td)=[ulkvlk]T+tdVlk.参考文献:Online Temporal Calibration for Monocular Visual-Inertial Systems -
方案 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=[xITICqTCpITtdc1T⋯cMT]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 连续时间
- 原因
预积分中把时间差作为待估状态量,对时间差进行建模,如下:
Δ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=κi−1(ΔvmkΔtk+2ΔRmkf(tk−δtm−bfm)Δtk2)Δvmi=∑k=κi−1Δ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 - 方法
把输入建立为连续时间函数,从而可以在任意时间求导。 - 参考
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. 多传感器标定简介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…...

Leg转Goh引擎和架设单机+配置登陆器教程
教程准备1、Leg版本一个2、Goh引擎一套3、电脑一台(最好联网)前言:BLUE/LEGS/Gob/Goh/九龍、4K、AspM2第一步:更换引擎1、把版本自带的LEG引擎换成Goh引擎2、删除服务端里面的exe、dll文件(也可以直接更新)3、清理登录和游戏网关里面的配置文件4、更新引…...

idea整合svn
idea整合svn svn下载 链接:https://pan.baidu.com/s/1yS3R3lEE8lm9c9Ap-ndDKg 提取码:65ur 基础步骤 IDED中配置SVN没有svn.exe解决办法 以下是两种解决方案 需要卸载原 svn(不推荐) 参考网址: https://blog.csdn.…...

字节青训前端笔记 | 数据可视化基础
本课程主要内容可以分为三个章节: 数据可视化的基本概念可视化设计的基本原则面向前端的可视化工具 本手册可以作为学生学习数据可视化的“学习指南”,按照手册所列内容,结合扩展资料进行系统的学习和实践。本课程没有讨论更为前沿的可视化…...

ROS运行机C++程序,移动
流程: 1.创建工作空间 mkdir catkin_ws cd catkin_ws mkdir src cd src catkin_init_workspace 2编译工作空间 cd ~/catkin_ws/ catkin_make catkin_make install 首先对ROS进行创建一个元功能包 3.设置环境变量 source devel/setup.bash source devel/setup.b…...

C++中编译静态库与动态库
1.库的理解库就是写好的现有的,成熟的,可复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,是预编译代码的集…...

shell中sed命令用法
一、sed命令解析 1、sed工具概述 Stream EDitor,流式编辑器 - 非交互,基于模式匹配过滤及修改文本 - 逐行处理,并将结果输出到屏幕 - 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作 2、命令格式解析 主要用法: …...

【VictoriaMetrics】VictoriaMetrics启停脚本
先看结果,启动VictoriaMetrics UI界面可访问...

高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性
高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时…...

【正点原子FPGA连载】第七章程序固化实验摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
第七章程序固化实验 在前面的几个实验中,我们都是通过JTAG接口将FPGA配置文件和应用程序下载到MPSOC器件中。接下来我们将尝试把程序存储在非易失性存储器中,在上电或者复位时让程序自动运行,这个过程需要启动引导程序(Boot Load…...

LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】题目描述:解题思路一:其实像一道数学题目。假设三个杯子x<y<z先分两种情况。第一种:xy<z,答案直接是最大的z。第二种:xy>z。先将x与y互相…...