文章目录
写在前面一、运行一段时间报错 `Spline Coefficient Buffer Exceeded. Set larger buffer margins!` 的解决方法1.问题描述2. 解决方法参考链接写在前面
kalibr 标定工具箱问题汇总
kalibr 的安装使用方法:ZED2相机标定–双目、IMU、联合标定
一、运行一段时间报错Spline Coefficient Buffer Exceeded. Set larger buffer margins!
的解决方法
标定的时候的yaml文件格式:
camera.yaml
:
cam0:cam_overlaps: []camera_model: pinholedistortion_coeffs: [-0.3288720928197026, 0.11678649461912108, 0.0004619434294783071, 0.00027993594935011104]distortion_model: radtanintrinsics: [825.2629299488598, 825.1825253906247, 648.2305431327878, 401.7483728023581]resolution: [1280, 720]rostopic: /color
imu.yaml
:
#Accelerometersaccelerometer_noise_density: 2.8640582961344689e-04 #Noise density (continuous-time)accelerometer_random_walk: 4.4108591595186435e-06 #Bias random walk#Gyroscopesgyroscope_noise_density:1.8618914746404749e-05 #Noise density (continuous-time)gyroscope_random_walk: 1.2421209271899250e-07 #Bias random walkrostopic:/imu#the IMU ROS topicupdate_rate: 100.0#Hz (for discretization of the values above)
checkboard.yaml
target_type: 'checkerboard'targetCols: 8targetRows: 11rowSpacingMeters: 0.1colSpacingMeters: 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]. /qq_42928559/article/details/12608, -12-18/-01-16.