鄙人最近测量调试直立平衡车的姿态角度时,用到了卡尔曼滤波算法。本着知其然还需知其所以然的学习精神,在网上阅览了很多关于滤波原理及算法应用的文章,加上自己的调试经验,有了一点小小的心得,现在分享给大家。疑惑不当之处,欢迎讨论批评。首发于CSDN:http://blog.csdn.net/qq_32666555。转载请注明作者及出处,谢谢!
首先介绍我的方案背景。我用了惯性测量组合元件(Inertial Measurement Uint,IMU),两轴ENC-03MB陀螺仪及两轴MMA7361加速度计,其中一轴陀螺仪应用在方向测量上,所以不在讨论范围内,测量零点等拓展内容也不在本次讨论范围内。而另一轴陀螺仪测得的角速度作为卡尔曼滤波函数的一个输入变量,两轴加速度计测得的角度之差乘上角度量比例作为卡尔曼滤波函数的另一输入变量。
下面,我们以“是什么,为何用,怎么用”的顺序来介绍直立平衡车的姿态测量滤波算法原理与应用。因此,先介绍滤波算法的原理。在介绍卡尔曼滤波之前,我们可以先以互补滤波作为敲门石。而介绍互补滤波,就不得不提大名鼎鼎的MIT经典PPT《The Balance Filter》。鄙人亲自翻译了这个牛文,在此附上链接:
《The Balance Filter》互补滤波器--MIT著名牛文翻译(上)
《The Balance Filter》互补滤波器--MIT著名牛文翻译(下)
简单浏览这篇文章,在初步了解了两种传感器工作原理、权重分配、误差漂移、互补滤波等后,我们理解卡尔曼滤波会简单些。
卡尔曼滤波,于我理解,是只需要k-1时刻两参数的协方差估算出k时刻最优解,并算出k时刻协方差进行递归,算出k+1,k+2…时刻的最优解。因此它是个快速而智慧的算法。知乎上有很多通俗科学的解释,我贴出一个问题链接,里面那些高赞同回答个人觉得都不错:https://www.zhihu.com/question/23971601
那为何用卡尔曼滤波算法呢?