欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kalman滤波学习笔记一《绪论》

程序员文章站 2022-03-05 16:24:00
...

Kalman滤波学习笔记一《绪论》

学习笔记参考:《Kalman滤波基础及MATLAB仿真》北京航空航天大学出版社——王可东编著

1、任何传感器都存在确定性随机测量误差
2、两种获取物体状态的方法:积分推算法直接测量法,前者的误差随工作时间发散
3、误差分为确定性误差随机误差,前者可以完全补偿,后者不可以,且只能从统计意义上认识;
4、估计的定义:基于测量结果,按照状态与其测量值之间的内在关系,确定状态统计量的过程;
5、估计的分类:预测滤波平滑;预测的精度最低,平滑的精度最高,滤波的精度介于两者之间
6、预测:利用从初始时刻到当前时刻的所有测量结果,对未来某一时刻的状态进行估计的过程;
7、滤波:利用从初始时刻到当前时刻的所有测量结果,对当前时刻的状态进行估计的过程;
8、平滑:利用从初始时刻到当前时刻的所有测量结果,对过往某一时刻的状态进行估计的过程;
9、最优估计的定义:基于对状态的多个测量结果,按照某种最优准则,实现对状态的估计;
10、一个小例子:设对某一常量 xx 进行两次独立无偏测量,试基于这两次测量结果给出对常量 xx 的线性、无偏和最小方差的估计结果:
    解:设两次测量值 z1,z2z_1,z_2 分别为:{z1=x+v1z2=x+v2\begin{cases} z_1 = x + v_1\\ z_2 = x + v_2 \end{cases}         式中,v1,v2v_1,v_2 分别为两次测量的误差。由于两次测量都是无偏的,即 E(z1)=E(z2)=E(x)E(z_1) = E(z_2) = E(x),又 xx 为常量,故 E(x)=xE(x) = x,可得         E(v1)=E(v2)=0E(v_1) = E(v_2) = 0;同时,设:{E(v12)=σ12E(v22)=σ22\begin{cases} E(v_1^{2}) = \sigma_1^{2}\\ E(v_2^{2}) = \sigma_2^{2} \end{cases}        又因为两次测量是独立的,即两次测量误差之间是不相关的,故有 E(v1v2)=0E(v_1v_2) = 0。设 xx 的估计值 x^\hat{x},按照线性假设,有:x^=k1z1+k2z2\hat{x} = k_1z_1 + k_2z_2        式中,k1,k2k_1,k_2 为待定的线性加权系数。估计偏差为 x~=x^x\tilde{x} = \hat{x} - x,基于无偏估计要求,有:E[x~]=E[k1(x+v1)+k2(x+v2)x]=(k1+k21)E(x)=(k1+k21)x=0E\lbrack \tilde{x} \rbrack = E\lbrack k_1(x+v_1)+k_2(x+v_2)-x \rbrack = (k_1+k_2-1)E(x)=(k_1+k_2-1)x=0        可得:k1+k21=0k_1 + k_2-1=0        再考虑到估计偏差的方差最小,有:E[x~2]=k12σ12+(1k1)2σ22E\lbrack \tilde{x}^{2} \rbrack = k_1^{2}\sigma_1^{2}+(1-k_1)^{2}\sigma_2^{2}        上式通过对 k1k_1 求导可知最小均方估计误差为:E(x~2)min=(1σ12+1σ22)1E(\tilde{x}^{2})_{min} = (\frac {1} {\sigma_1^{2}}+\frac {1} {\sigma_2^{2}})^{-1} x~=(σ22σ12+σ22)z1+(σ12σ12+σ22)z2\tilde{x} = (\frac {\sigma_2^{2}} {\sigma_1^{2}+\sigma_2^{2}})z_1+(\frac {\sigma_1^{2}} {\sigma_1^{2}+\sigma_2^{2}})z_2

        可以看到分配给测量精度高的值更大的权重,这也是符合常理的;
11、最优估计的一般过程:
       ①基于事物自身的某种规律,建立状态随时间的变化关系,称为“系统建模”;
       ②建立测量值与状态之间的变化关系,称为“量测建模”;
       ③对误差进行建模,其中包括系统误差测量误差
       ④基于某种最优准则构建最优估计算法
12、小例子的MATLAB实现:设一辆汽车在一条公路上匀速直线行驶,速度为 30m/s30m/s。车上安装了BDS接收机,其测速误差是均值为 00、标准差为 0.1m/s0.1m/s 的高斯噪声;同时,车载测速仪的测速误差为均值为 00、标准差为 0.5m/s0.5m/s 的高斯噪声。试利用这两个车速测量结果,针对车速,设计一线性、无偏和估计偏差方差最小的估计算法,并画出其在 100s100s 之内的速度估计偏差。

Kalman滤波学习笔记一《绪论》
Kalman滤波学习笔记一《绪论》

MATLAB代码如下

clear all; close all;
N = 100;    %运行时间
x = 30 * ones(N,1);    %被估计对象
sigma1 = 0.1; sigma2 = 0.5;    %噪声方差
v1 = sigma1 * randn(N,1); v2 = sigma2 * randn(N,1);    %模拟正态分布的白噪声
z1 = x + v1; z2 = x + v2;    %发生测量值
w1 = sigma1^2/(sigma1^2 + sigma2^2);
w2 = sigma2^2/(sigma1^2 + sigma2^2);
x_est = w1 * z2 + w2 * z1;
figure(1)
plot(1:N,x_est,'k*-',1:N,x,'k',1:N,z1,'ks-',1:N, z2,'ko-');
legend('估计值','真值','测量值1','测量值2');
xlabel('时间(s)');ylabel('速度(m/s)')
figure(2)
plot(1:N,x_est-x,'k*-',1:N,v1,'k',1:N,v2,'ko-');
legend('估计误差','测量误差1','测量误差2')
xlabel('时间(s)');ylabel('速度误差(m/s)')