《视觉SLAM十四讲》-- 后端 1(上)

文章目录

    • 08 后端 1
      • 8.1 概述
        • 8.1.1 状态估计的概率解释
        • 8.1.2 线性系统和卡尔曼滤波(KF)
        • 8.1.3 非线性系统和扩展卡尔曼滤波(EKF)
        • 8.1.4 小结

08 后端 1

前端视觉里程计可以给出一个短时间内的轨迹和地图,但由于不可避免的误差积累,地图在长时间内是不准确的,因此,我们希望构建一个大规模、长时间的最优轨迹和地图。

8.1 概述

8.1.1 状态估计的概率解释

(1)两种处理方式

  • 批量式:使用过去和未来的信息来更新自己的状态的处理方式;

  • 渐进式:仅适用过去的甚至仅是前一个时刻的信息来更新自己的状态的处理方式。

(2)运动方程和观测方程:

{ x k = f ( x k − 1 , u k ) + w k z k , j = h ( y j , x k ) + v k , j k = 1 , … , N , j = 1 , … , M (8-1) \left\{\begin{array}{l} \boldsymbol{x}_{k}=f\left(\boldsymbol{x}_{k-1}, \boldsymbol{u}_{k}\right)+\boldsymbol{w}_{k} \\ \boldsymbol{z}_{k, j}=h\left(\boldsymbol{y}_{j}, \boldsymbol{x}_{k}\right)+\boldsymbol{v}_{k, j} \end{array} \quad k=1, \ldots, N, j=1, \ldots, M\right. \tag{8-1} {xk=f(xk1,uk)+wkzk,j=h(yj,xk)+vk,jk=1,,N,j=1,,M(8-1)

以下图为例,只有运动方程时,由于误差的不断积累,位置的不确定性会不断增大;当加入正确的观测数据,不确定性就会减小,直至保持稳定。

在这里插入图片描述

(3)将批量状态估计问题转化为最大似然估计问题,并使用最小二乘法求解

定义 x k \boldsymbol{x}_k xk k k k 时刻的所有变量,即包含此时刻的相机位姿和 m m m 个路标,

x k = def  { x k , y 1 , … , y m } \boldsymbol{x}_{k} \stackrel{\text { def }}{=}\left\{\boldsymbol{x}_{k}, \boldsymbol{y}_{1}, \ldots, \boldsymbol{y}_{m}\right\} xk= def {xk,y1,,ym}

同时,把 k k k 时刻所有的观测记做 z k \boldsymbol{z}_k zk,于是式(8-1)可写为(注意区别)

{ x k = f ( x k − 1 , u k ) + w k z k = h ( x k ) + v k k = 1 , … , N (8-2) \left\{\begin{array}{l} \boldsymbol{x}_{k}=f\left(\boldsymbol{x}_{k-1}, \boldsymbol{u}_{k}\right)+\boldsymbol{w}_{k} \\ \boldsymbol{z}_{k}=h\left( \boldsymbol{x}_{k}\right)+\boldsymbol{v}_{k} \end{array} \quad k=1, \ldots, N\right. \tag{8-2} {xk=f(xk1,uk)+wkzk=h(xk)+vkk=1,,N(8-2)

我们希望用过去 0 到第 k k k 时刻所有的数据来估计现在的状态分布:

P ( x k ∣ x 0 , u 1 : k , z 1 : k ) P(\boldsymbol{x}_k|\boldsymbol{x}_0,\boldsymbol{u}_{1:k},\boldsymbol{z}_{1:k}) P(xkx0,u1:k,z1:k)

下标 1 : k 1:k 1:k 表示从 1 到 k k k 时刻所有的数据。

根据贝叶斯法则

P ( x k ∣ x 0 , u 1 : k , z 1 : k ) ∝ P ( z k ∣ x k ) P ( x k ∣ x 0 , u 1 : k , z 1 : k − 1 ) (8-3) P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k}\right) \propto P\left(\boldsymbol{z}_{k} \mid \boldsymbol{x}_{k}\right) P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right) \tag{8-3} P(xkx0,u1:k,z1:k)P(zkxk)P(xkx0,u1:k,z1:k1)(8-3)

第一项称为 似然,第二项为 先验,将第二项以 x k − 1 \boldsymbol{x}_{k-1} xk1 时刻为条件概率展开

P ( x k ∣ x 0 , u 1 : k , z 1 : k − 1 ) = ∫ P ( x k ∣ x k − 1 , x 0 , u 1 : k , z 1 : k − 1 ) P ( x k − 1 ∣ x 0 , u 1 : k , z 1 : k − 1 ) d x k − 1 (8-4) P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right)=\int P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{k-1}, \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right) P\left(\boldsymbol{x}_{k-1} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right) \mathrm{d} \boldsymbol{x}_{k-1} \tag{8-4} P(xkx0,u1:k,z1:k1)=P(xkxk1,x0,u1:k,z1:k1)P(xk1x0,u1:k,z1:k1)dxk1(8-4)

(可以这样理解,第一项表示 k k k 时刻状态和 k − 1 k-1 k1 时刻有关,第二项表示 k − 1 k-1 k1 时刻状态又与过去所有状态有关,这是一个递进的关系。)

在后续处理上,又有两种方式:一种是假设一阶马尔科夫性,即 k k k 时刻的状态只与 k − 1 k-1 k1 时刻状态相关,这样就会得到以 扩展卡尔曼滤波 为代表的滤波器法;另一种是与之前所有的状态均相关,将得到 非线性优化 为主体的优化框架。目前,视觉 SLAM 的主流为非线性优化方法。

8.1.2 线性系统和卡尔曼滤波(KF)

(1)假设马尔可夫性,即当前时刻状态只与前一时刻的状态有关。则式(8-4)第一项可写为

P ( x k ∣ x k − 1 , x 0 , u 1 : k , z 1 : k − 1 ) = P ( x k ∣ x k − 1 , u k ) (8-5) P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{k-1}, \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right) = P(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{k-1},\boldsymbol{u}_k) \tag{8-5} P(xkxk1,x0,u1:k,z1:k1)=P(xkxk1,uk)(8-5)

