7 概率机器人 Probabilistic Robotics 扩展信息滤波算法

11 篇文章 9 订阅
11 篇文章 0 订阅

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,xt1)+ϵ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) δaxN(0,0.09)N(ξ=0,Ω=1/0.09),δayN(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) δrN(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)(kxvx2(k)+δax)T=y(k)+vy(k)T=vy(k)+(kyvy2(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= 1000T12kxvxT00001000T1+2kyvyT xt1=μt1

  • 雅克比矩阵: 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)2x/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,μt1)GtΣt1GtT+RtStep 2: 测量更新 KtμtΣt===ΣˉtHtT(HtΣˉtHtT+Qt)1μˉt+Kt(zth(μˉt))(IKtHt)Σˉt扩展信息滤波:Step 1: 预测 μt1Ωˉtξˉt===Ωt11ξt1(GtΣt1GtT+Rt)1Ωˉtg(ut,μt1)Step 2: 测量更新 μˉtΩtξt===g(ut,μt1)Ωˉt+HtTQt1Htξˉt+HtTQt1(zth(μˉ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=Σˉt1=Σˉt1μˉtΣˉtμˉt=Ωˉt1=Ωˉt1ξˉtΩt1ξt1=Σt11=Σt11μt1Σt1μt1=Ωt11=Ωt11ξt1Ωtξt=Σt1=Σt1μtΣtμt=Ωt1=Ωt1ξt

4.1 预测公式推导

  • line 2: 这个不用推导,替换公式里有
    μ t − 1 = Ω t − 1 − 1 ξ t − 1 \mu_{t-1} = \Omega_{t-1}^{-1} \xi_{t-1} μt1=Ωt11ξt1
  • 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=Σˉt1Ωˉt=(GtΣt1GtT+Rt)1Ωˉt=(GtΩt11GtT+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=Σˉt1μˉtΣˉt1=Ωˉtμˉt=g(ut,μt1)ξˉt=Ωˉtg(ut,μt1)
  • 综上:
    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: 预测 μt1Ωˉtξˉt===Ωt11ξt1(GtΣt1GtT+Rt)1Ωˉtg(ut,μt1)

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===ΣtCtTQt1μˉt+Kt(ztCtμˉt)(CtTQt1Ct+Σˉt1)1 KtμtΣt===ΣˉtCtT(CtΣˉtCtT+Qt)1μˉt+Kt(ztCtμˉt)(IKtCt)Σˉt KtμtΣt===ΣtHtTQt1μˉt+Kt(zth(μˉt))(HtTQt1Ht+Σˉt1)1 KtμtΣt===ΣˉtHtT(HtΣˉtHtT+Qt)1μˉt+Kt(zth(μˉt))(IKtHt)Σˉ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===ΣtHtTQt1μˉt+Kt(zth(μˉt))(HtTQt1Ht+Σˉt1)1
  • line 5: 在 x t − 1 = μ t − 1 x_{t-1} = \mu_{t-1} xt1=μt1处线性化
    μ ˉ t = g ( u t , μ t − 1 ) \bar{\mu}_{t} = g(u_t, \mu_{t-1}) μˉt=g(ut,μt1)
  • 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=Σt1Σt=(HtTQt1Ht+Σˉt1)1Ωt=Ωˉt+HtTQt1Ht
  • 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=Σt1μtμt=μˉt+Kt(zth(μˉt))μt=μˉt+ΣtHtTQt1(zth(μˉt))ξt=Σt1μˉt+HtTQt1(zth(μˉt))Σt1=HtTQt1Ht+Σˉt1ξt=HtTQt1Htμˉt+Σˉt1μˉt+HtTQt1(zth(μˉt))ξˉt=Σˉt1μˉtξt=ξˉt+HtTQt1(zth(μˉ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,μt1)Ωˉt+HtTQt1Htξˉt+HtTQt1(zth(μˉ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: 预测 μt1Ωˉtξˉt===Ωt11ξt1(GtΣt1GtT+Rt)1Ωˉtg(ut,μt1)Step 2: 测量更新 μˉtΩtξt===g(ut,μt1)Ωˉt+HtTQt1Htξˉt+HtTQt1(zth(μˉt)+Htμˉt)

5 参考文献

  • Thrun, & Sebastian. (2005). Probabilistic robotics.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值