目录
1、标定目的
realsense d435i包含两个红外相机、红外发射器、RGB相机和IMU四个模块,显然四个传感器的空间位置是不同的,我们在处理图像和IMU数据时需要将这些数据都放在统一的坐标系上去。比如我们用d435i运行vins,我们处理的图像和IMU数据都需要放在同一个坐标系下,因此我们需要标定IMU相对RGB相机的空间位置(包括旋转和位移)。另外,相机固有参数比如焦距、畸变参数等以及IMU的零偏和scale系数等都需要提前知道。前者我们称为外参,后者称为内参,在运行程序前我们需要标定它们,不论程序是否有自标定功能,毕竟好的初始标定值对于自标定来说也是有利的。
2、标定准备
1) 安装realsense-sdk2.0,包括d435i的驱动等,直到可以运行realsense-viewer,可以看到图像和深度图。
2) 安装realsense-ros,前提要安装ros-kinetic,这个包可以直接读取d435i的数据流,并发布各个topic,后面标定操作直接订阅相关的topic。
3) 安装imu_utils,前提要安装code_utils,这个用于标定IMU的噪音密度和随机游走系数。
4) 安装Kalibr。这个软件包可以同时标定多个相机的外参和内参(提供不同的相机的模型),另外可以标定相机和IMU的外参。
3、标定步骤
标定顺序:IMU标定 —> 相机标定 —> IMU+相机联合标定
这么设定顺序是因为最后一部IMU和相机的联合标定需要IMU和相机的内参,现在开始展开说明。
1)IMU标定
step1:进入realsense-ros包,开启d435i,发布IMU话题
roslaunch realsense2_camera rs_imu_calibration.launch
rs_imu_calibration.launch是我在rs_camera.launch针对IMU校准做了修改,具体是:
<arg name="unite_imu_method" default=""/>
=>
<arg name="unite_imu_method" default="linear_interpolation"/>
如果不改的话camera/imu没有这个数据流。
step2: 录制imu数据包
rosbag record -O imu_calibration /camera/imu
step3: 运行校准程序
roslaunch imu_utils d435i_imu_calibration.launch
step4: 回放数据包
&n