对于第二项,由于 k k k 时刻的输入量 u k \boldsymbol{u}_k uk k − 1 k-1 k1 时刻状态无关,则可将其化简为

P ( x k − 1 ∣ x 0 , u 1 : k , z 1 : k − 1 ) = P ( x k − 1 ∣ x 0 , u 1 : k − 1 , z 1 : k − 1 ) (8-6) P\left(\boldsymbol{x}_{k-1} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right)=P\left(\boldsymbol{x}_{k-1} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k-1}, \boldsymbol{z}_{1: k-1}\right) \tag{8-6} P(xk1x0,u1:k,z1:k1)=P(xk1x0,u1:k1,z1:k1)(8-6)

(2)首先推导 线性高斯系统 的卡尔曼滤波器(也就是说,运动方程和观测方程可以由线性方程来描述):

{ x k = A k x k − 1 + u k + w k z k = C k x k + v k k = 1 , … , N (8-8) \left\{\begin{array}{l} \boldsymbol{x}_{k}=\boldsymbol{A}_{k} \boldsymbol{x}_{k-1}+\boldsymbol{u}_{k}+\boldsymbol{w}_{k} \\ \boldsymbol{z}_{k}=\boldsymbol{C}_{k} \boldsymbol{x}_{k}+\boldsymbol{v}_{k} \end{array} \quad k=1, \ldots, N\right. \tag{8-8} {xk=Akxk1+uk+wkzk=Ckxk+vkk=1,,N(8-8)

假设噪声符合零均值高斯分布,即

w k ∼ N ( 0 , R ) . v k ∼ N ( 0 , Q ) (8-9) \boldsymbol{w}_{k} \sim N(\mathbf{0}, \boldsymbol{R}) . \quad \boldsymbol{v}_{k} \sim N(\mathbf{0}, \boldsymbol{Q}) \tag{8-9} wkN(0,R).vkN(0,Q)(8-9)

假设已知 k − 1 k-1 k1 时刻的后验状态估计 x ^ k − 1 \hat{\boldsymbol{x}}_{k-1} x^k1 及其协方差 P ^ k − 1 \hat{\boldsymbol{P}}_{k-1} P^k1,现在根据 k k k 时刻的输入和观测数据,确定 x k \boldsymbol{x}_k xk 的后验分布。我们约定以上帽子 x ^ k − 1 \hat{\boldsymbol{x}}_{k-1} x^k1 表示后验,下帽子 x ˇ k \check{\boldsymbol{x}}_{k} xˇk 表示先验分布。

根据 高斯分布线性组合性质,先通过运动方程确定 x k \boldsymbol{x}_k xk 的先验分布

P ( x k ∣ x 0 , u 1 : k , z 1 : k − 1 ) = N ( A k x ^ k − 1 + u k , A k P ^ k − 1 A k T + R ) (8-10) P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{1: k-1}\right)=N(\boldsymbol{A}_{k} \hat{\boldsymbol{x}}_{k-1}+\boldsymbol{u}_{k}, \boldsymbol{A}_{k} \hat{\boldsymbol{P}}_{k-1} \boldsymbol{A}_{k}^{\mathrm{T}}+\boldsymbol{R}) \tag{8-10} P(xkx0,u1:k,z1:k1)=N(Akx^k1+uk,AkP^k1AkT+R)(8-10)

这一步称为 预测 ,它显示了如何从上一时刻的状态,根据输入信息推断当前时刻的状态分布。这个分布就是 先验,记

x k ˇ = A k x ^ k − 1 + u k , P ˇ k = A k P ^ k − 1 A k T + R (8-11) \check{\boldsymbol{x}_k}=\boldsymbol{A}_{k} \hat{\boldsymbol{x}}_{k-1}+\boldsymbol{u}_{k}, \quad \check{\boldsymbol{P}}_{k}=\boldsymbol{A}_{k} \hat{\boldsymbol{P}}_{k-1} \boldsymbol{A}_{k}^{\mathrm{T}}+\boldsymbol{R} \tag{8-11} xkˇ=Akx^k1+uk,Pˇk=AkP^k1AkT+R(8-11)

由观测方程,我们可以计算在某个状态下应该产生怎样的观测数据,

P ( z k ∣ x k ) = N ( C k x k , Q ) ) (8-12) P(\boldsymbol{z}_k|\boldsymbol{x}_k)=N(\boldsymbol{C}_{k} \boldsymbol{x}_{k},\boldsymbol{Q})) \tag{8-12} P(zkxk)=N(Ckxk,Q))(8-12)

