前面的内容:
一. 器件选型心得(系统设计)--1_goldqiu的博客-CSDN博客
一. 器件选型心得(系统设计)--2_goldqiu的博客-CSDN博客
二. 多传感器时间同步方案(时序闭环)--1
三. 多传感器标定方案(空间同步)--1_goldqiu的博客-CSDN博客
三. 多传感器标定方案(空间同步)--2
多传感器空间同步除了内参标定,还有外参标定。
外参标定
外参即各传感器到车体坐标系的转换关系,包含:
• IMU(GNSS) – Car
• LiDAR – Camera
• Camera – Camera
• LiDAR – LiDAR
• LiDAR – IMU(GNSS)
• LiDAR – Radar
• 超声波雷达– Car
解法1:
• 直接标各传感器与车体坐标系
解法2:
• 标部分传感器与车体坐标系
• 另外一部分通过传感器之间实现标定
我们一般采用解法2。
注意:车体坐标系与世界坐标系的转换关系由定位模块确定。
外参1:IMU(GNSS)和车体坐标系
假设我们能:
• 获取自车运动的位姿序列
• 通过GNSS+IMU设备观测自车运动(组合导航设备是能够获取车辆的位姿信息)
对于自车坐标系和GNSS+IMU坐标系,每个时刻有:
于是目标函数:
存在一些问题:
• GNSS+IMU设备观测的位姿序列可以达到cm级别
• 6自由度的自车运动很难精确获得
解决方案:
•优先关注3个自由度:(x, y, yaw)
•z通过测量得到 (pitch和roll近似为0)
设计测试路段:
• 严格直道(可通过激光笔测试),距离为d
• 车辆尽量严格按直线行驶
最后得到:
外参2:Camera与Camera之间的标定
首先包含一个PnP问题,要求:Camera与Camera之间有视野重叠。
然后如果能通过图像还原一个点的3D位置,使下式成立:
个人理解:假如是两个相机标定外参,需要先处理两个PnP问题,通过两个相机的两组图像还原其对应棋盘格角点的3D位置,即得到了两组3D点。然后再用这两组3D点构建优化问题,求解上式,得到两个相机之间的T。可以简单理解为,先PnP,再ICP。
总结:
先是PnP问题:2d还原3d的过程。
求解的目标函数就是:3D点投影到像素平面的UV值和本身像素平面UV值的误差,使之最小;进而求解出变换矩阵T。
这样我们就可以得到两个相机对应的两组3D点了。
然后:
类似于ICP,两组3D点求解之间的变换矩阵。目标函数是第一组3D点与变换过来的第二组3D点之间的误差,使之最小,求得变换矩阵T。
参考的开源工具:
https://github.com/ethz-asl/kalibr
https://github.com/zju3dv/EasyMocap
https://github.com/calibtoolkit/calibration_kit
外参3:LiDAR和Camera
同上,通过PnP可还原图像的3D位置,则:
要求:LiDAR与Camera之间有视野重叠
求解过程:
可参考开源工具包:
用过的:
https://github.com/XidianLemon/calibration_camera_lidar
https://github.com/JunzWu/Autoware_Calibration_Camera_Lidar
没用过的:
https://github.com/Livox-SDK/livox_camera_lidar_calibration
https://github.com/ankitdhall/lidar_camera_calibration
https://github.com/heethesh/lidar_camera_calibration
https://github.com/calibtoolkit/calibration_kit
参考博客:
goldqiu:二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)
另外补充:以上只能算作雷达和相机的粗标定,如果需要更加好的融合效果,则需要精标定。
需要根据雷达的线束特点和空间特性来设计标定平台,标定好pitch、roll和yaw三个角度,这样精度可以更高。可以写一套算法自动标定,也可以做一个半自动标定软件进行手动标定。
具体见:
激光雷达三维建模项目总结_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1bm4y1Y7be/
外参4:LiDAR和LiDAR
如果能找到两帧点云中的若干点对,则可建立如下关系:
这是ICP问题:
事实上,在实际标定时,我们往往会选择一个结构化的墙角,这样就有比较明显的特征。
但是,如果事先我们完全不知道两个雷达的变换关系,或者说两个雷达没有共视区域(比如都是固态雷达),那么在这种初值不知道或者相差很多的情况下直接用ICP是求解不出来的。
我们有两种方式:
-
直接给出一个初值:一般雷达的坐标系都是已知的,我们可以通过安装关系大概能推出雷达与雷达之间粗略的变换关系。根据这个初值再进行ICP。
-
假设雷达安装只差了一个角度,那么可以通过多分辨率处理或者遍历搜索角度的方式来搜索出初值角度,作为初值再进行ICP求解。(这个类似于后面会讲的多机协同定位利用雷达进行初始化位姿求解的过程)
假设多雷达安装相互之间三个角度都是错乱的,那么得考虑其他的方法了。
可参考开源工具包:
多激光雷达标定multi_LiDAR_calibration_多雷达标定_雨霖 X的博客-CSDN博客
https://github.com/calibtoolkit/calibration_kit
个人多机协同定位初始化展示(和多雷达外参标定是一个问题):
初始化前:
初始化后,并协同定位实时运行:
参考:深蓝学院《多传感器融合感知》