ubuntu18.04使用calibration_toolkit进行相机和三维激光雷达的联合标定

一、配置

硬件配置:

速腾聚创激光雷达32线、usb相机;

软件配置:

ubuntu18.04、calibration_toolkit、autoware1.12.0、opencv3.4.3

(软件的安装及配置遇到的问题可以参考我别的博客,可能会有你想要的答案,标定其实只需要calibration_toolkit)就可以,但是建议都安装了,因为他们可能会有相互依赖的库)。

二、相机的内参标定

相机内参的标定可以参考我另一篇博客:

(7条消息) ubuntu18.04安装autoware1.12.0之相机和激光雷达的标定_╰︶ ̄ 莫等闲۩۩۩的博客-CSDN博客

 相机内参标定可以用录制好的rosbag离线标定,也可以在线标定,建议在线标定,因为离线标定不太好把控录制多长时间可以完成相机内参标定。离线标定和在线标定方法只需要二选一即可。

注:所有有关路径和激光雷达、相机驱动路径、话题名称都需要根据自己实际的路径来做相应的更改。

1、离线标定

(1)录制rosbag

cd ~/catkin_ws/
source devel/setup.bash
roslaunch rslidar_sdk start.launch            //要看自己的激光雷达驱动路径
roslaunch usb_cam usb_cam-test.launch         //要看自己的相机驱动路径
cd /home/nnnn/lidar_cam_date_pro/bag         //bag保存路径,可以根据自己的路径存放
rosbag record -b 4096 -o calibration.bag /rslidar_points /usb_cam/image_raw

 录制rosbag时需要将标定板分别移动各个方向:

近距离:左右上下;远距离:左右上下;倾斜标定板:左右上下。建议每个状态停留5s以上。

上面的rosbag是包含了激光雷达和相机的数据,我们做相机内参的标定实际上只需要相机的数据即可,这里也录制激光雷达的数据是方便后面做激光雷达和相机的联合标定。

(2)开始标定

roscore 
cd autoware.ai             //在一个新的终端进入autoware安装路径
source install/setup.bash
rosrun autoware_camera_lidar_calibrator cameracalibrator.py --square 0.0245 --size 6x8 image:=/usb_cam/image_raw

(3)播放录制的rosbag

cd /home/nnnn/lidar_cam_date_pro/bag     //在新的终端进入rosbag存放的路径
rosbag play xx.bag                      //播放相应的rosbag,按下空格暂停,再按下将继续播放

当标定板在移动时x,y,size条会在变长,当x,y,size条被拉满时CALIBRATE会变亮,播放完rosbag如果还不亮说明移动标定板的位置还没到位,需要重新录制rosbag。

当CALIBRATE会变亮时,点击该按钮稍等片刻SAVE会变量,点击SAVE会得到一个内参yaml文件。

yaml文件一般会默认存放在home目录下。

2、在线标定

(1)启动相机

roscore
cd ~/catkin_ws/
source devel/setup.bash
roslaunch usb_cam usb_cam-test.launch

(2)开始标定

cd autoware.ai 
source install/setup.bash
rosrun autoware_camera_lidar_calibrator cameracalibrator.py --square 0.0245 --size 6x8 image:=/usb_cam/image_raw

移动标定板:近距离:左右上下;远距离:左右上下;倾斜标定板:左右上下。

当标定板在移动时x,y,size条会在变长,当x,y,size条被拉满时CALIBRATE会变亮。如果CALIBRATE没变亮就需要不断调整移动标定板直到CALIBRATE变亮,点击CALIBRATE,然后点击SAVE即可得到相机内参yaml文件。默认存放在home路径下。

三、相机和激光雷达联合标定

1、播放包含相机和激光雷达数据的rosbag 

roscore                                  //如果之前已经roscore则不需要
cd /home/nnnn/lidar_cam_date_pro/bag     //在新的终端进入rosbag存放的路径
rosbag play x.bag /rslidar_points:=/points_raw  //播放相应的rosbag,按下空格暂停,再按下将继续播放

首先calibration_toolkit已经把点云话题写死了,所以我们需要指定话题
即在播放rosbag的时候修改,上面/rslidar_points原来的话题,/points_raw为我们要改成的话题。

 为了防止数据流失,按下空格暂停播放

2、启动calibration_toolkit

roscore                //如果在前面已经执行过可以不用再执行
cd calibration         //在新的终端进入calibration_toolkit安装的路径
source devel/setup.bash
rosrun calibration_camera_lidar calibration_toolkit

