ZED2双目相机+IMU标定

本文主要使用了kalibr工具标定ZED2双目相机+IMU,并运行VINS-Fusion。
阐述了标定板的选择方法,以及标定中的注意事项。

ZED2双目相机+IMU联合标定

  • 1 安装标定工具
  • 2 选择标定板
  • 3 ZED2标定数据录制
  • 4 标定IMU
  • 5 相机IMU联合标定

参考博客:

ZED2相机标定及运行VINS-mono

用imu_utils标定IMU,之后用于kalibr中相机和IMU的联合标定

Ubuntu16.04利用kalibr工具进行ZED2相机的标定


1 安装标定工具

1、使用kalibr工具标定ZED2双目相机,按照上述博客安装kalibr工具。我最开始用的eigen版本为3.3.9,发现这个版本编译kalibr总是报错,换成eigen3.3.7之后就没有问题了。

2、用imu_utils标定IMU,依次安装编译code_utils、imu_utils。

imu_utils下载地址为:https://github.com/gaowenliang/imu_utils

code_utils下载地址为: https://github.com/gaowenliang/code_utils

注意,不要同时把imu_utils和code_utils一起放到src下进行编译。
由于imu_utils 依赖 code_utils,所以先把code_utils放在工作空间的src下面,进行编译。然后再将imu_utils放到src下面,再编译。


2 选择标定板

关于标定板的选择,checkerboard和aprilgrid这两种是比较常用的。相机需要距离标定板1-2m,标定板占据视野60%以上。

**注意:**标定过程中,标定板不要离开相机视野范围,开始和结束要平稳进行,尽量使标定板出现在视野所有角落。

checkerboard:
注意,targetCols、targetRows数的是内角点数目

target_type: 'checkerboard' #gridtype
targetCols: 6               #number of internal chessboard corners
targetRows: 8               #number of internal chessboard corners
rowSpacingMeters: 0.17      #size of one chessboard square [m]
colSpacingMeters: 0.17      #size of one chessboard square [m]

aprilgrid:
tagSpacing=小方格边长/大方格边长

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.088           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize

标定板下载:https://github.com/ethz-asl/kalibr/wiki/downloads#calibration-targets

也可以使用命令生成PDF文件:

kalibr_create_target_pdf --type checkerboard --nx 6 --ny 6 --csx 0.03 --csy 0.03
kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.08 --tspace 0.03

3 ZED2标定数据录制

首先,启动ZED2的ROS节点:

roscore
roslaunch zed_wrapper zed2.launch

查看topic,开启可视化图像,确保标定板处于左右目图像中:

rostopic list
rosrun image_view image_view image:=/zed2/zed_node/left/image_rect_gray
rosrun image_view image_view image:=/zed2/zed_node/right/image_rect_gray

降低图像频率,查看当前频率:

rosrun topic_tools throttle messages /zed2/zed_node/imu/data 280 /imu/data
rosrun topic_tools throttle messages /zed2/zed_node/left/image_rect_gray 4.0 /left/gray
rosrun topic_tools throttle messages /zed2/zed_node/right/image_rect_gray 4.0 /right/gray

rostopic hz /left/gray
rostopic hz /right/gray

开始录制一个bag文件:

rosbag record -O Kalib_data_vga.bag /imu/data /left/gray /right/gray

标定相机参数:

kalibr_calibrate_cameras --bag Kalibr_data.bag \
   --topics /left/gray /right/gray \
   --models pinhole-radtan pinhole-radtan 
   --target april_6x6_80x80cm.yaml

4 标定IMU

把相机静止放置,录制两小时imu数据,修改launch文件。

 rosbag record -O imu_calibration /imu/data

    "imu_utils" type="imu_an" name="imu_an" output="screen">
        <param name="imu_topic" type="string" value= "/zed2/zed_node/imu/data_raw"/>
        <param name="imu_name" type="string" value= "ZED2"/>
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <param name="max_time_min" type="int" value= "120"/>
        <param name="max_cluster" type="int" value= "200"/>
    </node>
</launch>
roslaunch imu_utils ZED2_calibration.launch
rosbag play -r 200 imu_calibration.bag

5 相机IMU联合标定

联合标定主要是为了获得相机和IMU轴系的转换关系

kalibr_calibrate_imu_camera --bag Kalibr_data.bag \
  --cam camchain-Kalibr_data.yaml \
  --imu imu-params.yaml \
  --target target april_6x6_80x80cm.yaml

到这里就大功告成啦!

你可能感兴趣的:(slam,计算机视觉)