机器人学中的状态估计第3章 线性高斯系统的状态估计

文章目录

  • 离散时间的批量估计
  • 离散时间的批量估计
  • 离散时间的递归平滑算法
  • 离散时间的滤波算法(卡尔曼滤波)

离散时间的批量估计

  1. 离散时间的线性时变系统
    运 动 方 程 : x k = A k − 1 x k − 1 + v k + w k , k = 1 , ⋯   , K 观 测 方 程 : y k = C k x k + n k , k = 0 , ⋯   , K \begin{array}{l} 运动方程: \boldsymbol{x}_{k}=\boldsymbol{A}_{k-1} \boldsymbol{x}_{k-1}+v_{k}+\boldsymbol{w}_{k}, \quad k=1, \cdots, K \\ 观测方程: \boldsymbol{y}_{k}=\boldsymbol{C}_{k} \boldsymbol{x}_{k}+\boldsymbol{n}_{k}, \quad k=0, \cdots, K \end{array} :xk=Ak1xk1+vk+wk,k=1,,K:yk=Ckxk+nk,k=0,,K
    各个变量含义:
    系 统 状 态 : x k ∈ R N 初 始 状 态 : x 0 ∈ R N ∼ N ( x ˇ 0 , P ˇ 0 ) 输 入 : v k ∈ R N 过 程 噪 声 : w k ∈ R N ∼ N ( 0 , Q k ) 测 量 : y k ∈ R M 测 量 噪 声 : n k ∈ R M ∼ N ( 0 , R k ) 系统状态: x_{k} \in \mathbb{R}^{N} \\ 初始状态: \quad x_{0} \in \mathbb{R}^{N} \sim \mathcal{N}\left(\check{x}_{0}, \\ \check{P}_{0}\right) \\ 输入: \quad v_{k} \in \mathbb{R}^{N} \\ 过程噪声: \quad \boldsymbol{w}_{k} \in \mathbb{R}^{N} \sim \mathcal{N}\left(\mathbf{0}, \boldsymbol{Q}_{k}\right) \\ 测量: \quad \boldsymbol{y}_{k} \in \mathbb{R}^{M} \\ 测量噪声: \quad n_{k} \in \mathbb{R}^{M} \sim \mathcal{N}\left(\mathbf{0},\\ \boldsymbol{R}_{k}\right) :xkRN:x0RNN(xˇ0,Pˇ0):vkRN:wkRNN(0,Qk):ykRM:nkRMN(0,Rk)
    其中, v k v_{k} vk为确定性变量之外,其他变量都是随机变量。噪声和初始状态一般假设为互不相关,并且在各个时刻与自己也互不相关。A称为转移矩阵(transition matrix),B称为观测矩阵(observation matrix)。
  2. 状态估计问题:在k个(一个或多个)时间点上,基于初始的状态信息 x ˇ 0 \check{x}_{0} xˇ0、一系列观测数据、一系列输入,以及系统的运动模型和观测模型,来计算系统的真实状态的估计值 x ^ k \hat{x}_{k} x^k
  3. 讨论最简单的情形:批量LG(linear Gausisan)线性高斯系统。(批量允许一次性使用所有数据)
  4. 常用两种思路解决估计问题:
  • 贝叶斯推断(Bayesian inference):得到后验概率密度函数(得到分布)
  • 最大后验估计(MAP):求给定信息下的最大后验估计(最优解)

离散时间的批量估计

  • “批量”:系统允许我们一次性使用所有数据,来推算所有时刻的状态。
  • 推导过程参照书籍,蓝色字体对过程的补充:
  1. 最大后验估计
    机器人学中的状态估计第3章 线性高斯系统的状态估计_第1张图片
  2. 贝叶斯推断
    机器人学中的状态估计第3章 线性高斯系统的状态估计_第2张图片
  • 结论:在我们假设的线性高斯系统中,最大后验估计的结果恰好等于贝叶斯推断的均值。正是因为我们假设了噪声为白噪声,且彼此独立,且线性变换使得高斯分布在传递中始终保持高斯分布。估计的状态符合高斯分布,高斯分布有均值和模相等的性质,所以有这样的结果。

