文章目录
写在前面
kalibr 标定工具箱问题汇总
kalibr 的安装使用方法:ZED2相机标定–双目、IMU、联合标定
一、运行一段时间报错 Spline Coefficient Buffer Exceeded. Set larger buffer margins!
的解决方法
标定的时候的yaml文件格式:
camera.yaml
:
cam0:
cam_overlaps: []
camera_model: pinhole
distortion_coeffs: [-0.3288720928197026, 0.11678649461912108, 0.0004619434294783071, 0.00027993594935011104]
distortion_model: radtan
intrinsics: [825.2629299488598, 825.1825253906247, 648.2305431327878, 401.7483728023581]
resolution: [1280, 720]
rostopic: /color
imu.yaml
:
#Accelerometers
accelerometer_noise_density: 2.8640582961344689e-04 #Noise density (continuous-time)
accelerometer_random_walk: 4.4108591595186435e-06 #Bias random walk
#Gyroscopes
gyroscope_noise_density: 1.8618914746404749e-05 #Noise density (continuous-time)
gyroscope_random_walk: 1.2421209271899250e-07 #Bias random walk
rostopic: /imu #the IMU ROS topic
update_rate: 100.0 #Hz (for discretization of the values above)
checkboard.yaml
target_type: 'checkerboard'
targetCols: 8
targetRows: 11
rowSpacingMeters: 0.1
colSpacingMeters: 0.1
1.问题描述
运行标定指令:
rosrun kalibr kalibr_calibrate_imu_camera --bag calib_imu_cam.bag --cam camera.yaml --imu imu.yaml --target checkboard.yaml
出现如下报错:
Spline Coefficient Buffer Exceeded. Set larger buffer margins!
报错截图:
2. 解决方法
修改kalibr/aslam_nonparametric_estimation/aslam_splines/src/BSplineExpressions.cpp
的423行,将 _bufferTmax
人为地提高:
将423行的
_bufferTmax = _spline->spline().timeInterval(_bufferRight).second
提高10倍,修改为:
_bufferTmax = _spline->spline().timeInterval(_bufferRight).second*10;
如果依旧报同样的错误,那么在终端输入的标定指令后面增加 --timeoffset-padding 0.1
(后面这个值越大,标定的运行时间会越长) ,然后再次运行标定程序, 即
rosrun kalibr kalibr_calibrate_imu_camera --bag calib_imu_cam.bag --cam camera.yaml --imu imu.yaml --target checkboard.yaml --timeoffset-padding 0.1
参考链接
[1] SJTU_YJ. 【Kalibr】问题汇总 [EB/OL]. https://blog.csdn.net/qq_42928559/article/details/122011608, 2021-12-18/2023-01-16.