前言
在机器人、自动驾驶和无人机等领域,精确的传感器标定是确保系统精度和稳定性的关键步骤。Kalibr作为一款由ETHZ视觉组开源的视觉-惯性标定工具箱,凭借其高精度和灵活性,成为了众多研究者和工程师的首选工具。本文将分享使用Kalibr标定工具箱的一些思考和避坑建议,希望能帮助大家更高效地使用这一强大工具。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Kalibr工具箱的相关思考
1. 关于传感器数据降帧采样的问题
网上大量的参考资料都提到,在录制camera话题时要降帧,如下所示。我个人认为这是不正确的。
原因:
- 多数资料人云亦云,都提到降帧,但是为什么要降帧并没有很好的解释。个人认为是因为最初使用Ubuntu16.04系统时PC的算力较弱,导致Kalibr计算时间过长才选择了降帧。但如今计算机算力大幅度提升,无需降帧。
- 降帧弊大于利,以Relsense D435i相机为例,其本身的采样频率为30HZ,降低为4HZ进行数据采集,在Kalibr计算过程中,数据量的减少必然导致多余观测量减少,这会导致计算精度的降低。
- 该问题是通过实际中多次标定发现的,之前也是参考网上教程降帧计算,但是精度一直不高,后来就在想为什么要降帧,通过使用30HZ的原始数据计算,精度确实有明显提升。
rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color
rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 4.0 /infra_left
rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 4.0 /infra_right
提示:上述代码是错误案例,本人认为无需降帧。
2. 关于提升标定精度的问题
大家可能也发现一个问题,使用Kalibr工具箱进行传感器标定时,每次录制的bag得到的标定精度差别很大(一般标定精度的好坏可以参考标定文件中的Reprojection error大小来判断,一般小于0.2则认为是比较好的标定结果)。
方法:
- 采用原始的图像帧进行数据采集。上述已经提到过并解释了原因,个人不建议降帧采集。
- 提高标定板本身的精度。标定准确与否与标定板本身有直接关系。如果标定板的精度就很低,那么根据标定板解算的标定结果就不会高(好比利用尺子量一支钢笔的长度,如果尺子本身就不准,那么得到的钢笔长度也不会准确)。许多学者利用打印的A4纸进行标定,个人觉得是不够准确的。从科学研究和发表paper的角度,建议在某宝/某东定制标准的标定板,标定板精度能达到0.01mm。
- 相机与IMU联合标定,录制数据时传感器运动要快。Kalibr有个官方教程如何采集标定数据,即传感器对着标定板(距离一定要合适,不能太远,保证图像全部包含整个标定板即可)进行前后,上下,左右和三轴方向的充分运动。其实也很好理解,即三个方向的位移和三个方向的旋转都运动充分,才能实现相机与IMU的外参准确标定,否则可能导致某个自由度运动不充分造成解算方程的病态性。注意:IMU中的加速度计模块需要足够的激励才能得到有效的数据,因此采集数据时一定要快速运动,只要图像不模糊,运动要尽可能的快。(这里也对应了前边讲到的图像降帧问题,如果大幅度降帧,图像运动又很快,那么很可能许多图像不可用或者精度很差;但是如果不降帧,即使某些图像模糊,但是绝大多数图像仍可用,得到的结果依旧很好)。图像运动快是基于多次标定的实验结果分析得到的,如果缓慢运动,则IMU得到的Gyroscope error和Accelerometer error一般都会很大。
示例:下图为利用30HZ的图像数据,标准的标定板,以及快速运动得到的标定结果。
注意:如果发现Kalibr解算过慢,之前遇到过在个人笔记本上解算过程耗时近10个小时,很可能是因为录制的bag质量不好,导致每次解算的结果不收敛,因此一直在循环迭代。一般质量比较好的bag,在个人笔记本上几分钟内即可解算完成(因为采集的bag质量高所以迭代几次很快收敛并满足停止迭代条件),解算时间长短可以作为判断bag质量好坏的一个参考依据,当然在不同配置的电脑上解算时间也有很大差别。 - matlab相机标定工具箱与Kalibr工具箱。如果只是标定相机内参或者相机间外参,不涉及IMU传感器,则建议利用matlab相机标定箱实现。原因在于:(1)matlab相机标定箱集成度高,算法迭代较为成熟,标定精度准确可靠且操作简单,更适合新手;(2)matlab相机标定工具箱只需利用采集的若干幅静态图像即可实现标定,无需动态采集数据和录制bag,操作更加便捷。此外,静态采集的优势在于无需考虑相机间的时间同步问题,而kalibr工具箱还要实现相机间动态运动过程中时间同步,时间同步本身就会导致精度的降低。
3. 关于Kalibr标定工具箱的改进
最近看到武汉大学李星星教授团队开源的iKalibr工具箱,其支持五种常用的传感器(IMU、4D毫米波雷达、LiDAR、RGB相机和RGB-D相机)且无需靶标的标定框架。该工作本人还没来及仔细研究学习,感兴趣的朋友可以参考下方链接。
ikalibr代码
ikalibr软件介绍
总结
Kalibr开源标定工具箱的思考和避坑建议(未完待续),后续会及时更新,不足之处请批评指正。欢迎交流学习。
参考文献
- Furgale P, Rehder J, Siegwart R. Unified temporal and spatial calibration for multi-sensor systems[C]//2013 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE, 2013: 1280-1286.
- https://github.com/ethz-asl/kalibr
- https://github.com/Unsigned-Long/iKalibr