理解Apollo传感器标定文档

  • Post author:
  • Post category:其他




“ 每个人都是自己平凡世界里的英雄,坚定地走下去,遇见更好的自己。”


2019.03-


最近,好像~


算了,


还是干点正事吧·


看到了apollo官方给的一个传感器标定的技术文档,过来整理下



自动驾驶传感器标定(Calibration):是指利用传感器采集的数据计算各传感器的内参数(Intrinsic Parameters),以及多个传感器之间外参数(Extrinsic Parameters)的过程。

传感器内外参的标定是

各类多传感器信息融合算法

的第一步。

在自动驾驶领域中,多线激光雷达与组合惯导是高精地图制作、激光点云定位以及点云物体检测任务中常用的传感器配置。

因此精确标定两者之间的外参数具有非常重要的意义。



常用的标定工具有很多,选择合适的可用的即可,比如像autoware 、apollo的都可以,今天只说apollo给的~



Apollo传感器标定服务和三种标定工具:




  • ◆ Camera-to-Camera Calibration(相机到相机的标定)



  • ◆ Camera-to-LiDAR Calibration(相机到激光雷达的标定)



  • ◆ Radar-to-Camera Calibration(雷达到相机的标定)



  • ◆ IMU到汽车的标定​​


注:Apollo中,新的标定工具(Camera-to-Camera Calibration, Camera-to-LiDAR Calibration, and Radar-to-Camera Calibration)将以板载可执行程序的方式提供。关于LiDAR-GNSS 标定,请参考LiDAR-IMU calibration guide。Velodyne HDL-64 的用户仍可使用Apollo中的标定服务。使用这些标定工具可以极大的减少用户的工作量。我们只需要启动相应的标定程序,即可快速的完成标定任务。此外,用户还可对以


.yaml


文件格式保存的标定结果进行验证。

下载标定工具并提取文件到以下目录


$APOLLO_HOME/modules/calibration

其中,APOLLO_HOME是Apollo仓库的根目录所在位置。

首先需要自己标定相机内参(得到一个.yaml文件),包括焦距、主点、失真系数以及其他信息。工具很多:ROS、Opencv、Matlab等。注:要对每一个相机进行单独内参标定而不是对所有的相机采用统一的内参。

这些标定工具需要用户提供一个初始外参作为参考。

例:下面是Camera-to-LiDAR标定使用到的外部参数文件的一个样例。

文件中

translation

表示相机到激光雷达的平移矩阵,

rotation

是采用四元组方法表示的旋转矩阵。



注意:Camera-to-LiDAR 标定成功与否和初始外参息息相关。

较大偏离的外参值很可能导致标定失败。因此,在条件允许下,提供最精确的初始外参就显得十分重要。因为Camera-to-LiDAR标定方法通常在自然环境中使用,一个好的地方能够极大的提高标定结果的精度。建议选择一个包含诸如树、电线杆、路灯、交通标志、静止参照物以及清晰交通标志线等物体的

标定场地

首先必须确认程序所需的所有传感器主题均有输出信息。

表1、表2和表3分别列出了不同标定板载程序所需的传感器主题。



—————-




接下来分别介绍这三种标定使用工具:


首先通过在命令行窗口运行如下命令来检查定位状态:

rostopic echo /apollo/sensor/gnss/ins_stat



▉ Camera-to-Camera 标定工具:


1.执行以下命令以运行Camera-to-Camera 标定工具:


cd /apollo/scripts

bash sensor_calibration.sh camera_camera

2.根据以下指南收集数据:

  • 由于两个相机具有不同的时间戳,不可能做到完全同步,因此在记录数据时保持汽车缓慢行驶就显得尤为重要。极其缓慢的车速可以有效减轻不同时间戳引起的图像不匹配问题所带来的影响。

  • 请确保两个相机所拍摄的图像之间有很大的重合区域,否则标定工具将无法执行外参标定操作。

3.配置文件所在的位置如下:


/apollo/modules/calibration/camera_camera_calibrator/camera_camera_calibrtor.conf

表 4. Camera-to-Camera 标定配置文件说明

4.Camera-to-Camera 标定工具的输出类型如下:

  • ●标定之后的外部文件将以.yaml文件形式保存。

  • ●验证的图像:

    • ○一张长焦相机图像

    • ○一张广角相机图像

    • ○由一张非失真广角图片和一种非失真长焦图片合成的图片






Camera-to-LiDAR 标定


1.执行以下命令以运行Camera-to-LiDAR 标定工具:


cd /apollo/scripts

bash sensor_calibration.sh lidar_camera

2.参照以下准则收集数据:

  • 由于两个相机具有不同的时间戳,不可能做到完全同步,因此在记录数据时保持汽车缓慢行驶就显得尤为重要。极其缓慢的车速可以有效降低不同时间戳引起的图像不匹配问题所带来的影响。

  • 请确保相机图像中有一定数量 (超过 500个) 的投影点,否则标定工具将无法执行外参标定操作。正是基于这一原因,该标定工具只适用于广角相机。

3.配置文件放置在以下位置:


/apollo/modules/calibration/lidar_camera_calibrator/camera_camera_calibrtor.conf

表 5. Camera-to-LiDAR 标定配置文件说明

4.Camera-to-LiDAR 标定工具的输出类型如下:

  • ●标定结果将以

    .yaml

    格式文件保存

  • ●两张从LiDAR点云投影到相机的验证图像:

    • ○一张是根据深度信息着色的图像

    • ○一张是根据密度信息着色的图像



▉ Radar-to-Camera 标定


1.执行以下命令以运行Radar-to-Camera 标定工具:


cd /apollo/scripts

bash sensor_calibration.sh radar_camera

2.根据以下准则收集数据:

