目的:使用Kalibr来标定出imu与相机的外参矩阵
0.准备工作
标定板:Aprilgrid(推荐),checkerboard, circlegrid
需要提供的参数:
1.imu的配置文件
填写imu的动态特性:需要 noise density以及 bias random walk
#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)
1.相机的标定
ros录制相机的图像,注意相机固定,标定板在前方运动,相机收集的频率推荐降低到4HZ:
rosbag record -O subset /cam
rosrun topic_tools throttle messages /cam 4.0 /cam_reduce
标定的过程使用命令行
kalibr_calibrate_cameras --bag [filename.bag]
--topics [TOPIC_0 ... TOPIC_N] --models [MODEL_0 ... MODEL_N]
--target [target.yaml]
实例:
kalibr_calibrate_cameras --target april_6x6.yaml --bag static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw
验证:反投影误差(reprojection errors)应该在 (0.1-0.2 px )
kalibr_camera_validator --chain chain.yaml --target aprilgrid_6x6.yaml
2.相机和IMU的联合标定
标定的过程使用命令行
kalibr_calibrate_imu_camera --bag filename.bag --cam camchain.yaml
--imu imu.yaml --target target.yaml
实例:
kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml
--imu imu_adis16448.yaml --bag dynamic.bag --bag-from-to 5 45
增加一个参数,忽略时间空隙:
--no-time-calibration
增加一个参数,bag从5秒录制到45秒:
--bag-from-to 5 45