基于matlab的双目+IMU标定

        上一次主要讲了关于双目标定过程中一些需要注意的问题,在视觉slam中,很重要的一个方向是视觉与IMU的融合,因此也就有了很多相机与IMU融合的硬件。这次就来讲讲VIO硬件的标定,和双目类似的,在这个标定中我们最终需要得到IMU相对于相机的rotation和translation,IMU与相机数据的延时,以及IMU本身的一些“内参”,如加速度计、陀螺仪的bias,noise等。目前标定功能较齐全的是linux下的kalibr工具箱,matlab中代码比较零散,没有一个整合的toolbox,因此本篇先总结一下matlab的使用,下次继续讲讲kalibr的使用方法。

        在基于matlab的标定方法中,我们关注以下两个点的标定:IMU相对于相机的旋转矩阵和IMU中加速度计Bias。

1.加速度计Bias标定

        加速度计Bias的标定是相对较简单的,原理是利用重力加速度的不变性,通过硬件姿态的变换,获得硬件在不同方向上重力加速度的测量值。具体做法是让硬件在某一位置保持静止,记录此时加速度计读数,变换硬件姿态后重复上述过程。最终我们得到了多组加速度计数据。在硬件本体坐标系上看,每一次测量向坐标系中添加了一个长度为重力g的矢量,所有的数据点应该在一个球面上,通过球形拟合,找到球心位置,球心位置和原点的偏差即加速度计bias。为了使标定结果更精确,数据应在各个方向分布较均匀,且数量不能太少。另外,我们也可以使用Balaji Kumar的标定程序,参考文章Iuri Frosio, Federico Pedersini, N. Alberto Borghese "Autocalibration of MEMS Accelerometers" IEEE TRANSACTIONS ON INSTRUMENTATION AND MEASUREMENT, VOL. 58, NO. 6, JUNE 2009 。这个标定程序需要输入十组加速度计测量数据,因此我们通常称其为十位置法。程序的输出是矩阵M和B,M是一个3*3的矩阵,表示三轴加速度计各方向的关联(理想情况该矩阵为单位阵),B是3*1的矩阵即各方向bias。采集数据时要注意,保证重力加速度分别指向+-x、+-y、+-z六个方向,获得较为准确的标定结果。

2.IMU与相机RotationMatrix标定

        使用Jorge Lobo的标定程序,该程序基于上次讲过的matlab标定工具箱。程序下载:http://home.deec.uc.pt/~jlobo/InerVis_WebIndex/InerVis_Toolbox.html

        标定流程如下:

        a.数据采集。保证标定版竖直放置,采集数据过程中硬件保持静止,变换不同姿态位置,每一个位置图像数据与十个IMU数据相对应,保存。

        b.数据处理。假设采集二十张图片,需要有20个与之对应的IMU数据文件,每一个文件中有十个I加速度计数据。

        c.单目相机标定。流程同上一讲。在完成单目标定后,保存标定结果Calib_Results.mat文件。

        d.将前面标定得到的矩阵M和B写入程序load_imu_w.m中,运行rvctools中的startup_rvc.m加载数学函数。将IMU数据文件和相机标定结果放入相应路径(imucam中)。

        e.运行imucam.m,得到四元数q,即标定结果。

        注意事项:上面提到了标定版垂直和硬件静止的问题,除此之外,需要注意加速度计测量值单位问题,以及IMU数据文件命名。

        想了解方法原理的同学可参考作者的文章,Relative pose calibration between visual and inertial sensors.

-------------------------------------------------

        本篇就是这样,下次总结一下kalibr的使用,kalibr功能更为强大,需要注意的问题也比较多,下次再见啦。







If you tame me, then we shall need each other.




基于matlab的双目+IMU标定_第1张图片


你可能感兴趣的:(基于matlab的双目+IMU标定)