为了得到 x k \boldsymbol{x}_k xk 的后验概率,我们需要计算它们的乘积,也就是式(8-3)。设最终的结果为 x k ∼ N ( x ^ k , P ^ k ) \boldsymbol{x}_k \sim N(\hat{\boldsymbol{x}}_k, \hat{\boldsymbol{P}}_k) xkN(x^k,P^k) ,则

N ( x ^ k , P ^ k ) = η N ( C k x k , Q ) ) ⋅ N ( x ˇ k , P ˇ k ) (8-13) N(\hat{\boldsymbol{x}}_k, \hat{\boldsymbol{P}}_k)=\eta N(\boldsymbol{C}_{k} \boldsymbol{x}_{k},\boldsymbol{Q})) \cdot N(\check{\boldsymbol{x}}_k, \check{\boldsymbol{P}}_k) \tag{8-13} N(x^k,P^k)=ηN(Ckxk,Q))N(xˇk,Pˇk)(8-13)

我们知道高维高斯分布的概率密度函数为

p ( x ) = 1 ( 2 π ) N det ⁡ ( Σ ) exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x)=\frac{1}{\sqrt{(2 \pi)^{N} \operatorname{det}(\boldsymbol{\Sigma})}} \exp \left(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^{\mathrm{T}} \boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\right) p(x)=(2π)Ndet(Σ) 1exp(21(xμ)TΣ1(xμ))

因此,将指数部分展开

( x k − x ^ k ) T P ^ k − 1 ( x k − x ^ k ) = ( z k − C k x k ) T Q − 1 ( z k − C k x k ) + ( x k − x ˇ k ) T P ˇ k − 1 ( x k − x ˇ k ) (8-14) (\boldsymbol{x}_k-\hat{\boldsymbol{x}}_k)^\mathrm{T}\hat{\boldsymbol{P}}_k^{-1}(\boldsymbol{x}_k-\hat{\boldsymbol{x}}_k)=\left(\boldsymbol{z}_{k}-\boldsymbol{C}_{k} \boldsymbol{x}_{k}\right)^{\mathrm{T}} \boldsymbol{Q}^{-1}\left(\boldsymbol{z}_{k}-\boldsymbol{C}_{k} \boldsymbol{x}_{k}\right)+\left(\boldsymbol{x}_{k}-\check{\boldsymbol{x}}_{k}\right)^{\mathrm{T}} \check{\boldsymbol{P}}_{k}^{-1}\left(\boldsymbol{x}_{k}-\check{\boldsymbol{x}}_{k}\right) \tag{8-14} (xkx^k)TP^k1(xkx^k)=(zkCkxk)TQ1(zkCkxk)+(xkxˇk)TPˇk1(xkxˇk)(8-14)

