登龙git
这是个人第 128 篇原创github
1、安装 Autoware & ZED 内参标定 & 外参标定准备
以前的这篇文章:Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!记录了我用 Autoware 标定相机和雷达的过程,虽然用的不是 Calibration Tool Kit 工具,可是博客里面的如下章节也适用本次的 Calibration Tool Kit :web
-
1、编译安装 Autoware-1.10.0 -
2、标定 ZED 相机内参 -
3.1 联合标定准备
若是你是第一次看这篇 Calibration Tool Kit 联合标定的博客,建议先按照以前的博客安装 Autoware、标定 ZED 内参和作好外参标定的准备(标定板,录制标定包等),最好用上篇博客的方法标定一次。算法
这篇博客我就直接开始介绍使用 Calibration Tool Kit 标定雷达和相机外参的过程!编程
2、Calibration Tool Kit 联合标定雷达和 ZED 相机
2.1 启动 Autoware
先启动 Autoware-1.10.0,启动过程当中可能须要输入 root 密码:bash
# 1. 进入 autoware 的 ros 目录下
cd autoware-1.10.0/ros
# 2. source 环境,zsh 或 bash
source devel/setup.zsh[.bash]
# 3. 启动主界面
./run
切换到 Sensing 选项卡:微信

2.2 回放雷达相机 Bag
这里回放时须要更改雷达的话题为 /points_raw
,由于这个工具订阅的雷达主题是固定的:编辑器
rosbag play --pause xxx.bag /rslidar_points:=/points_raw
我用的 Robosense 雷达,发布的话题是 rslidar_points
,这个回放默认暂停,防止跑掉数据,按空格继续或暂停。ide
2.3 启动 Calibration Tool Kit
点击 Calibration Tool Kit 启动标定工具:工具

选择图像输入话题,我只用的 ZED 的左图像话题,若是没有相机话题,确保前面你已经回放了 bag,选择好了点击 OK 肯定:

选择标定类型为相机到 velodyne 雷达的标定(对 Robosense 雷达也适用,只不过须要更改点云的发布话题),点击 OK 肯定:

进入标定主界面 MainWindow:

配置标定板棋盘格参数:
-
Pattern Size (m):标定板中每一个格子的边长,单位 m,个人标定板每一个格子长 0.025 m -
Pattern Number:标定板长 X 宽的单元格数量 - 1,个人标定板是长有 12 个格子,宽有 9 个,因此填 11x8,减一是由于标定检测的是内部角点
设置好了后,重启 Calibration Tool Kit,点击左上角 Load 导入第一步标定的相机内参 YAML 文件,可是这个工具只能导入 YML 格式的文件:

所以须要把前面的内参标定文件拷贝一份,修改格式为 yml 便可,YAML 和 YML 实际上是同样的:

修改好了以后,再点击 Load 加载 yml 格式的内参文件便可:

选择不加载相机和雷达的标定数据,由于我是直接回放 Bag 标定:


到这里都设置好了,下面开始外参标定过程!
2.4 标定过程
打开回放 bag 终端,按空格继续回放数据,主界面会显示相机图像:

可是右边的点云窗口没有显示数据,须要咱们调整视角才能够,视角的调整方法以下(文末有个 pdf 专门介绍):

简单解释下,建议直接操做,很容易:
-
移动点云:上下左右方向键、PgUp、PgDn -
旋转点云:a、d、w、s、q、e -
切换模式:数字 1 和数字 2 -
视角缩放:减号缩小、加号放大 -
点云大小:o 键使用小点云、p 使用大点云 -
改变点云窗口背景颜色:b
我使用的使用直接按数字 2 切换模式就能看到点云了,其实这些模式我也不是很懂。。。:

若是须要更换背景,按 b 键改变为大体灰色便可:

我这里就不改背景了,黑色也挺好看出点云的,而后使用上面的视角操做方法,把点云中的标定板放大到中心位置:

以后点击右上角的 Grab 捕获当前帧的图像和点云,使用 -
和 +
缩放视角:

若是你点击 grab 没反应很正常,多是棋盘格离得太远或者模糊了,你多试几个位置应该就能捕获到,我回放一个 Bag 也就捕获了 9 张左右。
而后把鼠标放到右下角捕获的点云窗口,选择一个棋盘格的中心位置区域,关于这个区域的选择,我是参考这个标定工具的文档例子(文末有连接)选择的,大概就是标定板的中心位置选择一个圆形的区域,尽可能保证向外侧的平面法向量垂直于标定板平面:

鼠标左键点击选择,右键点击取消,个人选择以下,能够参考:

而后重复以上步骤,不断回放暂停,Grab 捕获单帧图像和点云(多选一些),选择点云区域,直到回放结束,接着就能够点击右上角的「Calibrate」按钮计算外参矩阵(左上角显示),而后再点击「Project」查看标定效果:

切换左下方的单帧图片和点云窗口,捕获的每一帧图像和点云均可以看到对齐效果,另外左边也能看到标定的偏差,固然是越小越好,我目前的标定效果通常般,后续打算再标几回。
标定好以后,点击左上角「save」保存外参矩阵便可,文件名建议带上时间戳方便识别:

最后的外参数文件以下,这个文件包含了相机内参和相机到雷达的外参:

以上就是个人雷达相机联合标定过程!但愿能帮助正在标定雷达和相机的同窗 ^_^!
3、标定结果测试
能够直接用以前博客 Autoware 进行 Robosense-16 线雷达与 ZED 双目相机联合标定!中的「4、标定结果测试」一节介绍的步骤来测试融合效果:

前几天我把 ROS 的点云和图像的融合节点也调试好了,因此直接在程序里面加载了外参矩阵,而后作了个初步的融合,效果以下:

我也录了个融合视频,能够看看:B 站:Robosense-16 雷达与 ZED 相机数据融合
https://www.bilibili.com/video/BV1Sp4y1S74w
5、标定资源
如下是我标定过程当中收集的一些好的资料,这里也分享给你们:
-
标定工具的使用文档在这里:CalibrationToolkit_Manual.pdf
https://github.com/DLonng/AI-Notes/tree/master/SensorFusion/fusion_ws/src/calibration_publisher/docs
-
这里还有个视频,有条件的同窗能够看看:Yutobe:Autoware 标定相机和雷达
https://www.youtube.com/watch?v=pfBmfgHf6zg
另外 ROS 融合节点的程序我还在完善中,建议关注个人 Github 项目,后续会上传节点代码:AI-Notes: lidar_camera_fusion
https://github.com/DLonng/AI-Notes/tree/master/SensorFusion/fusion_ws/src/lidar_camera_fusion
若是标定遇到问题,能够公众号后台给我发消息,或者直接在博客平台留言,我看到会尽快回复的,不过公众号应该回复的快些,哈哈 :)
推荐阅读:
厦大研一同窗,与你分享编程,AI 算法等技术干货!精品文章创做不易,谢谢关注,欢迎在看。

点击阅读原文,查看更多精彩文章!
本文分享自微信公众号 - 登龙(DLonngv)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。