之前写了一个T265相机的标定,那个是双目+IMU只写了大纲,可能有些细节还不够清楚,我再写一个D455(单目+IMU,没有用他的depth信息),这次把更细节的操作记录一下:
我还写了一个T265远程标定的文章,里面还写了一些标定的技巧和最后标定的结果,感兴趣的话可以看看:传感器远程标定 机载电脑无线通信【T265为例】_全日制学生混的博客-CSDN博客
一、进入远程桌面
图 NoMachine远程桌面软件
主要命令:
sudo apt install net-tools
ssh a@192.168.168.165 查看远程命令窗口
ping 192.168.168.165 查看延迟
scp a@192.168.168.165:/home/a/workspace/uav_ws/imu_camera_calibration.bag . 拷贝文件
图 标定时的窗口
二、单目标定
录制1:双目与联合标定所需bag
1、提前改好rs_camera.launch 主要更改:
1、color相机话题发布
2、acc/groy 话题发布
3、imu_unit => copy
4、把同步打开 <arg name="enable_sync" default="true"/>
2、启动D455
roslaunch realsense2_camera rs_camera.launch
rosrun topic_tools throttle messages /camera/color/image_raw 10.0 /cam
rosrun topic_tools throttle messages /camera/imu 200.0 /imu
3、录制:(100s)
rosbag record -O imu_camera_calibration.bag /cam /imu –duration=100
4、拷贝bag:
scp a@192.168.168.165:/home/a/workspace/uav_ws/imu_camera_calibration.bag .
5、单目标定:
rosrun kalibr kalibr_calibrate_cameras --target ./april_6x6.yaml --bag ./imu_camera_calibration.bag --bag-from-to 8 98 --models pinhole-radtan --topics /cam –show-extraction
三、IMU标定
录制2、IMU静置标定bag
1、提前改好realsense中的 rs_camera.launch :
1、acc/groy 话题发布
2、imu_unit => copy
2、启动相机
roslaunch realsense2_camera rs_camera.launch
rosrun topic_tools throttle messages /camera/imu 200.0 /imu
3、录制(2h)
rosbag record -O imu.bag /imu --duration=2h
4、拷贝
scp a@192.168.168.165:/home/a/workspace/uav_ws/imu.bag .
5、编写imu_utils节点的launch文件
<!--路径:imu_utils/launch/-->
<!--文件名:D455_imu.launch-->
<launch>
<node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
<param name="imu_topic" type="string" value= "/imu"/>
<param name="imu_name" type="string" value= "D455_imu"/>
<param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
<param name="max_time_min" type="int" value= "119"/>
<param name="max_cluster" type="int" value= "200"/>
</node>
</launch>
6、标定
roslaunch imu_utils D455_imu.launch
rosbag play -r 1000 imu.bag 1000倍速度播放bag
四、IMU+单目联合标定
1、准备标定结果:
1)单目标定输出文件:imu_camera_calibration-camchain.yaml
2)IMU标定输出文件:D455_imu_imu_param.yaml(此文件在imu_utils/data中)
3)将IMU标定输出文件提取为kalibr格式,与单目标定输出文件放在workspace中,命名为imu.yaml
4)imu.yaml格式如下:
#Accelerometers
accelerometer_noise_density: 9.9482059952620203e-03 #Noise density (continuous-time)
accelerometer_random_walk: 2.9873265404457052e-04 #Bias random walk
#Gyroscopes
gyroscope_noise_density: 2.0968928690840842e-03 #Noise density (continuous-time)
gyroscope_random_walk: 2.1343380606616169e-05 #Bias random walk
rostopic: /imu #the IMU ROS topic
update_rate: 200.0 #Hz (for discretization of the values above)
2、启动联合标定:
rosrun kalibr kalibr_calibrate_imu_camera --target ./april_6x6.yaml --cam ./imu_camera_calibration-camchain.yaml --imu ./imu.yaml --bag ./imu_camera_calibration.bag --bag-from-to 8 98 --show-extraction
3、至此标定完成
五、技巧
1、机载电脑在录制完单目的bag并发送给笔记本上标定后,在笔记本上做单目标定的同时,可以让机载电脑录制imu标定的bag
2、imu的bag一定要倍速播放,如 -r 1000
3、imu的bag一般录制1-2h,相机的bag一般录制100s,相机的bag不要录制太长时间,对录制帧数也要加以限制,否则标定过程会非常漫长
4、按道理说,相机标定、IMU标定、联合标定需要录制三个bag,但其实第一个和第三个可以使用同一个bag,这就要求我们在录制的时候,不仅要接收相机的话题,还有录制imu的话题,然后在相机标定的时候,只播放bag中的相机话题,在联合标定的时候,播放imu和相机的话题。
六、参考文章
1:https://www.jianshu.com/p/194d6c9ef9a4
2:bmi055 标定_Ubuntu16.04+RealsenseT265跑通VINS-Fusion_之死的博客-CSDN博客
3:Kalibr 之 Camera-IMU 标定 (总结)_晨光ABC的博客-CSDN博客_kalibr标定
4:双目相机与IMU联合标定_合工大机器人实验室的博客-CSDN博客_双目相机和imu联合标定