为了求左侧的 x ^ k \hat{\boldsymbol{x}}_k x^k P ^ k \hat{\boldsymbol{P}}_k P^k ,将两侧展开,并比较一次和二次项系数。对于二次系数

P ^ k − 1 = C k T Q − 1 C k + P ˇ k − 1 (8-15) \hat{\boldsymbol{P}}_{k}^{-1}=\boldsymbol{C}_{k}^{\mathrm{T}} \boldsymbol{Q}^{-1} \boldsymbol{C}_{k}+\check{\boldsymbol{P}}_{k}^{-1} \tag{8-15} P^k1=CkTQ1Ck+Pˇk1(8-15)

该式给出了协方差的计算过程。这里定义一个中间变量

K = P ^ k C k T Q − 1 (8-16) \boldsymbol{K}=\hat{\boldsymbol{P}}_{k}\boldsymbol{C}_{k}^{\mathrm{T}}\boldsymbol{Q}^{-1} \tag{8-16} K=P^kCkTQ1(8-16)

将式(8-15)两侧时左乘乘 P ^ k \hat{\boldsymbol{P}}_{k} P^k,得

I = P ^ k C k T Q − 1 C k + P ^ k P ˇ k − 1 = K C k + P ^ k P ˇ k − 1 (8-17) \boldsymbol{I}=\hat{\boldsymbol{P}}_{k}\boldsymbol{C}_{k}^{\mathrm{T}}\boldsymbol{Q}^{-1}\boldsymbol{C}_{k}+\hat{\boldsymbol{P}}_{k}\check{\boldsymbol{P}}_{k}^{-1}=\boldsymbol{K}\boldsymbol{C}_{k}+\hat{\boldsymbol{P}}_{k}\check{\boldsymbol{P}}_{k}^{-1} \tag{8-17} I=P^kCkTQ1Ck+P^kPˇk1=KCk+P^kPˇk1(8-17)

于是,得

P ^ k = ( I − K C k ) P ˇ k (8-18) \hat{\boldsymbol{P}}_{k}=(\boldsymbol{I}-\boldsymbol{K}\boldsymbol{C}_{k})\check{\boldsymbol{P}}_{k} \tag{8-18} P^k=(IKCk)Pˇk(8-18)

然后比较一次项的系数

− 2 x ^ k T P ^ k − 1 x k = − 2 z k T Q − 1 C k x k − 2 x ˇ k T P ˇ k − 1 x k (8-19) -2 \hat{\boldsymbol{x}}_{k}^{\mathrm{T}} \hat{\boldsymbol{P}}_{k}^{-1} \boldsymbol{x}_{k}=-2 \boldsymbol{z}_{k}^{\mathrm{T}} \boldsymbol{Q}^{-1} \boldsymbol{C}_{k} \boldsymbol{x}_{k}-2 \check{\boldsymbol{x}}_{k}^{\mathrm{T}} \check{\boldsymbol{P}}_{k}^{-1} \boldsymbol{x}_{k} \tag{8-19} 2x^kTP^k1xk=2zkTQ1Ckxk2xˇkTPˇk1xk(8-19)

整理,得

P ^ k − 1 x ^ k = C k T Q − 1 z k + P ˇ k − 1 x ˇ k (8-20) \hat{\boldsymbol{P}}_{k}^{-1} \hat{\boldsymbol{x}}_{k}=\boldsymbol{C}_{k}^{\mathrm{T}} \boldsymbol{Q}^{-1} \boldsymbol{z}_{k}+\check{\boldsymbol{P}}_{k}^{-1} \check{\boldsymbol{x}}_{k} \tag{8-20} P^k1x^k=CkTQ1zk+Pˇk1xˇk(8-20)

两侧同时左乘 P ^ k \hat{\boldsymbol{P}}_{k} P^k,并代入式(8-16)

