1 前言
-
公式推导也采用和之前一样的类比方法
-
传统的高斯分布用均值 μ \mu μ和方差 Σ \Sigma Σ表示,而信息滤波的高斯分布用信息向量 ξ \xi ξ和信息矩阵 Ω \Omega Ω表示, 详细介绍见信息滤波
Ω = Σ − 1 ξ = Σ − 1 μ ⇒ Σ = Ω − 1 μ = Ω − 1 ξ 注:方差信息矩阵 Σ 也叫做不确定度矩阵;信息矩阵 Ω 也叫做精确度矩阵 \begin{aligned} \Omega &= \Sigma^{-1}\\ \xi &= \Sigma^{-1} \mu \end{aligned} \Rightarrow \begin{aligned} \Sigma &= \Omega^{-1}\\ \mu&= \Omega^{-1} \xi \end{aligned}\\ \text{注:方差信息矩阵$\Sigma$也叫做不确定度矩阵;信息矩阵$\Omega$也叫做精确度矩阵} Ωξ=Σ−1=Σ−1μ⇒Σμ=Ω−1=Ω−1ξ注:方差信息矩阵Σ也叫做不确定度矩阵;信息矩阵Ω也叫做精确度矩阵 -
扩展信息滤波和扩展卡尔曼滤波一样,都是用在非线性状态转移函数和非线性测量函数中
x t = g ( u t , x t − 1 ) + ϵ t z t = h ( x t ) + δ t x_t = g(u_t, x_{t-1}) + \epsilon_t\\ z_t = h(x_t) + \delta_t xt=g(ut,xt−1)+ϵtzt=h(xt)+δt
2 扩展信息滤波算法
-
扩展信息滤波算法
-
从算法中可以看出和前面介绍的几种滤波方法类似:均由预测和测量更新组成
3 实例
- 这里采用扩展卡尔曼滤波的实例:
- 实例:雷达监测空中抛物轨迹
- 从空中位置 ( x ( 0 ) = 0 , y ( 0 ) = 500 ) (x(0)=0,y(0)=500) (x(0)=0,y(0)=500)水平抛射出一个物体(初始水平速度为 v x ( 0 ) = 50 v_x(0)=50 vx(0)=50,初始竖直速度为 v y ( 0 ) = 0 v_y(0)=0 vy(0)=0)
- 物体受重力 g = 9.8 g=9.8 g=9.8和阻尼力(与速度的平方成正比)的影响
- 水平和竖直阻尼系数分别为 k x = 0.01 , k y = 0.05 k_x=0.01,k_y=0.05 kx=0.01,ky=0.05,不确定度为零均值白噪声 δ a x ∼ N ( 0 , 0.09 ) ∼ N ( ξ = 0 , Ω = 1 / 0.09 ) , δ a y ∼ N ( 0 , 0.09 ) ∼ N ( ξ = 0 , Ω = 1 / 0.09 ) \delta a_x \sim N(0, 0.09)\sim N(\xi=0, \Omega = 1/0.09), \delta a_y \sim N(0, 0.09)\sim N(\xi=0, \Omega = 1/0.09) δax∼N(0,0.09)∼N(ξ=0,Ω=1/0.09),δay∼N(0,0.09)∼N(ξ=0,Ω=1/0.09)
- 在坐标原点处有一雷达,可测得距离 r r r,角度 α \alpha α, 不确定度为零均值白噪声 δ r ∼ N ( 0 , 64 ) ∼ N ( ξ = 0 , Ω = 1 / 64 ) , δ α ∼ N ( 0 , 0.01 ) ∼ N ( ξ = 0 , Ω = 1 / 0.01 ) \delta r \sim N(0, 64)\sim N(\xi=0, \Omega = 1/64),\delta \alpha \sim N(0, 0.01)\sim N(\xi=0, \Omega = 1/0.01) δr∼N(0,64)∼N(ξ=0,Ω=1/64),δα∼N(0,0.01)∼N(ξ=0,Ω=1/0.01)
-
状态变量: 物体横向位置 x ( k ) x(k) x(k),物体横向速度 v x ( k ) v_x(k) vx(k),物体纵向位置 y ( k ) y(k) y(k),物体纵向速度 v y ( k ) v_y(k) vy(k)
X ( k ) = [ x ( k ) , v x ( k ) , y ( k ) , v y ( k ) ] X(k) = [x(k), v_x(k), y(k), v_y(k)] X(k)=[x(k),vx(k),y(k),vy(k)] -
状态方程:
x ( k + 1 ) = x ( k ) + v x ( k ) ⋅ T v x ( k + 1 ) = v x ( k ) − ( k x ⋅ v x 2 ( k ) + δ a x ) ⋅ T y ( k + 1 ) = y ( k ) + v y ( k ) ⋅ T v y ( k + 1 ) = v y ( k ) + ( k y ⋅ v y 2 ( k ) − g + δ a y ) ⋅ T \begin{aligned} x(k+1) &= x(k) + v_x(k) \cdot T\\ v_x(k+1) &= v_x(k) - (k_x \cdot v_x^2(k) + \delta a_x)\cdot T\\ y(k+1) &= y(k) + v_y(k) \cdot T \\ v_y(k+1) &= v_y(k) + (k_y \cdot v_y^2(k) - g + \delta a_y)\cdot T \end{aligned} x(k+1)vx(k+1)y(k+1)vy(k+1)=x(k)+vx(k)⋅T=vx(k)−(kx⋅vx2(k)+δax)⋅T=y(k)+vy(k)⋅T=vy(k)+(ky⋅vy2(k)−g+δay)⋅T -
观测方程:
r ( k ) = x ( k ) 2 + y ( k ) 2 + δ r α ( k ) = arctan x ( k ) y ( k ) + δ α \begin{aligned} r(k) &= \sqrt{x(k)^2 + y(k)^2 } + \delta r\\ \alpha(k) &= \arctan{\frac{x(k)}{y(k)}} + \delta \alpha\\ \end{aligned} r(k)α(k)=x(k)2+y(k)2+δr=arctany(k)x(k)+δα -
雅克比矩阵: G t \text{雅克比矩阵:} G_t 雅克比矩阵:Gt
G t = [ 1 T 0 0 0 1 − 2 k x v x T 0 0 0 0 1 T 0 0 0 1 + 2 k y v y T ] x t − 1 = μ t − 1 G_t = \begin{bmatrix} 1& T& 0& 0 \\ 0& 1 - 2k_x v_xT& 0& 0\\ 0& 0& 1& T \\ 0& 0& 0& 1 + 2k_y v_yT\\ \end{bmatrix}_{x_{t-1}=\mu_{t-1}} Gt= 1000T1−2kxvxT00001000T1+2kyvyT xt−1=μt−1 -
雅克比矩阵: H t \text{雅克比矩阵:} H_t 雅克比矩阵:Ht
H t = [ x r 0 y r 0 1 / y 1 + ( x / y ) 2 0 − x / y 2 1 + ( x / y ) 2 0 ] x t = μ ˉ t H_t = \begin{bmatrix} \frac{x}{r}& 0& \frac{y}{r}& 0 \\ \frac{1/y}{1+(x/y)^2}& 0& \frac{-x/y^2}{1+(x/y)^2}& 0 \\ \end{bmatrix}_{x_t = \bar{\mu}_{t}} Ht=[rx1+(x/y)21/y00ry1+(x/y)2−x/y200]xt=μˉt -
仿真时间总为 t = 15 t=15 t=15,采样周期 T = 0.1 T=0.1 T=0.1, 滤波效果如图:
- matlab 代码
clear;
close all;
clc
%% 初值设定
x_0 = 0; %初始x位置
y_0 = 500; %初始y位置
v_x_0 = 50; %初始x速度
v_y_0 = 0; %初始y速度
g = 9.8; % 重力加速度
k_x = 0.01; % 阻尼系数
k_y = 0.05; % 阻尼系数
omega_a_x = 1 / 0.09; % 状态转移不确定度方差
omega_a_y = 1 / 0.09; % 状态转移不确定度方差
omega_r = 1 / 64; % 测量不确定度方差
omega_alpha = 1 / 0.01; % 测量不确定度方差
t = 15; % 仿真时间
T = 0.1; % 采样周期
len = fix(t/T); % 仿真步数
%% 真实轨迹
X = zeros(len, 4);
X(1,:) = [x_0, v_x_0, y_0, v_y_0];
for k = 2 : len
x_k = X(k-1,1);
v_x_k = X(k-1,2);
y_k = X(k-1,3);
v_y_k = X(k-1,4);
x_k = x_k + v_x_k * T;
v_x_k = v_x_k - (k_x*v_x_k^2 + sqrt(1 / omega_a_x)*randn(1,1)) * T;
y_k = y_k + v_y_k * T;
v_y_k = v_y_k + (k_y*v_y_k^2 - g + sqrt(1 / omega_a_y)*randn(1,1)) * T;
X(k,:) = [x_k, v_x_k, y_k, v_y_k];
end
X_temp = X;
%% 雷达测量
Z = zeros(len, 2);
for k = 1 : len
x_k = X(k,1);
y_k = X(k,3);
r = sqrt(x_k^2 + y_k^2) + sqrt(1 / omega_r)*randn(1,1);
alpha = atan(x_k / y_k) * 180 / pi + sqrt(1 / omega_alpha)*randn(1,1);
Z(k,:) = [r, alpha];
end
%% EIF 扩展信息滤波
R_k = diag([0; 1/omega_a_x; 0; 1/omega_a_y]); % 状态转移误差的协方差矩阵
Q_k = diag([1 / omega_r, 1 / omega_alpha]); % 测量函数误差的协方差矩阵
omega_k = 0.1 * eye(4); % 最优状态协方差矩阵
omega_bar_k= 0.1 * eye(4); % 预测状态协方差矩阵
xi_k = [0, 4, 40, 0]'; % 最优状态均值矩阵
z_k = zeros(4,1); % 观测矩阵
X_est = zeros(len,4); %EKF后的状态存储
for k = 1 : len
% 1 状态预测
mu_k = omega_k^(-1) * xi_k;
x1 = mu_k(1) + mu_k(2)*T;
v_x1 = mu_k(2) - (k_x*mu_k(2)^2)*T;
y1 = mu_k(3) + mu_k(4)*T;
v_y1 = mu_k(4) + (k_y*mu_k(4)^2 - g)*T;
G_k = zeros(4,4); % 状态雅可比矩阵
G_k(1,1) = 1; G_k(1,2) = T;
G_k(2,2) = 1 - 2*k_x*v_x1*T;
G_k(3,3) = 1; G_k(3,4) = T;
G_k(4,4) = 1 + 2*k_y*v_y1*T;
omega_bar_k = (G_k * omega_k^(-1) * G_k' + R_k)^(-1);
mu_bar_k = [x1; v_x1; y1; v_y1]; % 预测的均值
xi_bar_k = omega_bar_k * mu_bar_k;
% 2 观测更新
r = sqrt(x1*x1+y1*y1);
alpha = atan(x1/y1)*180/pi;
z_k = [r, alpha]'; % h(\bar{\mu}_t)
H_k = zeros(2,4); % 状态雅可比矩阵
x = mu_k(1); y = mu_k(3);
H_k(1,1) = x / r; H_k(1,3) = y / r;
H_k(2,1) = (1/y)/(1 + (x/y)^2); H_k(2,3) = (-x/(y^2))/(1 + (x/y)^2);
omega_k = omega_bar_k + H_k'*(Q_k^(-1))*H_k;
xi_k = xi_bar_k + H_k'*(Q_k^(-1))*(Z(k,:)' - z_k + H_k*mu_bar_k);
% 3 存储EKF后的值
X_est(k,:) = omega_k^(-1) * xi_k;
end
%% 绘图
figure, hold on, grid on;
plot(X(:,1),X(:,3),'-g'); %真实位置
plot(Z(:,1).*sin(Z(:,2)*pi/180), Z(:,1).*cos(Z(:,2)*pi/180),'-b'); %观测位置
plot(X_est(:,1),X_est(:,3), 'r'); %最优位置
xlabel('X');
ylabel('Y');
title('EKF simulation');
legend('real', 'measurement', 'ekf estimated');
axis([-5,230,290,530]);
4 公式推导
- 下面给出扩展卡尔曼滤波、扩展信息滤波主要公式:
扩展卡尔曼滤波: Step 1: 预测 { μ ˉ t = g ( u t , μ t − 1 ) Σ ˉ t = G t Σ t − 1 G t T + R t Step 2: 测量更新 { K t = Σ ˉ t H t T ( H t Σ ˉ t H t T + Q t ) − 1 μ t = μ ˉ t + K t ( z t − h ( μ ˉ t ) ) Σ t = ( I − K t H t ) Σ ˉ t ⇓ 扩展信息滤波: Step 1: 预测 { μ t − 1 = Ω t − 1 − 1 ξ t − 1 Ω ˉ t = ( G t Σ t − 1 G t T + R t ) − 1 ξ ˉ t = Ω ˉ t g ( u t , μ t − 1 ) Step 2: 测量更新 { μ ˉ t = g ( u t , μ t − 1 ) Ω t = Ω ˉ t + H t T Q t − 1 H t ξ t = ξ ˉ t + H t T Q t − 1 ( z t − h ( μ ˉ t ) + H t μ ˉ t ) \text{扩展卡尔曼滤波:} \begin{aligned} &\text{Step 1: 预测}\left\{\begin{matrix} &\bar{\mu}_t &= &g(u_t, \mu_{t-1})\\ &\bar{\Sigma}_t &= &G_t\Sigma_{t-1} G_t^T+R_t \end{matrix}\right.\\ &\text{Step 2: 测量更新}\left\{\begin{matrix} &K_t &= &\bar{\Sigma}_t H_t^T(H_t \bar{\Sigma}_t H_t^T + Q_t)^{-1} \\ &\mu_t &= &\bar{\mu}_t + K_t(z_t - h(\bar{\mu}_{t}))\\ &\Sigma_t &= &(I - K_tH_t)\bar{\Sigma}_t \end{matrix}\right. \end{aligned}\\ \Downarrow\\ \text{扩展信息滤波:} \begin{aligned} &\text{Step 1: 预测}\left\{\begin{matrix} &\mu_{t-1} &= & \Omega_{t-1}^{-1} \xi_{t-1}\\ &\bar{\Omega}_t &= & (G_t\Sigma_{t-1} G_t^T+R_t)^{-1}\\ &\bar{\xi}_t &= &\bar{\Omega}_tg(u_t, \mu_{t-1})\\ \end{matrix}\right.\\ &\text{Step 2: 测量更新}\left\{\begin{matrix} &\bar{\mu}_t &= &g(u_t, \mu_{t-1})\\ &\Omega_t &= &\bar{\Omega}_t + H_t^T Q_t^{-1} H_t \\ &\xi_t &= &\bar{\xi}_t + H_t^T Q_t^{-1} (z_t - h(\bar{\mu}_{t}) + H_t \bar{\mu}_{t})\\ \end{matrix}\right. \end{aligned} 扩展卡尔曼滤波:Step 1: 预测{μˉtΣˉt==g(ut,μt−1)GtΣt−1GtT+RtStep 2: 测量更新⎩ ⎨ ⎧KtμtΣt===ΣˉtHtT(HtΣˉtHtT+Qt)−1μˉt+Kt(zt−h(μˉt))(I−KtHt)Σˉt⇓扩展信息滤波:Step 1: 预测⎩ ⎨ ⎧μt−1Ωˉtξˉt===Ωt−1−1ξt−1(GtΣt−1GtT+Rt)−1Ωˉtg(ut,μt−1)Step 2: 测量更新⎩ ⎨ ⎧μˉtΩtξt===g(ut,μt−1)Ωˉt+HtTQt−1Htξˉt+HtTQt−1(zt−h(μˉt)+Htμˉt) - 需要的替换公式:
Ω = Σ − 1 ξ = Σ − 1 μ ⇔ Σ = Ω − 1 μ = Ω − 1 ξ ↓ Ω ˉ t = Σ ˉ t − 1 ξ ˉ t = Σ ˉ t − 1 μ ˉ t ⇔ Σ ˉ t = Ω ˉ t − 1 μ ˉ t = Ω ˉ t − 1 ξ ˉ t Ω t − 1 = Σ t − 1 − 1 ξ t − 1 = Σ t − 1 − 1 μ t − 1 ⇔ Σ t − 1 = Ω t − 1 − 1 μ t − 1 = Ω t − 1 − 1 ξ t − 1 Ω t = Σ t − 1 ξ t = Σ t − 1 μ t ⇔ Σ t = Ω t − 1 μ t = Ω t − 1 ξ t \begin{aligned} \Omega &= \Sigma^{-1}\\ \xi &= \Sigma^{-1} \mu \end{aligned} \Leftrightarrow \begin{aligned} \Sigma &= \Omega^{-1}\\ \mu&= \Omega^{-1} \xi \end{aligned}\\ \downarrow\\ \begin{aligned} \bar{\Omega}_{t} &= \bar{\Sigma}_{t}^{-1}\\ \bar{\xi}_{t} &= \bar{\Sigma}_{t}^{-1} \bar{\mu}_{t} \end{aligned} \Leftrightarrow \begin{aligned} \bar{\Sigma}_{t} &= \bar{\Omega}_{t}^{-1}\\ \bar{\mu}_{t} &= \bar{\Omega}_{t}^{-1} \bar{\xi }_{t} \end{aligned}\\ \begin{aligned} \Omega_{t-1} &= \Sigma_{t-1}^{-1}\\ \xi_{t-1} &= \Sigma_{t-1}^{-1} \mu_{t-1} \end{aligned} \Leftrightarrow \begin{aligned} \Sigma_{t-1} &= \Omega_{t-1}^{-1}\\ \mu_{t-1} &= \Omega_{t-1}^{-1} \xi_{t-1} \end{aligned}\\ \begin{aligned} \Omega_{t} &= \Sigma_{t}^{-1}\\ \xi_{t} &= \Sigma_{t}^{-1} \mu_{t} \end{aligned} \Leftrightarrow \begin{aligned} \Sigma_{t} &= \Omega_{t}^{-1}\\ \mu_{t} &= \Omega_{t}^{-1} \xi_{t} \end{aligned} Ωξ=Σ−1=Σ−1μ⇔Σμ=Ω−1=Ω−1ξ↓Ωˉtξˉt=Σˉt−1=Σˉt−1μˉt⇔Σˉtμˉt=Ωˉt−1=Ωˉt−1ξˉtΩt−1ξt−1=Σt−1−1=Σt−1−1μt−1⇔Σt−1μt−1=Ωt−1−1=Ωt−1−1ξt−1Ωtξt=Σt−1=Σt−1μt⇔Σtμt=Ωt−1=Ωt−1ξt
4.1 预测公式推导
- line 2: 这个不用推导,替换公式里有
μ t − 1 = Ω t − 1 − 1 ξ t − 1 \mu_{t-1} = \Omega_{t-1}^{-1} \xi_{t-1} μt−1=Ωt−1−1ξt−1 - line 3:
Ω ˉ t = Σ ˉ t − 1 ↓ Ω ˉ t = ( G t Σ t − 1 G t T + R t ) − 1 ↓ Ω ˉ t = ( G t Ω t − 1 − 1 G t T + R t ) − 1 \bar{\Omega}_{t} = \bar{\Sigma}_{t}^{-1}\\ \downarrow\\ \bar{\Omega}_{t} = (G_t\Sigma_{t-1} G_t^T+R_t)^{-1}\\ \downarrow\\ \bar{\Omega}_{t} = (G_t \Omega_{t-1}^{-1} G_t^T+R_t)^{-1} Ωˉt=Σˉt−1↓Ωˉt=(GtΣt−1GtT+Rt)−1↓Ωˉt=(GtΩt−1−1GtT+Rt)−1 - line 4:
ξ ˉ t = Σ ˉ t − 1 μ ˉ t Σ ˉ t − 1 = Ω ˉ t ↓ μ ˉ t = g ( u t , μ t − 1 ) ξ ˉ t = Ω ˉ t g ( u t , μ t − 1 ) \bar{\xi}_{t} = \bar{\Sigma}_{t}^{-1} \bar{\mu}_{t}\\ \bar{\Sigma}_{t}^{-1} = \bar{\Omega}_{t} \downarrow \bar{\mu}_{t} = g(u_t, \mu_{t-1})\\ \bar{\xi}_{t} = \bar{\Omega}_{t} g(u_t, \mu_{t-1}) ξˉt=Σˉt−1μˉtΣˉt−1=Ωˉt↓μˉt=g(ut,μt−1)ξˉt=Ωˉtg(ut,μt−1) - 综上:
Step 1: 预测 { μ t − 1 = Ω t − 1 − 1 ξ t − 1 Ω ˉ t = ( G t Σ t − 1 G t T + R t ) − 1 ξ ˉ t = Ω ˉ t g ( u t , μ t − 1 ) \text{Step 1: 预测}\left\{\begin{matrix} &\mu_{t-1} &= & \Omega_{t-1}^{-1} \xi_{t-1}\\ &\bar{\Omega}_t &= & (G_t\Sigma_{t-1} G_t^T+R_t)^{-1}\\ &\bar{\xi}_t &= &\bar{\Omega}_tg(u_t, \mu_{t-1})\\ \end{matrix}\right. Step 1: 预测⎩ ⎨ ⎧μt−1Ωˉtξˉt===Ωt−1−1ξt−1(GtΣt−1GtT+Rt)−1Ωˉtg(ut,μt−1)
4.2 测量更新公式推导
- 在推导卡尔曼滤波时,得到与测量更新步骤等价的公式,类比出扩展卡尔曼滤波的等价公式,用这个等价的公式推导扩展信息滤波
{ K t = Σ t C t T Q t − 1 μ t = μ ˉ t + K t ( z t − C t μ ˉ t ) Σ t = ( C t T Q t − 1 C t + Σ ˉ t − 1 ) − 1 ⇔ { K t = Σ ˉ t C t T ( C t Σ ˉ t C t T + Q t ) − 1 μ t = μ ˉ t + K t ( z t − C t μ ˉ t ) Σ t = ( I − K t C t ) Σ ˉ t ↓ { K t = Σ t H t T Q t − 1 μ t = μ ˉ t + K t ( z t − h ( μ ˉ t ) ) Σ t = ( H t T Q t − 1 H t + Σ ˉ t − 1 ) − 1 ⇔ { K t = Σ ˉ t H t T ( H t Σ ˉ t H t T + Q t ) − 1 μ t = μ ˉ t + K t ( z t − h ( μ ˉ t ) ) Σ t = ( I − K t H t ) Σ ˉ t \left\{\begin{matrix} &K_t&=&\Sigma_t C_t^TQ_t^{-1}\\ &\mu_t &= &\bar{\mu}_t + K_t(z_t - C_t\bar{\mu}_t)\\ &\Sigma_t &= &(C_t^TQ_t^{-1}C_t + \bar{\Sigma}_t^{-1})^{-1} \end{matrix}\right. \Leftrightarrow \left\{\begin{matrix} &K_t &=&\bar{\Sigma}_t C_t^T(C_t \bar{\Sigma}_t C_t^T + Q_t)^{-1}\\ &\mu_t &=&\bar{\mu}_t + K_t(z_t - C_t\bar{\mu}_t)\\ &\Sigma_t &=&(I - K_tC_t)\bar{\Sigma}_t \end{matrix}\right.\\ \downarrow\\ \left\{\begin{matrix} &K_t&=&\Sigma_t H_t^TQ_t^{-1}\\ &\mu_t &= &\bar{\mu}_t + K_t(z_t - h(\bar{\mu}_{t}))\\ &\Sigma_t &= &(H_t^TQ_t^{-1}H_t + \bar{\Sigma}_t^{-1})^{-1} \end{matrix}\right. \Leftrightarrow \left\{\begin{matrix} &K_t &= &\bar{\Sigma}_t H_t^T(H_t \bar{\Sigma}_t H_t^T + Q_t)^{-1} \\ &\mu_t &= &\bar{\mu}_t + K_t(z_t - h(\bar{\mu}_{t}))\\ &\Sigma_t &= &(I - K_tH_t)\bar{\Sigma}_t \end{matrix}\right. ⎩ ⎨ ⎧KtμtΣt===ΣtCtTQt−1μˉt+Kt(zt−Ctμˉt)(CtTQt−1Ct+Σˉt−1)−1⇔⎩ ⎨ ⎧KtμtΣt===ΣˉtCtT(CtΣˉtCtT+Qt)−1μˉt+Kt(zt−Ctμˉt)(I−KtCt)Σˉt↓⎩ ⎨ ⎧KtμtΣt===ΣtHtTQt−1μˉt+Kt(zt−h(μˉt))(HtTQt−1Ht+Σˉt−1)−1⇔⎩ ⎨ ⎧KtμtΣt===ΣˉtHtT(HtΣˉtHtT+Qt)−1μˉt+Kt(zt−h(μˉt))(I−KtHt)Σˉt - 用这个等价的公式推导扩展信息滤波
{ K t = Σ t H t T Q t − 1 μ t = μ ˉ t + K t ( z t − h ( μ ˉ t ) ) Σ t = ( H t T Q t − 1 H t + Σ ˉ t − 1 ) − 1 \left\{\begin{matrix} &K_t&=&\Sigma_t H_t^TQ_t^{-1}\\ &\mu_t &= &\bar{\mu}_t + K_t(z_t - h(\bar{\mu}_{t}))\\ &\Sigma_t &= &(H_t^TQ_t^{-1}H_t + \bar{\Sigma}_t^{-1})^{-1} \end{matrix}\right. ⎩ ⎨ ⎧KtμtΣt===ΣtHtTQt−1μˉt+Kt(zt−h(μˉt))(HtTQt−1Ht+Σˉt−1)−1 - line 5: 在
x
t
−
1
=
μ
t
−
1
x_{t-1} = \mu_{t-1}
xt−1=μt−1处线性化
μ ˉ t = g ( u t , μ t − 1 ) \bar{\mu}_{t} = g(u_t, \mu_{t-1}) μˉt=g(ut,μt−1) - line 6:
Ω t = Σ t − 1 ↓ Σ t = ( H t T Q t − 1 H t + Σ ˉ t − 1 ) − 1 Ω t = Ω ˉ t + H t T Q t − 1 H t \Omega_t = \Sigma_t^{-1}\\ \downarrow \Sigma_t = (H_t^TQ_t^{-1}H_t + \bar{\Sigma}_t^{-1})^{-1} \\ \Omega_t = \bar{\Omega}_t + H_t^TQ_t^{-1}H_t Ωt=Σt−1↓Σt=(HtTQt−1Ht+Σˉt−1)−1Ωt=Ωˉt+HtTQt−1Ht - line 7:
ξ t = Σ t − 1 μ t ↓ μ t = μ ˉ t + K t ( z t − h ( μ ˉ t ) ) ↓ μ t = μ ˉ t + Σ t H t T Q t − 1 ( z t − h ( μ ˉ t ) ) ξ t = Σ t − 1 μ ˉ t + H t T Q t − 1 ( z t − h ( μ ˉ t ) ) ↓ Σ t − 1 = H t T Q t − 1 H t + Σ ˉ t − 1 ξ t = H t T Q t − 1 H t μ ˉ t + Σ ˉ t − 1 μ ˉ t + H t T Q t − 1 ( z t − h ( μ ˉ t ) ) ↓ ξ ˉ t = Σ ˉ t − 1 μ ˉ t ξ t = ξ ˉ t + H t T Q t − 1 ( z t − h ( μ ˉ t ) + H t μ ˉ t ) \xi_t = \Sigma_{t}^{-1} \mu_{t}\\ \downarrow \mu_t = \bar{\mu}_t + K_t(z_t - h(\bar{\mu}_{t}))\\ \downarrow \mu_t = \bar{\mu}_t + \Sigma_t H_t^TQ_t^{-1}(z_t - h(\bar{\mu}_{t}))\\ \xi_t = \Sigma_{t}^{-1} \bar{\mu}_t + H_t^TQ_t^{-1}(z_t - h(\bar{\mu}_{t}))\\ \downarrow \Sigma_t^{-1} = H_t^TQ_t^{-1}H_t + \bar{\Sigma}_t^{-1}\\ \xi_t = H_t^TQ_t^{-1}H_t \bar{\mu}_t + \bar{\Sigma}_t^{-1} \bar{\mu}_t + H_t^TQ_t^{-1}(z_t - h(\bar{\mu}_{t}))\\ \downarrow \bar{\xi}_t = \bar{\Sigma}_t^{-1} \bar{\mu}_t \\ \xi_t = \bar{\xi}_t + H_t^TQ_t^{-1}(z_t - h(\bar{\mu}_{t}) + H_t \bar{\mu}_t) ξt=Σt−1μt↓μt=μˉt+Kt(zt−h(μˉt))↓μt=μˉt+ΣtHtTQt−1(zt−h(μˉt))ξt=Σt−1μˉt+HtTQt−1(zt−h(μˉt))↓Σt−1=HtTQt−1Ht+Σˉt−1ξt=HtTQt−1Htμˉt+Σˉt−1μˉt+HtTQt−1(zt−h(μˉt))↓ξˉt=Σˉt−1μˉtξt=ξˉt+HtTQt−1(zt−h(μˉt)+Htμˉt) - 综上:
Step 2: 测量更新 { μ ˉ t = g ( u t , μ t − 1 ) Ω t = Ω ˉ t + H t T Q t − 1 H t ξ t = ξ ˉ t + H t T Q t − 1 ( z t − h ( μ ˉ t ) + H t μ ˉ t ) \text{Step 2: 测量更新}\left\{\begin{matrix} &\bar{\mu}_t &= &g(u_t, \mu_{t-1})\\ &\Omega_t &= &\bar{\Omega}_t + H_t^T Q_t^{-1} H_t \\ &\xi_t &= &\bar{\xi}_t + H_t^T Q_t^{-1} (z_t - h(\bar{\mu}_{t}) + H_t \bar{\mu}_{t})\\ \end{matrix}\right. Step 2: 测量更新⎩ ⎨ ⎧μˉtΩtξt===g(ut,μt−1)Ωˉt+HtTQt−1Htξˉt+HtTQt−1(zt−h(μˉt)+Htμˉt)
4.3 扩展信息滤波主要公式
扩展信息滤波: Step 1: 预测 { μ t − 1 = Ω t − 1 − 1 ξ t − 1 Ω ˉ t = ( G t Σ t − 1 G t T + R t ) − 1 ξ ˉ t = Ω ˉ t g ( u t , μ t − 1 ) Step 2: 测量更新 { μ ˉ t = g ( u t , μ t − 1 ) Ω t = Ω ˉ t + H t T Q t − 1 H t ξ t = ξ ˉ t + H t T Q t − 1 ( z t − h ( μ ˉ t ) + H t μ ˉ t ) \text{扩展信息滤波:} \begin{aligned} &\text{Step 1: 预测}\left\{\begin{matrix} &\mu_{t-1} &= & \Omega_{t-1}^{-1} \xi_{t-1}\\ &\bar{\Omega}_t &= & (G_t\Sigma_{t-1} G_t^T+R_t)^{-1}\\ &\bar{\xi}_t &= &\bar{\Omega}_tg(u_t, \mu_{t-1})\\ \end{matrix}\right.\\ &\text{Step 2: 测量更新}\left\{\begin{matrix} &\bar{\mu}_t &= &g(u_t, \mu_{t-1})\\ &\Omega_t &= &\bar{\Omega}_t + H_t^T Q_t^{-1} H_t \\ &\xi_t &= &\bar{\xi}_t + H_t^T Q_t^{-1} (z_t - h(\bar{\mu}_{t}) + H_t \bar{\mu}_{t})\\ \end{matrix}\right. \end{aligned} 扩展信息滤波:Step 1: 预测⎩ ⎨ ⎧μt−1Ωˉtξˉt===Ωt−1−1ξt−1(GtΣt−1GtT+Rt)−1Ωˉtg(ut,μt−1)Step 2: 测量更新⎩ ⎨ ⎧μˉtΩtξt===g(ut,μt−1)Ωˉt+HtTQt−1Htξˉt+HtTQt−1(zt−h(μˉt)+Htμˉt)
5 参考文献
- Thrun, & Sebastian. (2005). Probabilistic robotics.