多传感器融合感知:传感器外参标定及在线标定算法详解
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心【全栈算法】技术交流群
后台回复【相机标定】获取超详细的单目双目相机模型介绍、内外参标定算法原理视频!
0. 简介
作为无人车以及智能机器人而言,在装配过程中各个传感器之间的外参标定一直是比较头疼的问题。这里作者也系统的学习了一下,传感器的外参标定和在线标定问题。
下图是我们常用的几个坐标系,而对于常用的外参问题经常是IMU/GNSS与车体坐标的外参、Lidar和Camera的外参、Lidar和Lidar的外参、Lidar和IMU/GNSS的外参。
1. 离线外参标定
1.1 IMU/GNSS与车体外参标定
这个IMU/GNSS与车体外参标定如下图所示,主要需要获取$T_{car}^{imu}$坐标系,这一类IMU/GNSS设备通过内部的紧耦合可以综合输出一系列校准后的位姿信息。
同时IMU的输出频率是很高的,所以通过插值的形式可以有效地提高整体综合的频率输出。
为了去标定外参,一般的方法是获取位姿运动的位姿序列,并通过GNSS/IMU来观测车辆自身的运动(有的时候我们可以通过绕圈的形式+手持点测绘来对车辆自身坐标和GNSS坐标进行匹配计算)。
通过获取很多个观测和gnss的转换可以得到cost fuction参与到里面去优化。
这里我们也给出了基于车体坐标系odom和IMU的位姿联合矫正的相关代码,考虑到IMU和轮速计的数据收集过程中本身在时间上就很难做到完全对齐,此时引入时间偏移(delta_t)用于表示两者采集时间片之间的误差,通过循环标定新产生的轮速计数据和原先的IMU 数据,选取误差最小的结果作为最终两者之间的标定,相应的(delta_t)即认为两者采集时间的偏差。
参考链接:
https://github.com/smallsunsun1/imu_veh_calib
其实作为车辆来说,在平面测量后,其实只需要观测$x,y,yaw$即可。所以可以将用直线来做约束和校准,得到下图的公式:
1.2 Camera 与 Camera 外参标定
作为相机与相机之间的标定,其本质和双目摄像头的标定步骤类似,通过拿到的图像信息来还原点在3D空间下的位置。如果获取两个相机与点的转换关系就可以得到$T_{cam_a}^{cam_b}$的坐标系变换。
然后根据棋盘格的坐标系转换就可以得到同一个点通过内参+外参后转到的$uv$坐标系下的情况,然后利用PNP非线性优化得到旋转平移矩阵$T_{camera}^{chessboard}$。然后通过多帧来综合约束$T_{cam_a}^{cam_b}$。
这里是经常使用的方法,Opencv也有自带的方法,代码如下:
参考链接:
https://github.com/sourishg/stereo-calibration
1.3 Lidar 与 Camera 外参标定
雷达和相机的校准作为自动驾驶中最为重要的部分,其主要分为雷达的三维点位姿估计和相机的像素点的三维点位姿估计。
这里我们可以看到其核心思想仍然是获取三维点的方式来完成对应。这里当然会因为Lidar存在扫描导致的误差造成的角点提取不准的原因,例如我们使用这类方法。
可以看到不同的激光得到了不一样的角点提取效果,因此我们可以通过角点拟合的方法去实现,比如说我们可以通过Ransec提取出空间中的标定板的位置区域,并获得初步的位移量,然后在标定板中存在几个凸起,并通过分割和聚类的方法提取出凸起的中心点,并将点与最近的点进行映射,得到$T_{lidar}^{chessboard}$。
然后摄像头可以通过标定板来预估出$T_{camera}^{chessboard}$,然后这两个通过$chessboard$的Lidar和Camera求得旋转的TF坐标系。
参考链接:
1.2D标定板:
https://github.com/TurtleZhong/camera_lidar_calibration_v2
2.3D标定板:
https://github.com/heethesh/lidar_camera_calibration
3.镂空标定板:
https://github.com/beltransen/velo2cam_calibration
4.球体标定:
https://github.com/545907361/lidar_camera_offline_calibration
1.4 Lidar 与 Lidar 外参标定
Lidar与Lidar的标定其实就是两个点云校准配对的方式,一般使用PCL库即可。这个在之前的博客中已经详细说过了,这里也不再展开说了。
参考链接:
2D雷达:
https://hermit.blog.csdn.net/article/details/120726065
https://github.com/ram-lab/lidar_appearance_calibration
3D雷达:
https://github.com/AbangLZU/multi_lidar_calibration
https://github.com/yinwu33/multi_lidar_calibration
1.5 Lidar 与 IMU/GNSS 外参标定
Lidar和IMU/GNSS的外参标定和车体外参的外参标定类似,都可以通过相对位移来估算出位姿态变化,从而实现对齐。
当然近年来也有一些比较好的开源方案供我们参考和选择:
参考链接:
https://github.com/APRIL-ZJU/lidar_IMU_calib
https://github.com/chennuo0125-HIT/lidar_imu_calib
https://github.com/FENGChenxi0823/SensorCalibration。
1.6 Lidar 和 Radar 外参校准
与其他不一样的是,Radar只有极坐标信息,没有高度信息。所以很多时候Radar和Lidar的标注只需要标定$x,y,yaw$信息。
而Radar对三角锥标注更敏感,所以这也会导致我们的结果更准确一些。
当然也可以使用一些配准的方法来实现标定的功能。
参考链接:
https://github.com/keenan-burnett/radar_to_lidar_calib
https://github.com/gloryhry/radar_lidar_static_calibration
1.7 数据同步
数据同步作为所有传感器外参标定后需要做的步骤,作者也多次撰文写过这方面的工作(https://hermit.blog.csdn.net/article/details/120489694),这里发现一个开源解决方案(https://github.com/lovelyyoshino/sync_gps_lidar_imu_cam),一并贴上来。
2. 在线外参标定
在车辆运行期间,动态修正传感器之间的相对位姿参数。与离线标定不同,在线标定不能摆场景(如标定板),因此难度更大。其原因在于在车辆运行期间,传感器的安装位置因为振动或者外力碰撞会发生变化,以实现在当参数异常时发出报警。
2.1 手眼标定
手眼标定这一块的工作作者也在文章中讲过,通过形成$AX=XB$的形式来估算出当前的情况。这里是Lidar和RTK的手眼标定方案(https://github.com/liyangSKD/lidar_rtk_calibration)。
2.2 深度学习方法
这类方法应该是未来的趋势方法,通过深度学习的输出,来根据输入的情况估算出最优的投影情况,并作为输出。这一块作者没有深入的研究,等后续有时间再详细说说吧。
https://github.com/gogojjh/M-LOAM
https://github.com/KleinYuan/RGGNet
【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!
多传感器融合感知:传感器外参标定及在线标定算法详解相关推荐
- 多传感器融合感知 --传感器外参标定及在线标定学习
0. 简介 作为无人车以及智能机器人而言,在装配过程中各个传感器之间的外参标定一直是比较头疼的问题.这里作者也系统的学习了一下,传感器的外参标定和在线标定问题.下图是我们常用的几个坐标系,而对于常用的 ...
- 摄像头和激光雷达都被蒙蔽?UCI首次提出针对自动驾驶多传感器融合感知的攻击...
作者丨汪宁非 编辑丨机器之心 来自加州大学尔湾分校(UC Irvine)的研究者发现,L4 自动驾驶里用的最广泛的用来提高系统鲁棒性的多传感器融合感知(Multi-Sensor Fusion base ...
- 万字综述|自动驾驶多传感器融合感知
原文地址:万字综述 | 自动驾驶多传感器融合感知 翻译:种争青 校稿:董亚微 00 摘要 多模态融合是自动驾驶系统感知的一个基本任务,最近引起了许多研究者的兴趣.然而,由于原始数据的噪声.信息的未充分 ...
- 0元包邮 | 多传感器融合感知知识导图
"传感器融合技术"是自动驾驶的核心技术.传感器是汽车感知周围的环境的硬件基础,在实现自动驾驶的各个阶段都必不可少. 随着自动驾驶无人驾驶技术的应用落地,越来越多的伙伴们加入到研究学 ...
- 多传感器融合感知技术的前沿算法与应用,包括Pointpillars、spconv+、BEVDet、LSS等算法
多传感器融合感知技术的前沿算法与应用,包括Pointpillars.spconv+.BEVDet.LSS等 2022年4月27日晚,由觉非科技算法总监郝爽带来的自动驾驶领域多传感器融合感知的技术算法解 ...
- 2. IMU原理及姿态融合算法详解
文章目录 2. IMU原理及姿态融合算法详解 一.组合 二. 原理 a) 陀螺仪 b) 加速度计 c) 磁力计 三. 旋转的表达 a) 欧拉角 b) 旋转矩阵 c) 四元数 d) 李群 SO(3)\t ...
- Python-Matplotlib可视化(番外篇)——Matplotlib中的事件处理详解与实战
Python-Matplotlib可视化(番外篇)--Matplotlib中的事件处理详解与实战 前言 事件连接 事件属性 实战1:直方图中矩形的拖拽 实战2:鼠标进入和离开 相关链接与参考 前言 在 ...
- 张正友相机标定算法详解
张正友相机标定算法详解 1.齐次表示法与一些基本结论 1.1 点与直线的齐次表示 在射影几何中,通常用齐次方式来表达点与直线.比如p=(u,v)p=(u,v)p=(u,v)被表示成p^=(x1,x ...
- 【山外笔记-SVN命令】svnlook命令详解
[山外笔记-SVN命令]svnlook命令详解 本文打印版问文件下载地址 [山外笔记-SVN命令]svnlook命令详解-打印版.pdf 一.命令简介 svnlook是检验Subversion版本库不 ...
最新文章
- async/await的实质理解
- Netty 和 RPC 框架线程模型分析
- 三门科目分析信息系统项目管理师如何备考
- vue小米商城源代码_微信商城信息管理系统(java后台+小程序)
- 深入理解javascript原型和闭包(14)——从【自由变量】到【作用域链】
- python 获取内存使用率_Python获取CPU使用率、内存使用率、网络使用状态 | 学步园...
- flask开启调试的四种模式
- 11.Java 面试题整理(编程题)
- 单调栈求全1(或全0)子矩阵的个数 洛谷P5300与或和 P3400仓鼠窝
- 8-9 实现原理-1
- 使用RPM安装Mysql5.5找不到配置文件My.cnf
- 配置主机间信任的一个简单办法
- ListView 控件与 ImageList 控件
- 分享一下苹果手机绕激活锁的体验
- 仓库管理软件免费版选型应该注意的关键点
- 英语句子划分表示符号使用规则
- debian 修改桌面背景
- Python批量更改txt文本每行数据
- matlab里qmul,哈工大四系导航原理 大作业 INS部分
- 利用Jquery自动生成条形码