点击“计算机视觉life”关注,置顶更快接收消息! 因为格式问题最好在公众号上观看《IMU 标定-工业界和学术界有什么不一样?》 本文主要介绍了IMU基本结构原理和偏差的相关概念,IMU偏差模型,并较详细介绍了商用产品和学术文献提到的两种IMU标定方法。 本文阅读时间约8分钟html
IMU(Inertial Measurement Unit)是测量运动物体惯性运动,输出三轴加速度和三轴角速度等信息的电子元件,用于姿态角和运动路径等测量。IMU经常还包含了磁力计、压力计、温度计和GPS等辅助单元,相互配合完成更复杂的任务。git
IMU的应用普遍。放图说明,姿态角肯定,惯性导航,SLAM,动做捕捉,无人机镜头防抖(实现鸡头相似的效果)github
六轴IMU的结构以下图,坐标轴通常遵循右手定则,理想状况下XYZ轴相互正交,加速度计和陀螺仪的轴相互重合。可是一般状况下,IMU存在必定的误差。例如,从Inven Sense的MPU-9250芯片内部结构图能够看到该加速度计(XY、Z轴)和陀螺仪分开制造,所以加速度计和陀螺仪的坐标轴中心并不严格重合,甚至加速度计不一样轴也是分开加工,坐标轴也不能保证彻底正交。并且,加工过程或多或少有偏差,如对称度很差,产生零偏。另外,IMU的内部参数还会随时间、温度变化,产生温漂。算法
IMU出厂时存在参数偏差不可避免,而参数偏差经常会形成严重问题:函数
IMU中x-y-z轴的偏置偏差$\mathbf{b}^a$能够表示为不一样轴的零点偏置,即 $$ \mathbf{b}^a = \begin{bmatrix} b_x \ b_y \ b_z \ \end{bmatrix} $$ IMU中x-y-z轴的正交偏差$\mathbf{T}^a $和尺度偏差$\mathbf{K}^a $能够经过下图表示。$\mathbf{x}^B$-$\mathbf{y}^B$-$\mathbf{z}^B$为外部坐标系正交归一的三个轴(能够理解为$ |\mathbf{x}^B| = 1$,$ |\mathbf{y}^B| = 1$,$ |\mathbf{z}^B| = 1$),而 $\mathbf{x}^S$ 表示传感器x轴的放大系数(相比$\mathbf{x}^B$),$\beta_{\mathbf{x}\mathbf{y}}$ 表示x轴在x-y平面内顺时针偏离了$\beta_{\mathbf{x}\mathbf{y}}$弧度(小角度近似),其余参数同理。工具
正交偏差$\mathbf{T}^a$ 一般能够表示为 $$ \mathbf{T}^a = \begin{bmatrix} 1 & -\beta_{\mathbf{y}\mathbf{z}} & \beta_{\mathbf{z}\mathbf{y}} \ \beta_{\mathbf{x}\mathbf{z}} & 1 & -\beta_{\mathbf{z}\mathbf{x}} \ -\beta_{\mathbf{x}\mathbf{y}} & \beta_{\mathbf{y}\mathbf{x}} & 1 \ \end{bmatrix} $$ 尺度偏差$\mathbf{K}^a$ 一般能够表示为 $$ \mathbf{K}^a = \begin{bmatrix} \mathbf{x}^S & 0 & 0 \ 0 & \mathbf{y}^S & 0 \ 0 & 0 & \mathbf{z}^S \ \end{bmatrix} $$ 在忽略噪声偏差的条件下,加速度计的偏置偏差$\mathbf{b}^a$、正交偏差$\mathbf{T}^a $和尺度偏差$\mathbf{K}^a$的模型能够表示为 $$ \mathbf{a}^O = \mathbf{T}^a \mathbf{K}^a \begin{pmatrix} \mathbf{a}^S + \mathbf{b}^a \end{pmatrix} $$ 其中$\mathbf{a}^S$是加速度计的原始测量值,$\mathbf{a}^O$是加速度计偏差补偿后的值。同理,陀螺的偏差模型能够表示为 $$ \mathbf{\omega}^O = \mathbf{T}^g \mathbf{K}^g \begin{pmatrix} \mathbf{\omega}^S + \mathbf{b}^g \end{pmatrix} $$ 其中$\mathbf{\omega}^S$是陀螺的原始测量值,$\mathbf{\omega}^O$是陀螺偏差补偿后的值。性能
在看严谨的标定操做以前,看一下商用产品大疆Spark无人机的标定流程:学习
官方给的方法是在水平面上,按照图片提示六个位置静止放置片刻,即自动获得标定参数。因为重力方向和大小不变,这六个位置分别(近似)是IMU的X、-X、Y、-Y、Z和-Z朝向下的方向,所以至少能够拟合出加速度计三个轴的尺度因子、偏置以及陀螺仪的偏置。该标定方法有如下的假设测试
对于外行人这样的标定流程简洁、快捷,适合商用级产品,可是因为标定数据太少,标定偏差会较大,不利于高精度测量和导航应用,如SLAM等。优化
为了更深刻了解标定原理过程,文献A robust and easy to implement method for IMU calibration without external equipments 给出了一种更为精确的IMU标定方法,GitHub上也有相应的Matlab源代码实现,亲试可用,还有动态演示效果不错。相比商用产品的简易标定流程,该标定方法有如下几点不一样:
标定流程图:
标定首先经过Allan方差定义测试出IMU标定静止的时间T,等待T时间后,旋转IMU并静止,静止时获取加速度数据,旋转时获取陀螺数据,循环屡次后(36-50次)完成标定操做,随后算法自动完成标定。
算法首先标定加速度计,利用加速度计测量值的模和重力加速度真实g的方差构建损失函数,利用LM算法,使得最优化快速收敛,获得$\mathbf{b}^a$、$\mathbf{T}^a $和$\mathbf{K}^a$ 参数。
在标定完加速度计的基础上,标定陀螺,得到陀螺坐标相对于加速度计参考坐标的正交偏差,最后偏置和尺度偏差也能经过最优化算法求出。此处有一个处理的小技巧,利用四元数的超复数表示方法,能够经过积分的办法,方便地求出一个时序角速度产生的总的角度变化,并利用加速度计获得的角度和积分得出的角度比较,获得损失函数,并一样用LM算法求出陀螺的偏差参数。
实际标定操做和算法处理过程当中,有几点很重要。
一、和深度学习训练样本同样,IMU标定的最优化过程也须要样本的平衡性。和复杂一些的非线性最优化相似,IMU参数标定算法通常也是基于Levenberg–Marquardt参数算法的拟合算法。而旋转操做可让IMU数据(如加速度计)在三维数据空间中造成椭球形,数据均匀分布在椭球面上可以避免某一轴向的拟合权重过大,形成拟合椭球变形。
二、传感器对温度敏感(特别是陀螺仪),所以在没有温度计而且温度补偿的条件下,保证IMU的热平衡很重要。陀螺仪除了零点偏置,还有零点偏置漂移等更多偏差,所以动态调节。
三、对加速度数据积分的起点和终点很关键。因为是人为转动IMU产生的抖动比较严重,所以转动的开始和结束不是很清晰,能够经过滤波减小积分偏差。
四、标定器材配套很重要。手持式标定会引入人为振动,所以最好为IMU设计相应稳定可靠的标定装置,好比具备相似地球仪的旋转结构,而且带有刻度、有水平仪的仪器,这样可以实现垂直状态和特定角度转动。
五、利用Allan方差定义,可获得等待时间。但仍然存在问题,不一样轴陀螺的Allan方差不同,甚至可能差异很大。
六、IMU的坐标绝对基准仍是不能标定获得。
以上两种方法制做的轻量级标定工具适用于通常的研究或产品,但对于一些高性能传感器,它们自身偏差甚至小于标定参数精度,以上标定方法再也不适用。须要不少价格不菲的精密仪器去标定,即提供绝对基准。
从零开始一块儿学习SLAM | 为何要学SLAM? 从零开始一块儿学习SLAM | 学习SLAM到底须要学什么? 从零开始一块儿学习SLAM | SLAM有什么用? 从零开始一块儿学习SLAM | C++新特性要不要学? 从零开始一块儿学习SLAM | 为何要用齐次坐标? 从零开始一块儿学习SLAM | 三维空间刚体的旋转 从零开始一块儿学习SLAM | 为啥须要李群与李代数? 从零开始一块儿学习SLAM | 相机成像模型 从零开始一块儿学习SLAM | 不推公式,如何真正理解对极约束? 从零开始一块儿学习SLAM | 神奇的单应矩阵 从零开始一块儿学习SLAM | 你好,点云 从零开始一块儿学习SLAM | 给点云加个滤网 从零开始一块儿学习SLAM | 点云平滑法线估计 零基础小白,如何入门计算机视觉? SLAM领域牛人、牛实验室、牛研究成果梳理 我用MATLAB撸了一个2D LiDAR SLAM 可视化理解四元数,愿你再也不掉头发 最近一年语义SLAM有哪些表明性工做? 视觉SLAM技术综述
欢迎关注公众号:计算机视觉life,一块儿探索计算机视觉新世界~