完整的pdf格式文档51黑下载地址(共7页):
卡尔曼滤波最详细易懂的理解.pdf
(856.69 KB, 下载次数: 402)
下面是部分内容预览(个人觉得写得很好,很有用):
不好意思,由于工作繁忙和文章不好组织的原因,拖了 2 个星期才更新。这一章要系统地去解释卡尔 曼滤波,这个解释应该是网上所有文章里面写得最兼顾详细和易懂的,但是卡尔曼滤波还是一个比较系统 的工程,需要读者具备一定的耐心。
卡尔曼滤波有五个最基本的公式,我们将对其一一解读。
以上的公式看着很吓人,但我将会对其进行通俗讲解,看完会有满满收获,所以请别跑开。
没读过本公众号前两篇文章的读者最好先读一下,可以方便理解这一篇文章,公众号名称是“电子搬 砖师”,可以用微信关注阅读。本公众号前两篇文章都只是讲如何用卡尔曼滤波对单种数据进行滤波处理, 然而工程上往往有多种数据需要同时滤波处理,比如加速度传感器可以测量 3 个维度的加速度信息,这就 有 3 种信号需要做滤波处理。假设我们要对 n 种数据做卡尔曼滤波,我们应该怎么做呢?
我们可以用单种信号的卡尔曼滤波方程,连续写 n 次,然后求取每种信号各自的滤波值。但是这么多
个方程写出来会很庞大,因此我们就用矩阵的方式来描述,矩阵可以将 n 个方程组整合成一个方程,如下图所示:
图中 n 个方程组最终化简成一个矩阵表达式:AX=B,矩阵表示是不是很简洁?卡尔曼滤波的五个基本 公式中的 X,A,B,U,P,Q,Kg,H,R,Z,I 就都是矩阵,即五个公式其实是五个方程组。
这里还需要知道一个概念叫向量,向量是一维的矩阵,如下图所示:
卡尔曼滤波的五个公式中的 X,U,Z 都是一维矩阵,也就是向量。 最后还需要知道一个概念叫做矩阵转置,如下图所示:
至此我们拥有了可以理解卡尔曼滤波最基础的条件了,我们正式进入正题。 我们开始理解第一个公式:X(k|k − 1) = AX(k − 1|k − 1) + BU(k − 1)。 假设你要对飞机的欧拉角进行卡尔曼滤波,你可以用传感器先获取到一个欧拉角和角速度的初始值,
并把这个值当做上一时刻(k-1)的值,然后根据上一时刻(k-1)的值你可以估计出这一时刻(k)飞机的欧拉角为:
Pitch(k)=Pitch(k-1)+GyroY(k-1)*dt Roll(k)=Roll(k-1)+GyroX(k-1)*dt Yaw(k)=Yaw(k-1)+GyroZ(k-1)*dt
Pitch 是俯仰角,GyroY 是俯仰角对应的角速度,dt 是 k-1 到 k 的时间
Roll 是滚转角,GyroX 是滚转角对应的角速度,dt 是 k-1 到 k 的时间 Yaw 是偏航角,GyroZ 是偏航角对应的角速度,dt 是 k-1 到 k 的时间 我们想办法将上面的方程组简化成矩阵表示:
设(k|k-1)代表这一时刻根据上一时刻的估计值,(k-1|k-1)代表上一时刻卡尔曼处理得到的最优值(这 里由于才开始第一轮的滤波准备,没有上一时刻卡尔曼处理得到的最优值,就将 k-1 时刻测量到的值直接 当做最优值),(k-1)是上一时刻实测值,令:
则上面三个方程组就可以表示为X(k|k − 1) = AX(k − 1|k − 1) + BU(k − 1),请注意这里 A 与 B 不一
定要是对角线才有值的矩阵,只是在这个简单例子中是这样的。 其中:
X(k|k − 1)就是指根据上一时刻估计出这一时刻的估计值向量。
A 是上一时刻状态转移到这一时刻状态的状态转移矩阵。
X(k − 1|k − 1)是上一时刻的最优值向量,如果卡尔曼滤波是第一次执行,就不存在上一时刻处理得到 的最优值,只能推荐将传感器上次获取到的值当做最优值。
B 是控制量矩阵。
U(k − 1)是上一时刻控制量测量值向量。 至此,第一个公式已经理解。
我们开始理解第二个公式:
回到 n 种数据做卡尔曼滤波的主题。依据 k-1 时刻的值我们可以得到 k 时刻的估计值,但是这个估计 值和真实世界的值含有两种误差,一种误差是 k-1 时刻真实世界值 X(k-1)和最优值 X(K-1|K-1)之间的误差, 还有一种误差是控制量及其对时间积分造成的误差,后者误差我们用误差向量 W(k-1)表示:
至此,第二个公式已经理解。 这回特殊,我们要先理解第四个公式,后面会再回头理解第三个公式,原因后面看着看着就能明白了。
第四个公式是:X(k|k) = X(k|k − 1) + Kg(k)(Z(k) − HX(k|k − 1))
在理解第四个公式前,需要拿传感器先测量下这一时刻的值,设这一时刻传感器的测量数据向量为 Z(k)。 由于有些时候 X(k)向量中有一些元素是没法用传感器直接测量得到的,但是这个元素又可以利用传感器的 其它测量值推算出来,因而我们将这一时刻传感器的测量数据向量定义为:
Z(k) = HX(k) + V(k)
其中 H 就可以修饰 X(k)中某些元素不能通过传感器直接测量得到,通常 H 矩阵的斜对角元素是由 0 和
1 构成的,0 就代表对应元素无法用传感器直接测量,1 代表对应元素可以用传感器直接测量。V(k)向量代 表传感器测量误差,比如称重秤的误差为 10g,这 10g 就是这个 V(k)。
那这第四个公式在逻辑上就很好理解。先用这一时刻传感器的测量值减去根据上一时刻估计出来的值, 得到残差,然后用一个比例系数矩阵 Kg 乘上这个残差,再加上根据上一时刻的估计值,就可以得到这一时刻最有可能的值,也就是最优值。这个最优值既不完全相信传感器,也不完全相信估计值,只要控制好比
例系数,就能得到最适合的值。 至此,第四个公式已经理解。 我们开始理解第五个公式:P(k|k) = (I − Kg(k)H)P(k|k − 1)。
回顾下之前第二个公式中的 P(k|k-1),是代表上一时刻的估计值和此刻真实世界值的误差的方差。而
P(k|k)代表此刻计算得到的最优值和此刻真实世界值的误差的方差。
由于卡尔曼滤波是一个不断减小最优值和此刻真实世界值的误差的方差的过程,P(k|k)是最优值和此 刻真实世界值的误差的方差矩阵,其对角线元素就是各个元素各自的误差的方差。为了让所有元素的方差 最小,我们把每个元素的方差都加起来,即把 P(k|k-1)的对角元素方差加起来,求取总的方差值,只要方差 值总和最小,则就实现了最优值和此刻真实世界值的误差的方差最小化的目的。将方差矩阵对角元素相加 的做法也称为矩阵的迹,通常用 tr 表示。则:现在,这个由方差矩阵对角元素总和组成的tr,P(k|k)-函数需要取最小值,他的大小收到 Kg(k)这个权 重矩阵的影响,我们必须找到最适合的 Kg(k)使得和值最小。
数学上有导数为 0 取极值的方法,如下图所示:
(请下载附件查看)
|