【Ubuntu18.04 D435i RGB相机与IMU标定详细版(三)】
提示:继上篇文章
文章目录
- [【Ubuntu18.04 D435i RGB相机与IMU标定详细版(三)】](#【Ubuntu18.04 D435i RGB相机与IMU标定详细版(三)】)
- 四、RGB相机与IMU联合标定
四、RGB相机与IMU联合标定
1.调节帧率
相机20Hz,IMU200Hz,官方说这个参数比较好,并分别以/color和/imu为话题名发布
c
roslaunch realsense2_camera rs_camera.launch color_width:=640 color_height:=480 color_fps:=30
rosrun topic_tools throttle messages /camera/color/image_raw 20.0 /color
rosrun topic_tools throttle messages /camera/imu 200.0 /imu
2.录制数据包
官方似乎没有说录多久,但是说了每一个方向都要给激励,可以参考官网的视频。YouTube看不了的话可以看泡泡机器人搬运过来的视频。
总结下来就是偏航角左右摆动2次,俯仰角摆动2次,滚转角摆动2次,上下移动2次,左右移动2次,前后移动2次,然后自由移动一段时间,摆动幅度要大一点,让视角变化大一点,但是移动要缓慢一点,同时要保证标定板在2个相机视野内部,整个标定时间要在90s以上更好,但是优化时间会比较长。
c
rosbag record -O dynamic /color /imu
3.重写yaml文件
标定需要三个文件,一个是相机的标定文件,一个是IMU的标定文件,一个是录制的数据包
(1)相机标定的yaml文件
由于我们刚刚也是在kalibr工作环境下标定的,所以直接用刚刚标定好的相机yaml文件即可。
即上述所说的
camchain-...camd435i.yaml
c
cam0:
cam_overlaps: []
camera_model: pinhole
distortion_coeffs: [0.11114194921960645, -0.2171600270591326, -0.0037942616908056637,
-0.004000340562604045]
distortion_model: radtan
intrinsics: [579.5589935482029, 578.1762234104125, 326.6772381912598, 243.3955018655041]
resolution: [640, 480]
rostopic: /color
(2)新建imu.yaml
在kalibr工作环境目录下新建imu.yaml文件,格式如下:
格式如下:
c
#Accelerometers
accelerometer_noise_density: 1.86e-03 #Noise density (continuous-time)
accelerometer_random_walk: 4.33e-04 #Bias random walk
#Gyroscopes
gyroscope_noise_density: 1.87e-04 #Noise density (continuous-time)
gyroscope_random_walk: 2.66e-05 #Bias random walk
rostopic: /imu0 #the IMU ROS topic
update_rate: 200.0 #Hz (for discretization of the values above)
已知
c
Gyr:
avg-axis:
gyr_n: 3.1820671461855504e-03
gyr_w: 3.0693398103399251e-05
Acc:
avg-axis:
acc_n: 2.6449533258549235e-02
acc_w: 7.2111910796954259e-04
把IMU标定结果对应地填到imu.yaml去,如下:
c
#Accelerometers
accelerometer_noise_density: 2.64e-02 #Noise density (continuous-time)
accelerometer_random_walk: 7.21e-04 #Bias random walk
#Gyroscopes
gyroscope_noise_density: 3.18e-03 #Noise density (continuous-time)
gyroscope_random_walk: 3.07e-05 #Bias random walk
rostopic: /imu #the IMU ROS topic
update_rate: 200.0 #Hz (for discretization of the values above)
由于我们刚刚也是在kalibr工作环境下标定的,所以直接用刚刚标定好的相机yaml文件即可。
即上述所说的
4.使用Kalibr进行标定
然后下面的参数仍然需要自己修改
c
rosrun kalibr_calibrate_imu_camera --target 标定板位置/标定板名称.yaml --cam 相机标定位置/相机标定名称.yaml --imu imu.yaml --bag dynamic.bag --show-extraction
rosrun kalibr kalibr_calibrate_imu_camera --target ../camera_calib/april_6x6_80x80cm.yaml --cam ./d435i-camchain.yaml --imu imu.yaml --bag dynamic.bag --show-extraction
# --show-extraction 可以增加参数可视化标定

运行时间会根据你录制数据包的大小和电脑性能而定,我录制了将近两分钟,电脑是四年前的神舟,所以速度较慢,大概用了有半个小时以上,可以去喝杯咖啡再回来看看。
生成好多个文件,主要关注一个文件:
c
camchain-imucam-dynamic.yaml
里面有一个T_cam_imu,就是我们要求的外参。