传感器(camera,lidar,IMU,radar)外参标定及在线标定(源码)-多传感器融合感知
-
Lidar和Camera的外参:
-
Lidar和Lidar的外参
-
Lidar和IMU/GNSS的外参
-
Lidar 和 Radar 外参校准
-
数据同步
附赠自动驾驶学习资料和量产经验:链接
传感器外参标定
1. 离线外参标定
1.1 IMU/GNSS与车体外参标定
参考链接:https://github.com/smallsunsun1/imu_veh_calib
-
这一类IMU/GNSS设备通过内部的紧耦合可以综合输出一系列校准后的位姿信息。同时IMU的输出频率是很高的,所以通过插值的形式可以有效地提高整体综合的频率输出。
-
为了去标定外参,一般的方法是获取位姿运动的位姿序列,并通过GNSS/IMU来观测车辆自身的运动(有的时候我们可以通过绕圈的形式+手持点测绘来对车辆自身坐标和GNSS坐标进行匹配计算)。
-
通过获取很多个观测和gnss的转换可以得到cost fuction参与到里面去优化。
其实作为车辆来说,在平面测量后,其实只需要观测 x , y , y a w x,y,yaw x,y,yaw即可。所以可以将用直线来做约束和校准,得到下图的公式:
1.2 Camera 与 Camera 外参标定
参考链接:https://github.com/sourishg/stereo-calibration
作为相机与相机之间的标定,其本质和双目摄像头的标定步骤类似,通过拿到的图像信息来还原点在3D空间下的位置。如果获取两个相机与点的转换关系就可以得到 T _ c a m _ a c a m _ b T\_{cam\_a}^{cam\_b} T_cam_acam_b的坐标系变换。
然后根据棋盘格的坐标系转换就可以得到同一个点通过内参+外参后转到的 u v uv uv坐标系下的情况,然后利用PNP非线性优化得到旋转平移矩阵 T _ c a m e r a c h e s s b o a r d T\_{camera}^{chessboard} T_camerachessboard。然后通过多帧来综合约束 T _ c a m _ a c a m _ b T\_{cam\_a}^{cam\_b} T_cam_acam_b。
1.3 Lidar 与 Camera 外参标定
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
雷达和相机的校准作为自动驾驶中最为重要的部分,其主要分为雷达的三维点位姿估计和相机的像素点的三维点位姿估计。
这里我们可以看到其核心思想仍然是获取三维点的方式来完成对应。这里当然会因为Lidar存在扫描导致的误差造成的角点提取不准的原因,例如我们使用这类方法。
可以看到不同的激光得到了不一样的角点提取效果,因此我们可以通过角点拟合的方法去实现,比如说我们可以通过Ransec提取出空间中的标定板的位置区域,并获得初步的位移量,然后在标定板中存在几个凸起,并通过分割和聚类的方法提取出凸起的中心点,并将点与最近的点进行映射,得到 T _ l i d a r c h e s s b o a r d T\_{lidar}^{chessboard} T_lidarchessboard。
然后摄像头可以通过标定板来预估出 T _ c a m e r a c h e s s b o a r d T\_{camera}^{chessboard} T_camerachessboard,然后这两个通过 c h e s s b o a r d chessboard chessboard的Lidar和Camera求得旋转的TF坐标系。
1.4 Lidar 与 Lidar 外参标定
参考链接: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
Lidar与Lidar的标定其实就是两个点云校准配对的方式,一般使用PCL库即可。
1.5 Lidar 与 IMU/GNSS 外参标定
参考链接:
https://github.com/APRIL-ZJU/lidar_IMU_calib
https://github.com/chennuo0125-HIT/lidar_imu_calib
https://github.com/FENGChenxi0823/SensorCalibration。
Lidar和IMU/GNSS的外参标定和车体外参的外参标定类似,都可以通过相对位移来估算出位姿态变化,从而实现对齐。
1.6 Lidar 和 Radar 外参校准
参考链接:https://github.com/keenan-burnett/radar_to_lidar_calib
https://github.com/gloryhry/radar_lidar_static_calibration
与其他不一样的是,Radar只有极坐标信息,没有高度信息。所以很多时候Radar和Lidar的标注只需要标定 x , y , y a w x,y,yaw x,y,yaw信息。而Radar对三角锥标注更敏感,所以这也会导致我们的结果更准确一些。
1.7 数据同步
数据同步作为所有传感器外参标定后需要做的步骤,作者也多次撰文写过这方面的工作https://hermit.blog.csdn.net/article/details/120489694
一个开源解决方案 https://github.com/lovelyyoshino/sync_gps_lidar_imu_cam
-
基于单纯的PPS和GPRMC实现整个自动驾驶系统的时间同步,具有理论可行性,但并不具有实际可操作性
-
基于网络的高精度时间同步协议PTP(Precision Time Protocol,1588 V2),同步精度可以达到亚微秒级
-
PTP是一种主从式的时间同步系统,采用硬件时间戳,因此可以大幅减少软件处理时间。
-
PTP可运行在L2层(MAC层)和L4层(UDP层),运行在L2层网络时,直接在MAC层进行报文解析,不用经过四层UDP协议栈,从而大幅减少协议栈驻留时间,进一步提高时间同步精度
-
全域架构时间同步方案
2. 在线外参标定
在车辆运行期间,动态修正传感器之间的相对位姿参数。与离线标定不同,在线标定不能摆场景(如标定板),因此难度更大。其原因在于在车辆运行期间,传感器的安装位置因为振动或者外力碰撞会发生变化,以实现在当参数异常时发出报警。
2.2 深度学习方法
这类方法应该是未来的趋势方法,通过深度学习的输出,来根据输入的情况估算出最优的投影情况,并作为输出。这一块作者没有深入的研究,等后续有时间再详细说说吧。