执行以上命令会弹出以下窗口并选择我们相机的话题:

 

 点击OK后会继续弹出以下窗口并选择Camera->Velodyne:

 点击OK后会弹出工具的主页面:

此时我们需要根据自己的标定板大小修改Pattern Size(每个方格的大小)和Pattren Number (方格数量)。

然后我们还需要把前面得到的相机内参加载进来,因为该工具只支持加载.yml文件,所以我还需将相机外参yaml文件后缀改成.yml,这里我直接复制一个改成.yml后缀的相机内参文件。

然后在MainWindow中点击Load把.yml文件加载进来

 然后会弹出Load Camera Calibration Date选择Yes

 然后会弹出Load Velodyne Calibration Date选择No

 然后回到播放rosbag终端,按下空格播放,此时我们可以看到图像

 此时你会发现右边点云窗口是黑色的,看不到点云。这时我们点击右边窗口点云区域,然后按 ↓ 这个键就可以看到点云了。

 为了防止数据播放完,此时我们可以按下空格暂停播放。然后通过按键来调整点云窗口使之看的更清楚,具体按键功能如下:

 

1.右侧数字小键盘中“上”,“下”,“左”,“右”,“PgUp”以及“PgDn”这六个按键用于平移激光点云。

2.a、d、w、s、q、e用来旋转激光点云。

3.数字“1”,“2”用来设置是perspective projection透视投影还是orthogonal projection正交投影。

4.用“o”,“p”控制点云的大小,o变小,p变粗。

5.用“-”,“+”控制放大,缩小。

点击点云窗口再按下B键调整点云背景色使之看的更清楚

 

 

 然后找到标定板在点云中的位置,为了方便找到标定板的位置可以继续播放rosbag,看到动的点云说明该位置即为标定板的位置。找到标定板位置后可以按键盘上的+-来进行缩小放大点云(按键盘字母栏上面的+-号,右边数字栏的+好像没反应)。

然后点击一下右上角的“Grab”按钮,用来捕获当前时刻的图像与点云

 

 

(1)为了方便观看点云和图像,我们在两个窗口的分界处按住鼠标左键来拖动窗口大小。

(2)然后同样点击右下角点云窗口按下B来调整点云背景色

(3)然后找标定板点云所在位置按+或-进行该区域放大,还可以按P使点云变粗

(4) 然后在标定板中心处按下鼠标左键选出点云红色圆区(选错了可以按下鼠标右键取消选择),此时可以在左边看到选中的点云信息

(5)然后我们再播放一会rosbag使标定板位置发生变化。

过一会暂停播放rosbag,再点击Grab采集另一组数据。

 

(6)重复上面(1)(2)(3)(4)(5)过程6次,即采集6组点云数据,当然多采集几组也是可以的

 (7)当采集够6组数据后(当然建议多采几组,我看另一篇文章采了15组)就可以点击Calibration进行标定了

 (8)标定结束后,会在左侧的"CameraExtrinsicMat"窗口显示出外参矩阵

 (9)点击Project

 (10)点击Save保存标定参数

 (11)选择存放路径和名字

 选择后路径及name后点击Save会弹出以下窗口:都选择No 

 此时在存放的路径下可以标定后生成的文件

 

 

 至此相机和激光雷达联合标定完成。

四、测试标定效果

获得外参标定文件后我们可以使用autoware来测试一下标定的效果如果

1、打开autoware的Runtime Manager

cd autoware.ai  //打开一个新的终端进入autoware安装路径
source install/setup.bash
roslaunch runtime_manager runtime_manager.launch

 

点击Sensing

 

 点击右下区域的Calibration Publisher

选择前面标定得到的外参文件后点击OK

 

 点击右下区域的Points Image后点击OK

 启动Rviz

在Rviz中,Panels/Add New Panel内添加ImageViewerPlugin,填写Image Topic,本例为/camrea/rgb/image_raw,Point Topic,本例为/points_image

 

 

 然后再播放我们录制的rosbag(或者在线相机和激光雷达但是话题要对应)

此时可以看到标定后的效果(由于标定板采用的是打印A4纸以及环境的原因所以标的不好,但是方法是正确的)

 参考简书:

【Autoware】激光雷达-摄像头联合标定1- Calibration Tool Kit - 简书 (jianshu.com)

  • 3
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

╰︶ ̄ 莫等闲۩۩۩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值