Apollo 2.0 传感器标定方法使用指南【相机到64线激光雷达的标定】
2018-02-26 16:06
666 查看
一、准备工作
1.下载标定工具,并解压缩到`$APOLLO_HOME/modules/calibration“目录下。(APOLLO_HOME是apollo代码的根目录)2.相机内参文件
内参包含相机的焦距、主点和畸变系数等信息,可以通过一些成熟的相机标定工具来获得,例如 ROS Camera Calibration Tools 和 Camera Calibration Toolbox for Matlab。内参标定完成后,需将结果转换为 .yaml 格式的文件。下面是一个正确的内参文件样例:
header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: short_camera height: 1080 width: 1920 distortion_model: plumb_bob D: [-0.535253, 0.259291, 0.004276, -0.000503, 0.0] K: [1959.678185, 0.0, 1003.592207, 0.0, 1953.786100, 507.820634, 0.0, 0.0, 1.0] R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0] P: [1665.387817, 0.0, 1018.703332, 0.0, 0.0, 1867.912842, 506.628623, 0.0, 0.0, 0.0, 1.0, 0.0] binning_x: 0 binning_y: 0 roi: x_offset: 0 y_offset: 0 height: 0 width: 0 do_rectify: False
我们建议每一只相机都需要单独进行内参标定,而不是使用统一的内参结果。这样可以提高外参标定的准确性。
3.初始外参文件
本工具需要用户提供初始的外参值作为参考。一个良好的初始值可以帮助算法得到更精确的结果。下面是一个正确的相机到激光雷达的初始外参文件样例,其中translation为相机相对激光雷达的平移距离关系,rotation为旋转矩阵的四元数表达形式:
header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: velodyne64 child_frame_id: short_camera transform: rotation: y: 0.5 x: -0.5 w: 0.5 z: -0.5 translation: x: 0.0 y: 1.5 z: 2.0
注意:相机到激光雷达的标定方法比较依赖于初始外参值的选取,一个偏差较大的外参,有可能导致标定失败。所以,请在条件允许的情况下,尽可能提供更加精准的初始外参值。
4.标定场地
我们的标定方法是基于自然场景的,所以一个理想的标定场地可以显著地提高标定结果的准确度。我们建议选取一个纹理丰富的场地,如有树木,电线杆,路灯,交通标志牌,静止的物体和清晰车道线。图1是一个较好的标定环境示例:
5.所需Topics
确认程序所需传感器数据的topics均有输出。如何查看传感器有数据输出?
| 传感器 | Topic名称 | Topic发送频率(Hz) | | Short_Camera | /apollo/sensor/camera/traffic/image_short | 9 | | Velodyne HDL64 | /apollo/sensor/velodyne64/compensator/PointCloud2 | 10 | | INS | /apollo/sensor/gnss/odometry | 100 | | INS | /apollo/sensor/gnss/ins_stat | 2 |
二、标定流程
所有标定程序需要用到车辆的定位结果。请确认车辆定位状态为56,否则标定程序不会开始采集数据。输入以下命令可查询车辆定位状态:rostopic echo /apollo/sensor/gnss/ins_stat
1.运行方法
使用以下命令来启动标定工具:
cd /apollo/scripts bash sensor_calibration.sh lidar_camera
2.采集标定数据
为避免时间戳不同步,在录制数据的时候,尽量将车辆进行慢速行驶,可以有效地缓解因时间差异所引起的标定问题。
相机中需看到一定数量的投影点云,否则该工具将无法进行外参标定运算。因此,我们建议使用短焦距相机来进行相机-激光雷达的标定。
3.配置参数
配置文件保存在以下路径,详细说明请参照表。
/apollo/modules/calibration/lidar_camera_calibrator/conf/lidar_camera_calibrtor.conf
4.输出内容
外参文件:相机到64线激光雷达的外参文件。
验证参考图片:两张激光雷达点云利用标定结果外参投影到相机图像上的融合图像,分别是依据点云深度渲染的融合图像,和依据点云反射值渲染的融合图像。
三、标定结果获取
所有标定结果均保存在配置文件中所设定的 output 路径下,标定后的外参以 yaml 格式的文件提供。此外,根据传感器的不同,标定结果会保存在 output 目录下的不同文件夹中,具体如下表所示:四、标定结果验证
当标定完成后,会在 [output]/validation 目录下生成相应的标定结果验证图片。下面会详细介绍每一类验证图片的基本原理和查看方法。基本方法:在产生的点云投影图像内,可寻找其中具有明显边缘的物体和标志物,查看其边缘轮廓对齐情况。如果50米以内的目标,点云边缘和图像边缘能够重合,则可以证明标定结果的精度很高。反之,若出现错位现象,则说明标定结果存在误差。当误差大于一定范围时(范围依据实际使用情况而定),该外参不可用。
结果示例:如下图所示,图1为准确外参的点云投影效果,图2为有偏差外参的点云投影效果
相关文章推荐
- 双目相机与IMU camera IMU 联合标定工具箱使用方法——Kalibr
- NUnit2.0详细使用方法 (转)
- 测试驱动开发方法介绍及CPPUnit使用指南
- ASP.NET 2.0中的数据库链接字符串的使用方法
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- 测试驱动开发方法介绍及CPPUnit使用指南
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- Turbo C 2.0 使用指南
- 将 JavaScript 与 ASP.NET 2.0 结合使用的简便方法
- C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- NUnit2.0详细使用方法
- NUnit2.0详细使用方法
- [转]NUnit2.0详细使用方法
- NUnit2.0详细使用方法
- NUnit2.0详细使用方法
- NUnit2.0详细使用方法
- DjVu Solo使用方法指南【转贴】
- NUnit2.0详细使用方法
- getURL函数的使用方法指南
- NUnit2.0详细使用方法