ZED2、IMU联合标定

一、标定IMU

上一次标定了ZED2相机,链接: https://editor.csdn.net/md/?articleId=109696090
接下来标定IMU。
同样,先录制数据包。

 rosbag record -O imu_cyx_calibration /zed2/zed_node/imu/data_raw

将imu_utils文件夹下的A3.launch改写为ZED2的启动文件ZED2_calibration.launch。同时要看下是否修改时间max_time_min。这里我将其设定为2小时。所以在录制数据包的时候一定要超过这个时间,不然后面没法进行。


    
        
        
        
        
        
    

在imu_utils文件夹下(ZED2_calibration.launch所在的文件夹)打开终端,启动标定:

roslaunch imu_utils ZED2_calibration.launch

回访数据包,速率为200HZ:

rosbag play -r 200 imu_cyx_calibration.bag  

最后可以得到标定结果文件:/home/ipsg/tool/utils_ws/src/imu_utils/data/ZED2_imu_param.yaml

二、执行相机+IMU联合标定

新建camera_cyx.yaml文件和imu_cyx.yaml文件。其中camera_cyx.yaml文件里的内容是之前标定zed2相机时最后生成的yaml文件的内容,如果只标定左目,只需要camera0的参数就可以:

cam0:
  cam_overlaps: []
  camera_model: pinhole
  distortion_coeffs: [-0.04146142113155779, 0.040207379741452436, 0.00058191919155336,
    2.6184399452903757e-05]
  distortion_model: radtan
  intrinsics: [264.1544476767924, 265.6303085861438, 357.12188690735223, 167.47999407549506]
  resolution: [672, 376]
  rostopic: /zed2/zed_node/left/image_rect_color2

同理,imu_cyx.yaml文件里是标定imu时最后生成的yaml文件里的内容,只需要均值就可以了(注意rostopic话题是否正确,看到底是data_raw还是data_raw2):

#Accelerometers
accelerometer_noise_density: 1.96e-02   #Noise density (continuous-time)
accelerometer_random_walk:   5.29e-04   #Bias random walk

#Gyroscopes
gyroscope_noise_density:     1.82e-03   #Noise density (continuous-time)
gyroscope_random_walk:       3.71e-05   #Bias random walk

rostopic:                    /zed2/zed_node/imu/data_raw2   #the IMU ROS topic
update_rate:                 200.0      #Hz (for discretization of the values above)

最后执行联合标定:

kalibr_calibrate_imu_camera \
    --target /home/ipsg/dataset/checkboard.yaml \
    --bag /home/ipsg/ZED2_WS/Kalibr_cyx_data.bag \
    --bag-from-to 10 130 \
    --cam /home/ipsg/tool/kalibr_ws/camera_cyx.yaml \
    --imu /home/ipsg/tool/kalibr_ws/imu_cyx.yaml \
    --imu-models scale-misalignment \
    --timeoffset-padding 0.1

执行成功后就会生成我们最终想要的联合标定的yaml文件。
注意:最后执行联合标定时,如果出现错误,从以下三方面考虑。
1.是否已经在devel对应的文件夹所在的终端执行了:

source devel/setup.bash

2.仔细检查每个yaml以及bag文件的路径是否有误。
3.看文件名是否写错了。

参考链接: https://blog.csdn.net/weixin_44401286/article/details/109641268.

你可能感兴趣的:(ZED2、IMU联合标定)