1.标定IMU
1.1在机载端录制imu的.bag文件
修改rs_t265.launch
<arg name="unite_imu_method" default="linear_interpolation"/>
#不懂
<arg name="enable_sync" default="true"/>
#开启同步
roslaunch realsense2_camera rs_t265.launch
#启动t265相机
rosrun topic_tools throttle messages /camera/imu 200.0 /imu/data #控制输出频率和更改话题名
rosbag record /imu/data -o imu_uav.bag --duration=2h #录制bag文件
1.2在主机上标定imu(该步骤暂时写在calibrate_imu.sh文件中)
roslaunch imu_utils t265_imu.launch #运行标定软件
t265_imu.launch文件内容如下
<launch>
<node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
<param name="imu_topic" type="string" value= "/imu"/>#IMU发布的话题
<param name="imu_name" type="string" value= "imu1"/>#IMU名字
<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= "100"/>
</node>
</launch>
rosbag play -r 1000 ~/nnz_vins/kalibr/t265/t265_01/imu.bag #播放bag文件
2.标定双目相机
2.1在机载端录制camra.bag文件(暂时放于001.sh中)
rosrun topic_tools throttle messages /camera/fisheye1/image_raw 20.0 /fisheye1 修改相机和IMU的输出频率和话题名
rosrun topic_tools throttle messages /camera/fisheye2/image_raw 20.0 /fisheye2
#数据频率推荐是20,但是很多人用的4,.bag文件大小20hz是1.9G,4hz是512mb
rosrun topic_tools throttle messages /camera/imu 200.0 /imu
rosbag record -O imu_cameras_calibration /fisheye1 /fisheye2 /imu --duration=100 #录制.bag文件
2.2在主机上标定相机
rosrun kalibr kalibr_calibrate_cameras --target ./apriltags.yaml --bag ./calibration.bag --bag-from-to 10 90 --models pinhole-equi pinhole-equi --topics /fisheye1 /fisheye2 --approx-sync 0.04
#--target 标定板参数文件 --models 相机模型 运行openvins算法models选择pinhole-equi
此处有疑问,其他人选择的相机模型为omni-radtan,我觉得也是这样,单openvins里面对鱼眼相机推荐为pinhole-equi
#openvins相机模型选择参考: https://docs.openvins.com/gs-calibration.htmls
#相机模型参数:Supported models · ethz-asl/kalibr Wiki · GitHub
2.3遇到的问题及解决办法
2.3.1焦距初始化失败
Initialization of focal length failed. You can enable manual input by setting ‘KALIBR_MANUAL_FOCAL_LENGTH_INIT’.
焦距初始化失败
export KALIBR_MANUAL_FOCAL_LENGTH_INIT=1
终端中设置变量 KALIBR_MANUAL_FOCAL_LENGTH_INIT = 1,重新运行程序, 然后程序运行时报错会提示手动输入,手动给相机设置初始焦距400
2.3.2标定板获取
在线下载标定板PDF:Camera Calibration Pattern Generator – calib.io
3.联合标定
修改imu参数文件格式为kalibr支持的格式,新建一个yaml文件,需要的是acc_n、acc_w、gyr_n和gyr_w这四个数据,将其对应的填到文件中即可
touch imu.yaml #新建文件
3.1主机上进行标定
rosrun kalibr kalibr_calibrate_imu_camera --target ./apriltags.yaml --cam ./imu_cameras_calibration_camchain.yaml --imu ./imu.yaml --bag imu_cameras_calibration.bag --bag-from-to 10 90
#--target 标定板参数信息存放的路径,即我们上面的april_s.yaml的路径 --cam Camera的标定文件路径 --imu IMU的标定文件路径 --bag 录制的Camera-IMU数据包的路径 --bag-from-to 起始和终止时间,单位是秒。为了避免开始录制和结束录制时的抖动,这里取了第30秒到第90秒之间的信息。
rosrun kalibr kalibr_calibrate_imu_camera --imu-models scale-misalignment --reprojection-sigma 1.0 --target apriltags.yaml --imu imu.yaml --cams cam.yaml --bag calibration.bag --show-extraction