激光雷达与相机标定时的时间同步问题怎么进行解决?

目前在做激光点云与图像融合的一些工作,需要将激光点云与图像进行融合,此中需要将激光雷达与相机完成时间上的同步,请问各位大佬有什么好的解决办法?采用软件…
关注者
227
被浏览
148,836

10 个回答

用于自动驾驶的激光雷达必须支持与主机或其他传感器的时钟同步,同步精度通常要达到毫秒级。常见的同步技术有两种,一种是基于GPS的“PPS+NMEA”,另一种是基于以太网的IEEE 1588(或IEEE 802.1AS)时钟同步协议。

GPS能够从卫星获得高精度的时钟信号,因此通常作为整个系统的时钟源。常规的GPS单元都支持输出精确到毫秒的秒脉冲信号PPS和包含年月日时分秒信息的NMEA指令,通过PPS和NMEA的组合就能够实现对激光雷达或主机的毫秒级时钟同步。只要激光雷达支持基于RS232接口的PPS+NMEA时钟同步输入信号,就可以实现毫秒级的时钟同步。

PPS+NMEA的优点是协议简单,容易实现;缺点是必须基于RS232。多个设备之间实现同步比较困难。IEEE 1588(或IEEE 802.1AS)就成了最好的选择,1588是基于以太网的高精度时钟同步协议,能够实现以太网中多个从节点(各种传感器)与主节点(主机)之间的亚微秒级时钟同步,前提是所有节点之间都通过以太网互联,并且每个节点都支持1588协议。

如果激光雷达支持1588协议,就可以使用如下的架构实现时钟同步:

  1. 主机通过PPS+NMEA实现与GPS的时钟同步;
  2. 激光雷达等其他节点通过1588协议实现与主机的时钟同步;

激光雷达输出的数据中,除了每个点的(x,y,z)坐标之外,还有一个重要的字段就是时间戳。相对于相机,激光雷达是一个慢速扫描设备,每一帧点云中的不同点的时间戳是不一样的,以每秒10帧的激光雷达为例,每帧点云耗时100毫秒,每帧点云中的第一个点和最后一个点之间相差约100毫秒。扫描高速运动的物体时,原始点云是“变形”的,类似于用普通相机(非全局快门)在高铁上拍摄景物时都是歪的一样,必须利用点云中的时间戳对点云进行校正才能恢复被扫描物体的本来面貌。

激光雷达与主机或GPS实现高精度的时钟同步之后,就会基于这个时钟为每个激光点生成一个时间戳,有了这个时间戳,很多工作开展起来就方便多了,例如多传感器的融合等等。

相机的时钟同步要麻烦一些,常规相机(除非是定制的)都不支持与主机或其他传感器的时钟同步。解决方法是测量相机的平均延时d,然后以在主机上获取到图像帧时的主机时刻t减去这个延时(t-d)作为该帧图像的时间戳,用这个时间戳去找最匹配的点云。以帧率为25fps的相机为例,与任意帧率的激光雷达同步匹配的结果是,最大偏差≤20ms。

这种方法的缺点很明显:相机图像的延时是不稳定的,尤其是通过以太网传输、需要编码/解码的相机。因此比较理想的方法是选择支持IEEE 1588(或IEEE 802.1AS)时钟同步协议的相机,确保相机的时钟与主机完全同步。然后为每一帧图像都增加一个时间戳,并确保在主机上能够读取到这个时间戳,这样就可以避免编码/解码、以及传输延时引入的同步误差。

通过上述方法能够将雷达和相机的同步精度控制在小于等于20ms的水平,对于慢速场景基本够了。如果要求更高的同步精度,就必须在雷达和相机的帧率和帧同步上下功夫了。通常激光雷达内含机械部件,帧率和帧同步都是不可控的,只有在相机上想办法。

简单的办法是选择更高帧率的相机,相机帧率从25fps增加到50fps时,最大同步偏差从≤20ms提升到≤10ms。

更彻底的解决方法是选择可以触发拍摄的相机(必须是硬件线控),根据激光雷达的帧周期同步触发相机的拍摄,实现雷达和相机的完全帧同步,实现完全的毫秒级同步。