x ^ k = P ^ k C k T Q − 1 z k + P ^ k P ˇ k − 1 x ˇ k = K z k + ( I − K C k ) x ˇ k = x ˇ k + K ( z k − C k x ˇ k ) (8-21) \begin{aligned} \hat{\boldsymbol{x}}_{k} &=\hat{\boldsymbol{P}}_{k} \boldsymbol{C}_{k}^{\mathrm{T}} \boldsymbol{Q}^{-1} \boldsymbol{z}_{k}+\hat{\boldsymbol{P}}_{k} \check{\boldsymbol{P}}_{k}^{-1} \check{\boldsymbol{x}}_{k} \\ &=\boldsymbol{K} \boldsymbol{z}_{k}+\left(\boldsymbol{I}-\boldsymbol{K} \boldsymbol{C}_{k}\right) \check{\boldsymbol{x}}_{k}=\check{\boldsymbol{x}}_{k}+\boldsymbol{K}\left(\boldsymbol{z}_{k}-\boldsymbol{C}_{k} \check{\boldsymbol{x}}_{k}\right) \end{aligned} \tag{8-21} x^k=P^kCkTQ1zk+P^kPˇk1xˇk=Kzk+(IKCk)xˇk=xˇk+K(zkCkxˇk)(8-21)

至此,我们得到了后验协方差 P ^ k \hat{\boldsymbol{P}}_{k} P^k(式(8-15))和均值 x ^ k \hat{\boldsymbol{x}}_{k} x^k (式8-21)的表达式。

(3)线性卡尔曼滤波可归纳为 预测更新 两个步骤:

——————————————————————————————————————————————————————————
① 预测:

x k ˇ = A k x ^ k − 1 + u k , P ˇ k = A k P ^ k − 1 A k T + R \check{\boldsymbol{x}_k}=\boldsymbol{A}_{k} \hat{\boldsymbol{x}}_{k-1}+\boldsymbol{u}_{k}, \quad \check{\boldsymbol{P}}_{k}=\boldsymbol{A}_{k} \hat{\boldsymbol{P}}_{k-1} \boldsymbol{A}_{k}^{\mathrm{T}}+\boldsymbol{R} xkˇ=Akx^k1+uk,Pˇk=AkP^k1AkT+R

② 更新:先计算卡尔曼增益 K \boldsymbol{K} K(这与前面 定义的 K \boldsymbol{K} K 形式有所差别,但实际上是等价的 )

K = P ˇ k C k T ( C k P ˇ k C k T + Q k ) − 1 \boldsymbol{K}=\check{\boldsymbol{P}}_{k} \boldsymbol{C}_{k}^{\mathrm{T}}\left(\boldsymbol{C}_{k} \check{\boldsymbol{P}}_{k} \boldsymbol{C}_{k}^{\mathrm{T}}+\boldsymbol{Q}_{k}\right)^{-1} K=PˇkCkT(CkPˇkCkT+Qk)1

再计算后验概率分布

x ^ k = x ˇ k + K ( z k − C k x ˇ k ) P ^ k = ( I − K C k ) P ˇ k \begin{aligned} \hat{\boldsymbol{x}}_{k}&=\check{\boldsymbol{x}}_{k}+\boldsymbol{K}\left(\boldsymbol{z}_{k}-\boldsymbol{C}_{k} \check{\boldsymbol{x}}_{k}\right) \\ \hat{\boldsymbol{P}}_{k}&=(\boldsymbol{I}-\boldsymbol{K}\boldsymbol{C}_{k})\check{\boldsymbol{P}}_{k} \end{aligned} x^kP^k=xˇk+K(zkCkxˇk)=(IKCk)Pˇk
——————————————————————————————————————————————————————————

这就是经典卡尔曼滤波中的五个公式。事实上,卡尔曼滤波还有其他的表达形式。

8.1.3 非线性系统和扩展卡尔曼滤波(EKF)

实际上,SLAM 中的运动方程和观测方程都是非线性的,而高斯分布经过非线性变换,其结果往往也不再是高斯分布。因此,在非线性系统中,必须取一定的近似,将非高斯分布近似为高斯分布。

(1)我们希望将上面的线性卡尔曼滤波器扩展到非线性系统中。即在某点附近,将运动方程和观测方程一阶泰勒展开,只保留一阶项(线性部分),然后按照线性系统进行推导。

假设 k − 1 k-1 k1 时刻的均值和协方差矩阵为 x ^ k − 1 \hat{\boldsymbol{x}}_{k-1} x^k1 P ^ k − 1 \hat{\boldsymbol{P}}_{k-1} P^k1,在 k k k 时刻,把运动方程和观测方程在 x ^ k − 1 \hat{\boldsymbol{x}}_{k-1} x^k1 P ^ k − 1 \hat{\boldsymbol{P}}_{k-1} P^k1 处一阶展开,有