离散时间的递归平滑算法

  • 应用最大后验估计和贝叶斯推断,在批量估计问题得到了
    ( H T W − 1 H ) x ^ = H T W − 1 z \left(\boldsymbol{H}^{\mathrm{T}} \boldsymbol{W}^{-1} \boldsymbol{H}\right) \hat{\boldsymbol{x}}=\boldsymbol{H}^{\mathrm{T}} \boldsymbol{W}^{-1} \boldsymbol{z} (HTW1H)x^=HTW1z
    等式左侧的逆协方差矩阵有稀疏结构(对角块),可以利用cholesky分解,可以加速方程的求解:通过一次前向递推和后向递推。

  • Cholesky平滑算法计算得到的结论可以推导出其他算法,或者说可以指示与其他算法的联系。分解得到的5个前向方程和1个后向方程。6个递归方程在代数上等价传统的Rauch-Tung-Striebel平滑算法;5个前向迭代,等价于卡尔曼滤波。(可以说明卡尔曼滤波在线性高斯系统是最优的,最可信的。当然卡尔曼滤波还有其他简单的方法可推导,后面再介绍。)

  • 作用:加速求解批量问题方程。

  • Cholesky平滑算法推导过程:
    推导过程见书易推出。这里只给出结论:
    理解
    前 向 : k = 1 , ⋯   , K L k − 1 L k − 1 T = I k − 1 + A k − 1 T Q k − 1 A k − 1 L k − 1 d k − 1 = q k − 1 − A k − 1 T Q k − 1 v k L k , k − 1 L k − 1 T = − Q k − 1 A k − 1 I k = − L k , k − 1 L k , k − 1 T + Q k − 1 + C k T R k − 1 C k q k = − L k , k − 1 d k − 1 + Q k − 1 v k + C k T R k − 1 y k 前向: k=1, \cdots, K \\ \begin{aligned} \boldsymbol{L}_{k-1} \boldsymbol{L}_{k-1}^{\mathrm{T}} &=\boldsymbol{I}_{k-1}+A_{k-1}^{\mathrm{T}} Q_{k}^{-1} A_{k-1} \\ \boldsymbol{L}_{k-1} d_{k-1} &=q_{k-1}-A_{k-1}^{\mathrm{T}} Q_{k}^{-1} v_{k} \\ L_{k, k-1} L_{k-1}^{\mathrm{T}} &=-Q_{k}^{-1} A_{k-1} \\ I_{k} &=-L_{k, k-1} L_{k, k-1}^{\mathrm{T}}+Q_{k}^{-1}+C_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} C_{k} \\ q_{k} &=-L_{k, k-1} d_{k-1}+Q_{k}^{-1} v_{k}+C_{k}^{\mathrm{T}} \boldsymbol{R}_{k}^{-1} \boldsymbol{y}_{k} \end{aligned} :k=1,,KLk1Lk1TLk1dk1Lk,k1Lk1TIkqk=Ik1+Ak1TQk1Ak1=qk1Ak1TQk1vk=Qk1Ak1=Lk,k1Lk,k1T+Qk1+CkTRk1Ck=Lk,k1dk1+Qk1vk+CkTRk1yk
    后 向 : k = K , ⋯   , 1 L k − 1 T x ^ k − 1 = − L k , k − 1 T x ^ k + d k − 1 后向: k=K, \cdots, 1 \\ \boldsymbol{L}_{k-1}^{\mathrm{T}} \hat{x}_{k-1}=-\boldsymbol{L}_{k, k-1}^{\mathrm{T}} \hat{x}_{k}+\boldsymbol{d}_{k-1} :k=K,,1Lk1Tx^k1=Lk,k1Tx^k+dk1
    初 始 值 : I 0 = P ˇ 0 − 1 + C 0 T R 0 − 1 C 0 q 0 = P ˇ 0 − 1 x ˇ 0 + C 0 T R 0 − 1 y 0 x ^ K = L K − T d K 初始值: \begin{array}{l} I_{0}=\check{P}_{0}^{-1}+C_{0}^{\mathrm{T}} R_{0}^{-1} C_{0} \\ q_{0}=\check{P}_{0}^{-1} \check{\boldsymbol{x}}_{0}+C_{0}^{\mathrm{T}} R_{0}^{-1} y_{0} \\ \hat{\boldsymbol{x}}_{K}=\boldsymbol{L}_{K}^{-\mathrm{T}} \boldsymbol{d}_{K} \end{array} :I0=Pˇ01+C0TR01C0q0=Pˇ01xˇ0+C0TR01y0x^K=LKTdK

  • Rauch-Tung-Striebel平滑算法

    • 代数上等价于Cholesky平滑算法,可以由它推出。
    • 推导过程省略,结论:前向方程即为经典形式的卡尔曼滤波方程。
      前 向 : k = 1 , ⋯   , K P ˇ k , f = A k − 1 P ^ k − 1 , f A k − 1 T + Q k x ˇ k , f = A k − 1 x ^ k − 1 , f + v k K k = P ˇ k , f C k T ( C k P ˇ k , f C k T + R k ) − 1 P ^ k , f = ( 1 − K k C k ) P ˇ k , f x ^ k , f = x ˇ k , f + K k ( y k − C k x ˇ k , f ) 后 向 : k = K , ⋯   , 1 x ^ k − 1 = x ^ k − 1 , f + P ^ k − 1 , f A k − 1 T P ˇ k , f − 1 ( x ^ k − x ˇ k , f ) 初 始 值 : P ˇ 0 , f = P ˇ 0 x ˇ 0 , f = x ˇ 0 x ^ K = x ^ K , f \begin{aligned} 前向: k=1, \cdots, K \\ \check{P}_{k, f} &=\boldsymbol{A}_{k-1} \hat{P}_{k-1, f} \boldsymbol{A}_{k-1}^{\mathrm{T}}+Q_{k} \\ \check{x}_{k, f} &=\boldsymbol{A}_{k-1} \hat{x}_{k-1, f}+v_{k} \\ \boldsymbol{K}_{k} &=\check{P}_{k, f} C_{k}^{\mathrm{T}}\left(C_{k} \check{P}_{k, f} C_{k}^{\mathrm{T}}+\boldsymbol{R}_{k}\right)^{-1} \\ \hat{P}_{k, f} &=\left(1-K_{k} C_{k}\right) \check{P}_{k, f} \\ \hat{x}_{k, f} &=\check{x}_{k, f}+K_{k}\left(y_{k}-C_{k} \check{x}_{k, f}\right) \\ 后向: k=K, \cdots, 1 \\ \begin{aligned} \hat{x}_{k-1}=\hat{x}_{k-1, f}+\hat{P}_{k-1, f} A_{k-1}^{\mathrm{T}} \check{P}_{k, f}^{-1}\left(\hat{x}_{k}-\check{x}_{k, f}\right) \end{aligned} \\ 初始值:\\ \check{P}_{0, f} &=\check{P}_{0} \\ \check{x}_{0, f} &=\check{x}_{0} \\ \hat{x}_{K} &=\hat{x}_{K, f} \end{aligned} :k=1,,KPˇk,fxˇk,fKkP^k,fx^k,f:k=K,,1x^k1=x^k1,f+P^k1,fAk1TPˇk,f1(x^kxˇk,f)Pˇ0,fxˇ0,fx^K=Ak1P^k1,fAk1T+Qk=Ak1x^k1,f+vk=Pˇk,fCkT(CkPˇk,fCkT+Rk)1=(1KkCk)Pˇk,f=xˇk,f+Kk(ykCkxˇk,f)=Pˇ0=xˇ0=x^K,f

离散时间的滤波算法(卡尔曼滤波)

  • 引入:在批量问题,我们使用到未来的数据来估计过去的状态,所以不能在线运行。适合的是离线建图的问题。对于在实习时刻对当前状态的估计,只能利用当前和过去的信息进行估计。卡尔曼滤波就是对于这样一个问题的传统解决方案。
  • 推导:
    1. MAP推导卡尔曼滤波

    2. 贝叶斯推断卡尔曼滤波
      机器人学中的状态估计第3章 线性高斯系统的状态估计_第3张图片

你可能感兴趣的:(机器人学中的状态估计,算法,学习,概率论)