说明:联合标定需要提前标定好相机的内外参,这个推荐也用autoware,个人觉得没什么难度,就不写文章了,也没什么时间!联合标定的话,好久没搞了,写一篇博客以防老年痴呆忘记了!!
(重要说明,autoware默认坐标系是x轴向前,谨记坐标系对应)
一:环境说明
1.ubuntu 1804
2.ros-melodic版本
3.image_view2
二:下载安装包,并编译
默认大家都下载并安装好了autoware!!!(其实是我懒得把这个文件上传百度云了~0~)
三:联合标定方法
1.试运行
注意:这里的yaml文件是camera的标定文件,后面image_src对应填写的是你的摄像头话题;
cd autoware.ai
source install/setup.bash
roslaunch autoware_camera_lidar_calibrator camera_lidar_calibration.launch intrinsics_file:=/PATH/TO/YYYYmmdd_HHMM_autoware_camera_calibration.yaml image_src:=/image
注意观察,如果报错,看第一条错,我的是缺少image_view2这个安装包,所以运行
sudo apt install ros-melodic-image-view2
安装好后,重新开始,如果试运行没有报错,证明环境没有问题,看下一步;
2.查看自己准备的包里,需要包含两个话题,一个是雷达点云话题,一个camera的话题。
cd autoware.ai
source install/setup.bash
roslaunch autoware_camera_lidar_calibrator camera_lidar_calibration.launch intrinsics_file:=/PATH/TO/YYYYmmdd_HHMM_autoware_camera_calibration.yaml image_src:=/your_image_topic
同时,令起终端
rosbag play your.bag
打开后,页面自动弹出camera的画面如下图所示:
令起终端打开rviz,将点云调出来,使其可视化,界面上有用的信息如下图所示:
注意我画圈的地方,左下角那个是 lidar_point:camera_point,其中camera_point是在图像上点的,你要对比图像和点云数据,都能看到且很有辨识度的点就可以点。
注意:先点图像点,再去雷达数据上点point,图像上是用鼠标左键点一下后,在点的那个位置会留下一个红点,证明是你选择的camera_point,然后,在rviz里,左上角那个圈里画的publish_point就是用来点lidar_point的工具,点击publish_point后,按钮变灰色,移动鼠标,对比刚才图像上选点的位置点雷达点(建议将rviz中雷达数据放大来点,尽量精确),点到了,按钮恢复,同时number of points:0:1变为number of points:1:1;
以此,点够9对点后,系统自动保存标定文件在/home/文件夹之下命名方式为YYYYmmdd_HHMM_autoware_lidar_camera_calibration.yaml,同时在终端 也会打印出标定信息矩阵之类的!
四:查看标定效果
1.将points2image.cpp中将else语句中points_topic = “points_raw” 修改为我们自己雷达数据的topic.
附上我的文件目录
autoware.ai/src/visualization/points2image/nodes/points2image/points2image.cpp
2.单独编译这个points2image.cpp文件
cd autoware.ai
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select points2image
source install/setup.bash
rosrun runtime_manager runtime_manager_dialog.py
3.在上一步打开的 Runtime Manager -> Sensing -> Calibration Publisher, 跳出来的界面中修改 target_frame为自己点云数据的frame_id,同时加载联合标定文件,并将image topic source更改为自己的图像topic名称,然后点击OK,之后在点击Calibration Publishe下面的Points image按钮
4.在RViz中,Panels -> Add New Panel中添加ImageViewerPlugin, 此时ImageViewerPlugin会出现在RViz的左下方,填写Image Topic:/camera_topic, Point Topic:/points_image
然后播放数据包,会看到将点云数据映射到图像上之后的融合图,通过融合图可以直观看出标定效果。
效果我就不放了。公司的同事标的不好,就让我帮忙看了一下,我给的建议是,
1.图像与雷达数据首先要都能在同一个视角中看到;
2.多角度,多尺度来选点,不能只在一个方向上选点;
3.激光点云数据会跳动,所以标定的时候一定要将rviz中激光数据放大,从各个方向确定那个点是不是图像中对应的点;
4.如果可以,建议在地面处也造一个角点进行选点。