模拟技术
正如前文所说,卡尔曼滤波器的建模形式多种多样,而且很多研究也是在上世纪,对于误差状态卡尔曼滤波(Error-state Kalman Filter)和互补卡尔曼滤波(Comlimentary Kalman Filter)其实没有严格的定义。这里的互补卡尔曼滤波其实也可以看成上文ErKF的另一种形式。主要采用自论文Inertial head-tracker sensor fusion by a complementary separate-bias Kalman filter。卡尔曼滤波的工作太多,博客和论文也五花八门,看起来十分不易。这篇论文从引用、论文叙述、符号标识看起来都很不错,很适合想要将卡尔曼滤波应用到姿态估计的工程师阅读。甚至有一些工作,直接使用普通卡尔曼滤波输出,然后利用互补滤波器的概念,在多种姿态输出之间做加权平均,也叫互补卡尔曼滤波器,比如这篇专利:一种基于互补卡尔曼滤波算法计算融合姿态角度的方法
其实只要有了角速度计(Gyroscope)我们就可以根据其输出,并在时间上做积分解算出车辆的姿态角。但是由于任何传感器都是带噪声的,同时,直接用积分解算,误差会随机时间推移而累积,最终的姿态解算精度就非常差。除了使用角速度计进行积分可以得到姿态角之外,用加速度计(Accelerometer)和磁力计(Magnatometer)也可以计算出动态系统的姿态。其中,加速度计使用重力加速度作为锚定量,测量静止状态下三轴加速度之间的夹角,可以计算出角;磁力计(或叫地磁计)利用地球磁场北极作为锚定量,可以计算出角。使用这两者对角速度计进行补充,可以得出更加准确的姿态估计。
加速度计(Accelerometer)可以输出三个轴的加速度,在静止的情况下,三个轴的合向量就是重力加速度。因此,我们可以利用三个轴加速度之间的关系计算静止状态下的俯仰角(pitch)和翻滚角(roll)
关于如何推导从三个轴的加速度计算roll和pitch,可以看这篇文章
最后得出的形式也非常简单:
磁力计的三轴合向量会指向地磁北极,利用这一特性,可以从磁力计的输出获得与地磁北极的偏转角。利用这一点,可以计算出相对于起始位置的角
具体的计算公式可以看这篇博客
从加速度计可以计算出roll角和pitch角,因此,可以将这个结果和角速度的积分结果结合起来,得到一个更好的估计姿态。不过要注意的是,从加速度计算的姿态弥补有两个局限:
互补滤波器使用角速度的积分结果和加速度与磁力计的计算结果进行插值,得到更好的结果
其中,是对角速度积分得出的姿态(用四元素表达);是使用加速度计和磁力计计算出的姿态。
互补卡尔曼滤波器将姿态角的误差、角速度的误差当作状态向量;并利用其余传感器如加速度计和磁力计计算出的姿态角与估计的姿态角之间的差作为测量量。通过以下步骤得到系统的姿态角:
状态向量
其中是系统的角;是三轴角速度。
测量向量
其中,是使用加速度计和磁力计计算出的系统角
我们可以推导出姿态角对于时间的导数,通常这个导数是姿态角和角速度的函数,即
从公式(4-1)的推导过程,以及泰勒展开,我们可以得到的递推公式
我们直接假设角速度的误差是一个常量误差,即
则我们可以将上面两式写成矩阵形式
有了上面状态方程和测量方程的推导,剩下的就是按照公式(4-3)到公式(4-10)的过程代入。这里唯一不同的就是卡尔曼滤波输出的向量是角速度的误差和姿态的误差。在计算姿态的时候先将角速度的误差应用到角速度计的数据,对角度积分,将角度的误差应用到角度积分结果,得到最终的角度输出。整个框架如下图
[1] Roll and Pitch Angles From Accelerometer Sensors
[2] 四元数、欧拉角、旋转矩阵转换
[3] 四元素乘积求导
[4] 一种基于互补卡尔曼滤波算法计算融合姿态角度的方法
[5] Inertial head-tracker sensor fusion by a complementary separate-bias Kalman filter
[6] Extended Kalman Filter vs. Error State Kalman Filter for Aircraft Attitude Estimation
[7] Kalman Filter的原始论文
[8] 卡尔曼滤波基础知识及公式推导
卡尔曼滤波的变种有哪些?1
全部0条评论
快来发表一下你的评论吧 !