IMU在SLAM和自动驾驶领域的应用非常多,Camera-IMU、Lidar-Camera-IMU之间的校准决定了下游任务的精度和上限,今天为大家盘点下Lidar-IMU-Camera之间的标定方法与工具箱!

关注知乎@3D视觉之心,第一时间获取3D视觉干货~

1)港大 LI 工具

LI Init是一种鲁棒、实时的激光雷达惯性系统初始化方法。所提出的方法校准了激光雷达和IMU之间的时间偏移和外部参数,以及重力矢量和IMU偏差。方法不需要任何目标或额外的传感器、特定的结构化环境、先前的环境点图或外部和时间偏移的初始值。解决了以下关键问题:

  • 一种由FAST-LIO2改进而来的强大的激光雷达里程计(FAST-LO)。
  • 无需任何硬件设置,即可在激光雷达和IMU之间进行快速、稳健的时间偏移和外部参数校准。
  • 支持多种激光雷达类型:机械旋转激光雷达(Hesai、Velodyne、Ouster)和固态激光雷达(Livox Avia/Mid360)
  • 无缝合并到FAST-LIO2中,作为一个强大的初始化模块。

链接:github.com/hku-mars/LiD

2)ETH LI 工具

一种在三维激光雷达和六自由度姿态传感器之间寻找外部校准的简单方法,基于ROS框架!

链接:github.com/ethz-asl/lid

3)浙大LI 工具

LI Calib是一个用于校准6DoF刚性变换以及3D激光雷达和IMU之间的时间偏移的工具包。它基于连续时间批量优化。基于IMU的成本和激光雷达点到表面的距离被联合最小化,这使得校准问题在一般情况下受到很好的约束。

链接:github.com/APRIL-ZJU/li

4)lidar_imu_calib

在开发基于激光雷达的slam时,经常使用imu为匹配算法(icp,ndt)提供先验信息,因此需要对激光雷达和imu之间的变换进行校准。对于匹配算法来说,变换中的姿态比变换中的位置更重要,并且位置经常被设置为0。这个工具箱主要研究激光雷达与imu之间转换过程中姿态分量的标定。

链接:github.com/chennuo0125-

5)上海 AI lab OpenCalib

上海人工智能实验室出品,一个大而全的工具箱,支持lidar2imu、camera2imu,多传感器对车体的标定等任务。

链接:github.com/PJLab-ADG/Se

6)Kalibr camera-imu

相机imu校准工具估计相机系统相对于固有校准imu的空间和时间参数。图像和IMU数据在ROS package中提供。使用样条曲线对系统的姿态进行建模,在全批优化中估计校准参数。

链接:github.com/ethz-asl/kal

7)Crisp camera-imu

该工具箱提供了一个python库,用于对 rolling shutter camera-gyroscope系统进行联合校准。

给定陀螺仪和视频数据,该库可以找到以下参数:

  • 真实陀螺仪速率
  • 时间偏移
  • 相机和陀螺仪坐标系之间的旋转
  • 陀螺仪测量偏差

链接:github.com/hovren/crisp

8)Multical camera-imu

Multical是一个校准工具箱,用于同时校准多个IMU、相机和激光测距仪之间的空间和时间参数。如今,相机、激光雷达和惯性测量单元(IMU)被广泛用于移动机器人和自动驾驶汽车,它们通常配备两个或两个以上的相机和激光雷达,以尽可能大地增加视野。使用现有的方法和工具箱,这些传感器的校准变得更加繁琐,主要有两个原因:a)由于尺寸限制,一个校准目标通常无法覆盖所有传感器。如果某些传感器彼此不重叠,则很难同时校准所有传感器。

b) 有提供激光雷达相机、激光雷达IMU和相机IMU校准的方法,但很少有方法(如果有的话)可以联合校准多个IMU、相机和激光雷达,而不是成对校准。因此,一种可以同时校准多个相机、激光雷达和IMU的方法将有助于机器人界。

链接:github.com/zhixy/multic

9)KF based camera-imu

使用扩展卡尔曼滤波器的相机IMU校准,论文链接:A Kalman Filter-Based Algorithm for IMU-Camera Calibration: Observability Analysis and Performance Evaluation

链接:https://github.com/unmannedlab/