激光雷达和相机的联合标定(Camera-LiDAR Calibration)之Autoware
前言
单一传感器不可避免的存在局限性,为了提高系统的稳健性,多采取多传感器融合的方案,融合又包含不同传感器的时间同步和空间同步。
这里要讲的激光雷达和相机的联合标定就属于空间同步范畴。
另外,现在用深度学习处理点云成为热点,在标注点云时,由于点云的稀疏性,单靠点云,很难判断目标和类别,如果有时间同步的图像,就可以判断出来,但是为了精确标注,还需要将点云投影到图像,观察是否重合,这里就需要做激光雷达和相机的联合标定。
标定工具有很多,我计划写四篇博客,分别为:Autoware,apollo,lidar_camera_calibration,but_velodyne,本篇为Autoware,需要首先安装,才能使用其标定工具。
图像和点云融合,得到着色的点云:
激光雷达和相机的联合标定的结果是得到激光雷达相对于相机的旋转和平移,示意图:
图片来自:Velas, Spanel, Materna, Herout: Calibration of RGB Camera with Velodyne LiDAR
标定步骤
Camera-LiDAR标定分两步执行:
1.获取相机内参
2.获得相机-LiDAR外参
相机内参标定
内参是使用autoware_camera_calibration
脚本获得的,该脚本是官方ROS标定工具的一个分支(即ROS Camera Calibration Tools)。
这部分的理论知识和标定工具的使用方法可参考我之前写过的一篇博客,传送门。
启动
1.在一个已经source过的终端:
rosrun autoware_camera_lidar_calibrator cameracalibrator.py --square SQUARE_SIZE --size MxN image:=/image_topic
2.打开相机播放视频流,或者录制的rosbag,保证相机发布的topic与以上命令中的/image_topic一致。
3.在相机视野内移动棋盘,直到条形变为绿色。
4.按CALIBRATE按钮。
5.标定的输出和结果将显示在终端中。
6.按SAVE按钮。
7.文件将保存在home目录中,名称为YYYYmmdd_HHMM_autoware_camera_calibration.yaml。
此文件将包含用来纠正图像的内参。
参数
参数 | 类型 | 描述 |
---|---|---|
SQUARE_SIZE | double | Defines the size of the checkerboard square in meters. |
MxN | string | Defines the layout size of the checkerboard (inner size). |
image | string | Topic name of the camera image source topic in raw format (color or b&w). |
min_samples | integer | Defines the minimum number of samples required to allow calibration. |
有关其他详细信息,请访问:http://www.ros.org/wiki/camera_calibration
Camera-LiDAR外参标定
通过单击图像和点云中的对应点来执行Camera-LiDAR外参标定。
此节点分别使用rviz和image_view2包中的clicked_point和screenpoint。
启动
1.
2.在一个已经source过的终端:
roslaunch autoware_camera_lidar_calibrator camera_lidar_calibration.launch intrinsics_file:=/PATH/TO/YYYYmmdd_HHMM_autoware_camera_calibration.yaml image_src:=/image
3.将显示图像查看器。
4.打开Rviz并显示点云和正确的纠正过的图像帧。
5.同时观察图像和点云。
6.在图像中找到一个可以匹配点云中对应点的点。
7.单击图像中点的像素。
8.使用Publish Point工具单击Rviz中的相应3D点。
9.用至少9个不同点重复此操作。
10.完成后,文件将保存在home目录中,名称为YYYYmmdd_HHMM_autoware_lidar_camera_calibration.yaml。
此文件可与Autoware的Calibration Publisher一起使用,以发布和对齐LiDAR与相机之间的转换。该文件包含内参和外参。
参数
Parameter | Type | Description |
---|---|---|
image_src | string | Topic name of the camera image source topic. Default: /image_raw. |
camera_id | string | If working with more than one camera, set this to the correct camera namespace, i.e. /camera0. |
intrinsics_file | string | Topic name of the camera image source topic in raw format (color or b&w). |
compressed_stream | bool | If set to true, a node to convert the image from a compressed stream to an uncompressed one will be launched. |
示例
要测试标定结果,可以在Calibration Publisher中使用生成的yaml文件,然后在Sensing选项卡中使用Points Image。
注意
此标定工具假定Velodyne安装时具有Velodyne传感器的默认坐标轴顺序。
- X轴指向前方
- Y轴指向左侧
- Z轴指向上方