VIO -- IMU拾遗

IMU最重要的两个测量数据 加速度 [公式] 和角速度 [公式] 。IMU在离散时间下获取到这两个值之后,通过积分得到连续时间下,携带IMU载体的位姿以达到定位的目的。

独立IMU

补充下最简单情况下IMU的相关计算概念。

参考深蓝的图,做适当解释。

初中物理的只是,做圆周运动的物体的速度=半径*角速度。

旋转坐标系下的运动

机器人在做定位的时候,如果是使用IMU,那就会存在两个坐标系,一个是IMU自身的坐标系(Body系),一个是世界坐标系(或者叫惯性坐标系)。机器人在运动的过程中,IMU获取的加速度角速度都是在自身的Body系下的坐标,如果要做定位自然需要求出在世界坐标系下的加速度和角速度,这样我们才能利用这两个数据积分获取最终的定位信息。

看下手推的过程,并作解释:

公式中,我们假设了Body系到惯性系的旋转矩阵 [公式] ,具体的我们会通过欧拉角来表示这个旋转矩阵。

现在来稍微总结下,利用IMU实现定位的大致思路:

首先,我们要获取IMU到世界坐标系的旋转矩阵(欧拉角表示),转换成旋转矩阵,得到IMU的测量角速度加速度(存在噪声偏差),得到惯性坐标系下的角速度和加速度,进行连续时间下的积分,获取下一时刻的PVQ(位姿)。上面的公式推导,trasition的微分(求导)= 速度, 速度的求导 = 加速度。旋转的求导 = 角速度。这么理解就行了。

接下来具体分析每一步骤的细节


IMU的噪声与偏差

IMU有随机误差和确定误差两种,确定误差可以通过标定设定,分别是Bias和scale。

scale 可以看成是实际数值和传感器输出值之间的比值。 当没有外部作用时,IMU 传感器的输出应该为 0。但是,实 际数据存在一个偏置 bias。 单具体使用中海没有注意到有用这个bias。

随机误差包括高斯白噪声,bias 随机游走 。

通常,IMU水平放置的时候还需要考虑一个重力G的作用,所以结合以上噪声,直接给出IMU的噪声模型。

理解了加速度计的模型,陀螺仪也就很好理解了,并且我们可以看到陀螺仪对角速度是不存在两个坐标系之间的旋转变化的。

旋转矩阵(欧拉角表示),转换成旋转矩阵

推导比较麻烦,直接公式吧。一般我们对于陀螺仪都用ENU东北天坐标系,所以相对的欧拉角

上图对应的轴就是(x, y, z)。但是这个欧拉角是世界坐标系的值。所以经过以下三次旋转就能得到在

连续时间下的积分

在看下如何通过a和w获取得到下一时刻的位姿。

如上图,一般我们获取到的最终位姿就是PVQ表示的,而PVQ是通过a和w来计算。具体公式如下:

根据之前的IMU测量模型,可以通过积分,得到[k,k+1]时刻的位姿,公式如下:

具体计算积分的时候,有两种算法,欧拉法和中值法。

先把上面的公式稍加简化:

现在就是通过欧拉或中值法来计算aj和wj了。

欧拉:

中值:

在积分之后位姿的真实性上,中值要准确点,不过算法实现稍微复杂。