x k ≈ f ( x ^ k − 1 , u k ) + ∂ f ∂ x k − 1 ∣ x ^ k − 1 ( x k − 1 − x ^ k − 1 ) + w k (8-22) \boldsymbol{x}_{k} \approx f\left(\hat{\boldsymbol{x}}_{k-1}, \boldsymbol{u}_{k}\right)+\left.\frac{\partial f}{\partial \boldsymbol{x}_{k-1}}\right|_{\hat{\boldsymbol{x}}_{k-1}}\left(\boldsymbol{x}_{k-1}-\hat{\boldsymbol{x}}_{k-1}\right)+\boldsymbol{w}_{k} \tag{8-22} xkf(x^k1,uk)+xk1f x^k1(xk1x^k1)+wk(8-22)

F = ∂ f ∂ x k − 1 ∣ x ^ k − 1 (8-23) \boldsymbol{F}=\left.\frac{\partial f}{\partial \boldsymbol{x}_{k-1}}\right|_{\hat{\boldsymbol{x}}_{k-1}} \tag{8-23} F=xk1f x^k1(8-23)

同样,对观测方程,在 x k \boldsymbol{x}_k xk 处展开

z k ≈ h ( x ˇ ) + ∂ h ∂ x k ∣ x ˇ k ( x k − x ˇ k ) + n k (8-24) \boldsymbol{z}_{k} \approx h\left(\check{\boldsymbol{x}}\right)+\left.\frac{\partial h}{\partial \boldsymbol{x}_{k}}\right|_{\check{\boldsymbol{x}}_{k}}\left(\boldsymbol{x}_{k}-\check{\boldsymbol{x}}_{k}\right)+\boldsymbol{n}_{k} \tag{8-24} zkh(xˇ)+xkh xˇk(xkxˇk)+nk(8-24)

H = ∂ h ∂ x k ∣ x ˇ k (8-25) \boldsymbol{H}=\left.\frac{\partial h}{\partial \boldsymbol{x}_{k}}\right|_{\check{\boldsymbol{x}}_{k}} \tag{8-25} H=xkh xˇk(8-25)

类似式(8-10),根据运动方程得到 x k \boldsymbol{x}_k xk 的先验分布

P ( x k ∣ x 0 , u 1 : k , z 0 : k − 1 ) = N ( f ( x ^ k − 1 , u k ) , F P ^ k − 1 F T + R k ) (8-26) P\left(\boldsymbol{x}_{k} \mid \boldsymbol{x}_{0}, \boldsymbol{u}_{1: k}, \boldsymbol{z}_{0: k-1}\right)=N(f\left(\hat{\boldsymbol{x}}_{k-1}, \boldsymbol{u}_{k}\right), \boldsymbol{F} \hat{\boldsymbol{P}}_{k-1} \boldsymbol{F}^{\mathrm{T}}+\boldsymbol{R}_k) \tag{8-26} P(xkx0,u1:k,z0:k1)=N(f(x^k1,uk),FP^k1FT+Rk)(8-26)

记先验的均值和协方差为

x ˇ k = f ( x ^ k − 1 , u k ) , P ˇ k = F P ^ k − 1 F T + R k (8-27) \check{\boldsymbol{x}}_k=f(\hat{\boldsymbol{x}}_{k-1}, \boldsymbol{u}_{k}), \quad \check{\boldsymbol{P}}_k=\boldsymbol{F} \hat{\boldsymbol{P}}_{k-1} \boldsymbol{F}^{\mathrm{T}}+\boldsymbol{R}_k \tag{8-27} xˇk=f(x^k1,uk),Pˇk=FP^k1FT+Rk(8-27)

在观测中,有

P ( z k ∣ x k ) = N ( h ( x ˇ ) + H ( x k − x ˇ k ) , Q k ) (8-28) P\left(\boldsymbol{z}_{k} \mid \boldsymbol{x}_{k}\right)=N(h\left(\check{\boldsymbol{x}}\right)+\boldsymbol{H}\left(\boldsymbol{x}_{k}-\check{\boldsymbol{x}}_{k}\right), \boldsymbol{Q}_k) \tag{8-28} P(zkxk)=N(h(xˇ)+H(xkxˇk),Qk)(8-28)

类似线性卡尔曼滤波,定义增益 K k \boldsymbol{K}_k Kk