请将车辆进行低速直线行驶,标定程序仅会在该条件下开始采集数据。

3.配置文件所在的位置如下:


/apollo/modules/calibration/radar_camera_calibrator/conf/radar_camera_calibrtor.conf

表6. Radar-to-Camera 标定配置文件说明

4.Radar-to-Camera 标定工具的输出内容如下:

  • ●标定结果将以

    .yaml

    格式的文件保存。

  • ●一个包含Radar-to-LiDAR 投影结果的验证图像。

    您需要运行radar_lidar_visualizer工具来产生该图像。



▉ IMU-to-Vehicle 标定


1.下载标定工具。

2.在标定之前启动汽车并保持行驶,汽车需要以 3m/s的速度行驶执行至少10s。用户无需提供内参和初始化外参。

3.需要的主题:


INS/apollo/sensors/gnss/odemetry

100Hz

4.使用如下命令执行IMU-to-Vehicle标定工具

cd /apollo
bash scripts/sensor_calibration.sh imu_vehicle

5.结果将保存在当前目录下的


vehicle_imu_extrinsics.yaml

文件中。标定结果的示例如下所示:


(可选项)运行所有的标定工具

如有必要,用户可以通过以下命令运行所有的标定工具:

cd /apollo
bash scripts/sensor_calibration.sh imu_vehicle

所有的标定结果都将以

yaml

文件的形式保存在配置文件中指明的

output

路径所在位置。

另外,根据传感器的不同,标定结果将被保存在

yaml

目录的不同文件夹下,具体如表7所示:

表 7.  各个传感器对应的标定结果存放位置

标定结束之后,对应的标定结果验证图像将保存在

[output]/validation

目录下。本节将介绍相关背景信息以及针对各种标定工具进行评估验证图像的方法。



▉ Camera-to-Camera 标定


背景信息: 在合成图像中,绿色通道是由广角相机图像产生的,而红色和黄色通道数据则是由长焦相机图像生成的。用户可以通过比较合成图像的对齐结果来验证标定的外参的精度。

验证方法:在合成图像的融合区域,判断距离汽车50米开外的对齐情况。如果图像完全重合,则表示外参标定结果符合要求。如果出现粉色或者绿色的阴影(位移),则说明外部参数错误。

当错误超过一定的范围(例如,20个像素,根据实际使用情况决定),需要重新标定外部参数。通常情况下,由于视差的原因,在靠近物体的水平方向上可能会发生错位的现象,而在垂直方向上则不受影响。这种情况是正常的。

例子: 如下面所示 图2 表示满足外部参数精度要求的情况,而图3 则不符合要求。

图 2.  针对Camera-to-Camera 标定的较好的结果

图 3.Camera-to-Camera 标定的错误结果



▉ Camera-to-LiDAR 标定


背景信息: 在点云投影图像中,用户可以看到具有明显边缘的目标物体和标志,并对对齐情况进行比较。

验证方法:如果目标在50米以内 , 其点云边缘与图像边缘重合 , 则说明标定结果的精度比较高。反之,如果出现错位的情况,则说明标定结果错误。当标定结果错误值超过特定范围时 , 将无法获得外部参数(例如,5个像素,具体取决于实际使用情况)。

例子: 如下所示, 图 4 表示标定结果满足外部参数的精度要求的情况,而图5 则表示不满足的情况。

图 4. 较好的Camera-to-LiDAR 标定结果

图 5. 较差的Camera-to-LiDAR 标定结果



▉ Radar-to-Camera 标定


你可以绘制一张在LiDAR坐标系下融合雷达数据和LiDAR数据的全景图。根据全景融合图中雷达数据和LiDAR数据的对齐情况来判断外参的精度。

在融合图中,所有白色的小点代表LiDAR点云,而大的绿色实心圆表示雷达目标。

  • 背景信息: 使用系统中的激光雷达(LiDAR)作为中介物进行外部参数验证,这种方法可以获得以下结果:

    • 通过雷达相对于相机的外参获得雷达相对于LiDAR的外参

    • 相机相对于LiDAR的外参

  • 验证方法:全景融合图中雷达数据和LiDAR数据的对齐情况代表了外参的精确度。

    如果大部分的目标重合,表示外参精度满足要求。

    反之,如果超过40%的目标(尤其是车辆)没有对齐,表示外参无法满足要求,需要重新标定。

  • 例子:如下所示,图6表示标定结果满足外参的精度要求,而图7则表示不满足的情况。

图 6. 好的相机到雷达标定结果

图 7. 糟糕的 Camera-to-Radar 标定结果



▉ 雷达 LiDAR 可视化投影工具


为了获得雷达数据和LiDAR点云的融合图像,

标定程序可以自动(如果使用bash sensor_calibration.sh all命令)或手动 (如果使用bash sensor_calibration.sh visualizer命令)

调用另一个投影程序,即radar_lidar_visualizer。

该投影程序将加载Radar-to-Camera 和 Camera-to-LiDAR标定的外参。

十分重要: 在启动投影程序之前,请确保将要加载的两组外部参数均已经标定好并且相应的文件已放在配置文件中radar_camera_extrinsics_filename 和


camera_lidar_extrinsics_filename

参数所指的位置。

1.使用以下命令运行

radar_lidar_visualizer

程序:


cd /apollo/scripts

bash sensor_calibration.sh visualizer

2. radar_lidar_visualizer 的配置文件存放在以下位置:


/apollo/modules/calibration/radar_lidar_visualizer/conf/radar_lidar_visualizer.conf

表8 列出了投影程序配置文件包含的配置项及其简要说明:

验证图像保存在如下位置:[output]/validation


ok …匆匆忙忙的结束了~



版权声明:本文为m0_38087936原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。