最近在研究imu和相机的联合标定方法,根据网上查到的资料和github上的开源工具总结以下。html
一、联合标定的工具Kalibr
https://github.com/ethz-asl/kalibrgit
wiki写的很全了,总结如下要点:github
须要:
一、内参:尺度,轴误差、非线性(应用到raw measurements)算法
二、陀螺仪和加速度计的噪声和随机游走误差工具
三、标定图像,很成熟了,使用ros中的工具箱就行。post
采集图像:
须要激活因此的轴,20Hz的相机,200Hz的IMU优化
避免震动,看到有说法使用人手不行,须要机械臂.net
若是您正在使用具备对称性的校准目标(棋盘,圆网格),则必须避免可能致使目标姿态估计中的翻转的运动。 推荐使用Aprilgrid来彻底避免这个问题。code
中文博客教程:htm
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的物理距离
* 标定结果的稳定性上
标定的结果一直没法使人满意:
可能的缘由
选择的内参数值
畸变系数的选择
采集过程当中出现的晃动
坐标系混乱
二、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面法校准,多旋转几回避免奇异性。要注意参数的初始值的设定,若是设置很差会很大程度影响结果。
附上我这拙劣的操做:
三、噪声和随机游走的标定(Allan方差)
https://github.com/rpng/kalibr_allan(matlab)
https://github.com/gaowenliang/imu_utils(ROS)
能够看他们的wiki很详细,也能够看以前蓝色推荐的那个,也有讲。
后者是港科大推荐的,须要装一个code_utils都在他的github上。
通常这些开源代码不是有例程就有详细的说明,提供参考。