最近在研究imu和相机的联合标定方法,根据网上查到的资料和github上的开源工具总结如下。
1、联合标定的工具Kalibr
https://github.com/ethz-asl/kalibr
wiki写的很全了,总结以下要点:
需要:
1、内参:尺度,轴偏差、非线性(应用到raw measurements)
2、陀螺仪和加速度计的噪声和随机游走偏差
3、标定图像,很成熟了,使用ros中的工具箱就行。
采集图像:
需要激活所以的轴,20Hz的相机,200Hz的IMU
避免震动,看到有说法使用人手不行,需要机械臂
如果您正在使用具有对称性的校准目标(棋盘,圆网格),则必须避免可能导致目标姿态估计中的翻转的运动。 推荐使用Aprilgrid来完全避免这个问题。
中文博客教程:
https://blog.csdn.net/wwchen61/article/details/78013962
https://www.2cto.com/kf/201709/682389.html
https://blog.csdn.net/Binbin_Sun/article/details/53791404提到:
当前标定的结果,主要基于以下两个方面判定:
* 真实的IMU坐标系和相机坐标系的转换,即相机和IMU的物理距离
* 标定结果的稳定性上
标定的结果一直无法令人满意:
可能的原因
选择的内参数值
畸变系数的选择
采集过程中出现的晃动
坐标系混乱
2、IMU内参标定工具imu_tk
https://github.com/Kyle-ak/imu_tk(或者https://bitbucket.org/alberto_pretto/imu_tk)
wiki基本没有。
详细介绍:https://blog.csdn.net/haoliliang88/article/details/76737960
关于IMU误差的讲解:https://www.cnblogs.com/buxiaoyi/p/7541974.html(推荐)
总结优化的方法:
加速度计: 偏差Bias,3个(六面法最小二乘问题)
尺度因子,3个
轴向偏差,3个
陀螺仪: 偏差Bias+高斯噪声(Allan方差),3个
尺度因子,3个
轴向偏差,6个
泡泡机器人上的更为详细讲解:http://rosclub.cn/post-221.html
这个是使用matlab,不过我不太想用matlab(双系统每个系统一个matlab,想想就可怕),其中的理论还是可以看看的:
https://blog.csdn.net/qq541317072/article/details/70314841
加速度计:十面球形校准(重力加速度应该在球面上)
程序的输出是矩阵M和B,M是一个3*3的矩阵,表示三轴加速度计各方向的关联(理想情况该矩阵为单位阵),B是3*1的矩阵即各方向bias。采集数据时要注意,保证重力加速度分别指向+-x、+-y、+-z六个方向,获得较为准确的标定结果。
校准的过程:
静置IMU T(一般取50s)。
旋转IMU使其保持不同的姿态。
在某种姿态下,至少保持t(一般取1~4)s。
是否旋转IMU N(一般选36~50)次。
用算法估计误差参数
最后可以根据残差(residual)来挑选最终结果
要保证旋转过程有明显的加速减速过程,可以使用6面法校准,多旋转几次避免奇异性。要注意参数的初始值的设定,如果设置不好会很大程度影响结果。
附上我这拙劣的操作:
3、噪声和随机游走的标定(Allan方差)
https://github.com/rpng/kalibr_allan(matlab)
https://github.com/gaowenliang/imu_utils(ROS)
可以看他们的wiki很详细,也可以看之前蓝色推荐的那个,也有讲。
后者是港科大推荐的,需要装一个code_utils都在他的github上。
一般这些开源代码不是有例程就有详细的说明,提供参考。
本文都是网上的资料总结而成,如若有误,多多包含,再次感谢这些大佬分享。
---------------------
作者:啊啦啦工业
来源:CSDN
原文:https://blog.csdn.net/OKasy/article/details/79864573
版权声明:本文为博主原创文章,转载请附上博文链接!
原文地址:https://www.cnblogs.com/mataiyuan/p/10657144.html