ZED2相机标定

一、概述

在运行视觉SLAM程序时,总会要求输入一个校正文件。这次的目的就是要把里头的参数全部填满。需要标定的参数包括:相机内参fx,fy,cx,cy;相机镜头畸变k1,k2,p1,p2;IMU陀螺仪偏移,加速度计偏移;大概就这些。

二、录制数据集

这里使用的相机是zed-sdk相机。
标定流程:
1、打印标定板
标定板可以找合适的下载。标定板下载地址

2、录制视频
用zed相机自带tools,录制一段视频,视频会保存为svo文件。

3、安装Kalibr
zed相机自带标定程序(ubuntu默认在/usr/local/zed/tools里),这里是想和kalibr对比效果。Kalibr下载地址

4、安装zed-ros-wrapper
下载地址

5、视频打包
这里是指把zed录好的svo文件打成bag包,方便处理。
这里参考ZED2相机标定及运行VINS-mono
先打开一个终端

roscore

第二个终端,准备接收话题,注意这里接收的话题不是zed_wrapper发布的话题。录制结果保存在终端所在文件夹,结果文件名为Kalib_data_vga.bag。
这里还有一点,就是zed相机里有几个话题和原始图像对应,比如:
/zed2/zed_node/left/image_rect_color,这个话题也可以使用:分辨率没有发生变化,但是是对原始图像进行边缘裁剪后拉伸,这可能会导致丢失信息。

rosbag record -O Kalib_data_vga.bag \
/zed2/zed_node/imu/data_raw2 \
/zed2/zed_node/left_raw/image_raw_color2 \
/zed2/zed_node/right_raw/image_raw_color2

第三个终端,意外发现,原因不明,总之是为了让程序发布imu数据,不用imu可以无视。

rosrun rviz rviz

打开rviz以后,添加PointCloud2,Topic填为

/zed2/zed_node/point_cloud/cloud_registered

订阅了这个话题以后,就能正常接收imu数据了。还可以添加Image之类的,确保正常录制。

第四、五、六个终端,修改消息发布频率。
因为zed相机通常以60Hz左右的频率进行录制,而kalibr标定又要求频率不能过高,因此要降低原话题发布频率,参考降低图像数据到20Hz,IMU数据至200Hz,ros的做法是先订阅,然后重新发布。

rosrun topic_tools throttle messages /zed2/zed_node/imu/data_raw  200 /zed2/zed_node/imu/data_raw2
rosrun topic_tools throttle messages /zed2/zed_node/left/image_rect_color 20 /zed2/zed_node/left/image_rect_color2
rosrun topic_tools throttle messages /zed2/zed_node/right/image_rect_color 20 /zed2/zed_node/right/image_rect_color2

第七个终端,zed_wrapper发布话题,因为要用到imu,所以运行zed2.launch,等待录制完毕。

roslaunch zed_wrapper zed2.launch svo_file:=/path/to/xx.svo

用我的电脑一般需要重复录制两三遍,才能确认流畅录制,原因不明。

三、相机标定

在kalibr文件夹下,执行单目标定,其中的checkboard.yaml表示同标定板一起下下来的参数文件。
第一个终端

roscore

第二个终端

source devel/setup.bash
kalibr_calibrate_cameras \ 
--bag /path/to/xxx.bag \
--topics /zed2/zed_node/left/image_rect_color2 \
--models pinhole-radtan  \
--target /path/to/checkboard.yaml

四、IMU标定

1、安装imu_utils
下载地址

2、录制IMU数据
这里按照默认值需要录制两个小时的IMU数据,imu也不能动。参考ZED2相机标定及运行VINS-mono,录制结果保存在终端所在文件夹,结果文件名为imu_calibration.bag。

rosbag record -O imu_calibration /zed2/zed_node/imu/data_raw

3、标定
在imu_utils文件夹下打开终端,这里的ZED2_calibration.launch通过需要修改A3.launch得到。

source devel/setup.bash
roslaunch imu_utils ZED2_calibration.launch

这里表示按照0.5倍速播放bag,可以按照需要修改,不过尽量保证播放频率为400Hz。

rosbag play -r 0.5 imu_calibration.bag 

五、相机IMU联合标定

这里会用到之前标定的结果,总之需要把相机和IMU的标定结果填到两个yaml文件里,文件格式参考https://github.com/ethz-asl/kalibr/wiki/yaml-formats
不过相机的yaml文件可以直接用,文件在kalibr文件夹下;imu_utils得到的结果直接用avg-axis就可以。
执行联合标定

kalibr_calibrate_imu_camera \
    --target /path/to/checkboard.yaml \
    --bag /path/to/xxx.bag \
    --cam /path/to/cam.yaml \
    --imu /path/to/imu.yaml \

顺便一提,–imu-models scale-misalignment表示在bias+noise的模型基础上考虑scale和misalignment参数,zed相机可能用不上,参考【泡泡传感器评测】小觅双目摄像头D1000-IR-120/Color模组评测(中)

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值