K k = P k ˇ H T ( H P k ˇ H T + Q k ) ) − 1 (8-29) \boldsymbol{K}_k=\check{\boldsymbol{P}_k}\boldsymbol{H}^\mathrm{T}(\boldsymbol{H}\check{\boldsymbol{P}_k}\boldsymbol{H}^\mathrm{T}+\boldsymbol{Q}_k))^{-1} \tag{8-29} Kk=PkˇHT(HPkˇHT+Qk))1(8-29)

那么, x k \boldsymbol{x}_k xk 的后验概率分布为

x ^ k = x ˇ k + K k ( z k − h ( x ˇ k ) ) , P ^ k = ( I − K k H ) P ˇ k (8-29) \hat{\boldsymbol{x}}_k=\check{\boldsymbol{x}}_k+\boldsymbol{K}_k(z_k-h(\check{\boldsymbol{x}}_k)), \quad \hat{\boldsymbol{P}}_k=(\boldsymbol{I}-\boldsymbol{K}_k\boldsymbol{H})\check{\boldsymbol{P}}_k \tag{8-29} x^k=xˇk+Kk(zkh(xˇk)),P^k=(IKkH)Pˇk(8-29)

8.1.4 小结

EKF 的优点:

  • 推导简单,适用于各种形式传感器;

  • 易做多传感器融合。

EKF 的缺点

  • 一阶马尔科夫性过于简单;

  • 可能会发散;

  • 线性化误差;

  • 从程序实现上来说,需要储存所有状态量的均值和方差,不适用于大型场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/143225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT 写作与改编

GPT 写作与改编 文商科GPT 写作收益 改编技巧【改编一段话】【改编评价】【意识预设】落差,让顾客看到就感性和冲动害怕,让顾客看到就想买和拥有画面,切换空间,瞬间代入,勾人魂魄对比,设置参考物&#xff0…

保序回归:拯救你的校准曲线(APP)

保序回归:拯救你的校准曲线(APP) 校准曲线之所以是评价模型效能的重要指标是因为,校准曲线衡量模型预测概率与实际发生概率之间的一致性,它可以帮助我们了解模型的预测结果是否可信。一个理想的模型应该能够准确地预测…

互斥量保护资源

一、概念 在多数情况下,互斥型信号量和二值型信号量非常相似,但是从功能上二值型信号量用于同步, 而互斥型信号量用于资源保护。 互斥型信号量和二值型信号量还有一个最大的区别,互斥型信号量可以有效解决优先级反转现 象。 …

立仪科技光谱共焦在半导体领域的应用

半导体技术在近年来以极快的速度发展,对质量和精密度的要求也不断提升。在这样的背景下,用于材料与设备研究的先进检测技术如光谱共焦成像将自然地找到一席之地。下面我们将详细探讨一下光谱共焦在半导体领域中的应用。 光谱共焦技术,通过在细…

【Linux】进程等待

文章目录 tips一、进程等待是什么?二、为什么要有进程等待?三、怎么做到进程等待?先看看什么是进程等待wait和waitpidstatus参数options参数非阻塞轮询 进程等待的原理 总结 tips 下面的代码可以循环检测进程。 while :; do ps ajx | head …

长安汽车基于 Apache Doris 的车联网数据分析平台建设实践

导读:随着消费者更安全、更舒适、更便捷的驾驶体验需求不断增长,汽车智能化已成必然趋势。长安汽车智能化研究院作为长安汽车集团有限责任公司旗下的研发机构,专注于汽车智能化技术的创新与研究。为满足各业务部门的数据分析需求,…

【广州华锐互动】消防科普VR实训展馆增强群众学习兴趣和沉浸感

在现代社会,科技的发展已经深入到我们生活的各个角落,其中包括教育和信息传播领域。3D技术的引入为科普教育提供了全新的可能性。特别是在消防安全教育中,消防科普VR实训展馆的应用,不仅可以提高公众的消防安全意识,还…

用户画像与用户分层

用户画像是重要的数据产品和运营抓手,指能够描述和刻画用户信息和的数据指标。通过用户画像,业务经营团队可以充分、深入、准确地了解用户在不同生命周期的特征,来制定高效的用户经营策略。用户画像,不论 Persona 还是 Profile &a…

C#多线程的操作

文章目录 1 使用线程意义2 C#线程开启的四种方式2.1 异步委托开启线程2.2 通过Thread类开启线程2.3 通过线程池开启线程2.4 通过任务Task开启线程 3 前台线程和后台线程简述3.1 前台线程3.2 后台线程 4 简述Thread和Task开启线程的区别4.1 Thread效果展示4.2 Task效果展示4.3 区…

WP光电信息学院2023年网络安全季度挑战赛-测试赛

签个到就跑WP Misc MISC-没爱了,下一个 下载附件压缩包解压之后,获得一个流量包文件 使用wireShark打开流量包,Ctrl F 搜索flag{即可获得flag flag{Good_b0y_W3ll_Done}MISC-送你一朵小花花 下载附件压缩包解压之后,获得一…

普通测径仪升级的智能测径仪 增添11大实用功能!

普通测径仪能对各种钢材进行非接触式的外径及椭圆度在线检测,测量数据准确且无损,可测、监测、超差提示、系统分析等。在此基础上,为测径仪进行了进一步升级制成智能测径仪,为其增添更多智能化模块,让其使用更加方便。…

element 周选择器el-date-picker

2023.11.13今天我学习了在使用element 周选择器的时候&#xff0c;我们会发现默认的时间选择为星期日到下一个星期一&#xff0c;如图&#xff1a; 我们需要改成显示星期一到星期天&#xff0c;只需要加一行代码&#xff1a;picker-options <el-date-pickertype"week&…

【postgresql】 代替mysql的if函数

在postgresql 中用 COALESCE 来代替mysql中的 if &#xff1b; COALEASE 函数的语法如下&#xff1a; COALESCE(expression_1, expression_2, expression_3, ...) COALESCE 函数接受多个参数&#xff0c;并且返回第一个非空的参数值&#xff1b; 如果所有参数都为空值&…

一本了解生成式人工智能

上周&#xff0c;发了一篇关于大语言模型图数据库技术相结合的文章&#xff0c;引起了很多朋友的兴趣。当然了&#xff0c;这项技术本身就让俺们很兴奋&#xff0c;比如我就是从事图研发的&#xff0c;当然会非常关注它在图领域的应用与相互促就啦。 纵观人类文明历史&#xff…

【论文精读2】R-MVSNet

R-MVSNet【递归多视图立体网络】&#xff0c;论文全名&#xff1a;“Recurrent MVSNet for High-resolution Multi-view Stereo Depth Inference”&#xff0c;CVPR 2019(CCF A) 在MVSNet的基础上做了一些改进&#xff0c;主要解决的问题是代价体正则化&#xff08;Cost Volume…

三、Eureka注册中心

目录 一、作用及调用方式 二、搭建eureka注册中心 三、注册user-service和order-service 四、新增实例 五、服务拉取 六、总结 一、作用及调用方式 在服务提供者启动时&#xff0c;它会向eureka注册中心提供自己的信息&#xff0c;并每30秒进行一次刷新eureka注册中心保存…

ping: www.baidu.com: Name or service not known解决办法

解决服务器无法ping通外网问题 1、问题描述&#xff1a; 配置了网卡信息&#xff0c;发现还是无法访问外网&#xff0c;并报ping: www.baidu.com: Name or service not known信息 2、问题原因&#xff1a; 这就是外网没开通好 3、解决方法&#xff1a; 修改网卡文件&#xff…

易货:一种古老而有效的商业模式

在当今的商业世界中&#xff0c;我们常常听到关于电子商务、互联网和社交媒体等新技术的讨论。然而&#xff0c;尽管这些新技术为我们的日常生活带来了许多便利&#xff0c;但它们并没有完全取代传统的商业模式。其中&#xff0c;易货模式是一种古老而有效的商业模式&#xff0…

Python爬虫程序网络请求及内容解析

以下是一个简单的Python爬虫程序&#xff0c;用于爬取商户的内容。这个程序使用了requests和BeautifulSoup库来进行网络请求和内容解析。 import requests from bs4 import BeautifulSoup# 爬虫爬虫IP信息 proxy_host duoip proxy_port 8000# 请求URL url 目标网站# 创建一个…

docker-compose 部署 MySQL 8

目录 前言MySQL 配置文件(my.cnf)docker-compose.yml安装卸载 前言 Windows/Linux 系统通过 docker-compose 部署 MySQL8.0。 MySQL 配置文件(my.cnf) # 服务端参数配置 [mysqld] usermysql # MySQL启动用户 default-storage-engineINNODB # 创建新表时…