【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)

文章目录

      • 第七部分:粒子滤波PF

第七部分:粒子滤波PF

  1. 应用:处理非线性函数f和h,用于电池电量估算,视频跟踪,封闭环境导航gmapping。

  2. 大数定律:设X为随机变量,E(X)存在,对X采样(做n次随机试验),试验结果记为 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn,则有 lim ⁡ n → ∞ P ( ∣ 1 n ∑ i x i − E ( X ) ∣ < ϵ ) = 1 \lim \limits_{n\to \infin} P(|\frac{1}{n}\sum \limits_i x_i-E(X)|<\epsilon)=1 nlimP(n1ixiE(X)<ϵ)=1

    当n足够大时,均值收敛于期望, 1 n ∑ i x i ≈ E ( X ) = ∫ − ∞ ∞ x f ( x ) d x \frac{1}{n}\sum \limits_i x_i \approx E(X)=\int _{-\infin}^\infin xf(x)dx n1ixiE(X)=xf(x)dx

    狄拉克函数 ∫ c d f ( x ) δ ( x − a ) = f ( a ) , a ∈ [ c , d ] \int _c^df(x)\delta(x-a)=f(a), a\in [c,d] cdf(x)δ(xa)=f(a),a[c,d],将一个函数收缩成一个点。

    1 n ∑ i x i = 1 n ( x 1 + x 2 + . . . + x n ) \frac{1}{n}\sum \limits_i x_i=\frac{1}{n}(x_1+x_2+...+x_n) n1ixi=n1(x1+x2+...+xn) x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn为数,是可以排序的。则设 − ∞ < x 1 < a 1 < x 2 < a 2 < x 3 < . . . < x n < + ∞ -\infin<x1<a1<x2<a2<x3<...<xn<+

    x 1 = ∫ − ∞ a 1 x δ ( x − x 1 ) d x x_1=\int _{-\infin}^{a_1}x\delta(x-x_1)dx x1=a1xδ(xx1)dx x n = ∫ a n − 1 + ∞ x δ ( x − x n ) d x x_n=\int ^{+\infin}_{a_{n-1}}x\delta(x-x_n)dx xn=an1+xδ(xxn)dx

    ⇒ 1 n ∑ i x i = 1 n ( ∫ − ∞ a 1 + ∫ a 1 a 2 + . . . + ∫ a 1 + ∞ ) = 1 n ∫ − ∞ + ∞ x [ ∑ i δ ( x − x i ) ] d x = ∫ − ∞ ∞ x f ( x ) d x \Rightarrow \frac{1}{n} \sum \limits_i x_i=\frac{1}{n} (\int_{-\infin}^{a_1}+\int_{a_1}^{a_2}+...+\int_{a_1}^{+\infin})=\frac{1}{n} \int_{-\infin}^{+\infin}x[\sum \limits_i \delta(x-x_i)]dx=\int_{-\infin}^\infin xf(x)dx n1ixi=n1(a1+a1a2+...+a1+)=n1+x[iδ(xxi)]dx=xf(x)dx,其中 f ( x ) f(x) f(x)是X的PDF。

    由大数定律,当$n \to \infin , , f(x)\approx \frac{1}{n} \sum \limits_i \delta(x-x_i)$,狄拉克函数是非常容易积分的。即大数定律暗示了概率密度可以用一堆带权重的粒子来近似(采样)

    【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第1张图片

    缺点:需要大量粒子。

    如何用少量粒子表示pdf

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第2张图片

  • 在概率密度大的地方升高得快一点:引入权重,让少量粒子有较高的权重。权重 1 n → w i \frac{1}{n}\to w_i n1wi

    f ( x ) ≈ ∑ i 1 n δ ( x − x i ) ⇒ ∑ i w i δ ( x − x i ) f(x)\approx \sum \limits_i \frac{1}{n} \delta(x-x_i) \Rightarrow \sum \limits_i w_i \delta(x-x_i) f(x)in1δ(xxi)iwiδ(xxi) ∑ i w i = 1 \sum \limits_i w_i =1 iwi=1

  • 粒子的数量、位置和权重完全决定了 pdf x 1 , . . . , x n x_1,...,x_n x1,...,xn是样本,权重 w i = 1 / n w_i=1/n wi=1/n

    • 位置影响

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第3张图片
+ 权重影响原则——pdf大的, w i w_i wi

  • 处理方法

    • 比例分配权重 w i = f ( x i ) f ( x 1 ) + f ( x 2 ) + f ( x 3 ) w_i=\frac{f(x_i)}{f(x_1)+f(x_2)+f(x_3)} wi=f(x1)+f(x2)+f(x3)f(xi),满足归一化 ∑ w i = 1 \sum w_i=1 wi=1
    • 大粒子数:也可以 w i = 1 / n w_i=1/n wi=1/n,但是n要足够大(50个以上)
    • 综合:大粒子数,且 w i = f ( x i ) ∑ i f ( x i ) w_i=\frac{f(x_i)}{\sum \limits_i f(x_i)} wi=if(xi)f(xi)
  1. 贝叶斯滤波中的粒子滤波

    x 0 x_0 x0的pdf为 f 0 ( x ) f_0(x) f0(x),在 f 0 ( x ) f_0(x) f0(x)中采了n个样本。

    如何采样:假设 X 0 X_0 X0是一个正态分布,采集到样本 x 0 ( 1 ) , x 0 ( 2 ) , . . . , x 0 ( n ) x_0^{(1)},x_0^{(2)},...,x_0^{(n)} x0(1),x0(2),...,x0(n),设 f 0 ( x ) = ∑ i w 0 ( i ) δ [ x − x 0 ( i ) ] f_0(x)=\sum \limits_i w_0^{(i)} \delta[x-x_0^{(i)}] f0(x)=iw0(i)δ[xx0(i)] w 0 ( i ) w_0^{(i)} w0(i)可以为 1 / n 1/n 1/n也可以按比例分配。

    贝叶斯滤波

    • f 0 ( x ) = ∑ i w i δ [ x − x 0 ( i ) ] f_0(x)=\sum \limits_i w_i \delta[x-x_0^{(i)}] f0(x)=iwiδ[xx0(i)]

    • f 1 − ( x ) = ∫ − ∞ + ∞ f Q [ x − f ( v ) ] f 0 ( v ) d v = ∑ i w i f Q [ x − f ( x 0 ( i ) ) ] f_1^-(x)=\int _{-\infin}^{+\infin}f_Q[x-f(v)]f_0(v)dv=\sum \limits_i w_if_Q [x-f(x_0^{(i)})] f1(x)=+fQ[xf(v)]f0(v)dv=iwifQ[xf(x0(i))]概率分布由一堆粒子近似,多个正态分布按照权重进行叠加

    • f 1 + ( x ) = η f R [ y − h ( x ) ] f 1 − ( x ) f^+_1(x)=\eta f_R[y-h(x)]f^-_1(x) f1+(x)=ηfR[yh(x)]f1(x)

      到这一步已无狄拉克函数无法无穷积分,且很难采样

      解决办法

      • 通过 f 1 − ( x ) f^-_1(x) f1(x)生成一堆粒子,理论上 f 1 − ( x ) = ∑ i w i f Q [ x − f ( x 0 ( i ) ) ] f^-_1(x)= \sum \limits_i w_if_Q [x-f(x_0^{(i)})] f1(x)=iwifQ[xf(x0(i))]也可以采样,也可以计算出新的权重w。

      • 假设 Q ∼ N ( 0 , Q ) Q\sim N(0,Q) QN(0,Q)则, f Q [ x − f ( x 0 ( i ) ) ] ∼ N ( f ( x 0 ( i ) ) , Q ) f_Q[x-f(x_0^{(i)})]\sim N(f(x_0^{(i)}),Q) fQ[xf(x0(i))]N(f(x0(i)),Q) ,则下面要对这一堆概率密度进行采样(找到独立事件)

      • 对预测 f 1 − ( x ) f_1^-(x) f1(x)做傅里叶变换 N ( f ( x o ( i ) ) , Q ) → F . T e i f ( x 0 ( i ) ) t − Q t 2 / 2 = e i f ( x 0 ( i ) ) t e − Q t 2 / 2 N(f(x_o^{(i)}),Q)\mathop{\to} \limits^{F.T} e^{if(x_0^{(i)})t-Qt^2/2}=e^{if(x_0^{(i)})t}e^{-Qt^2/2} N(f(xo(i)),Q)F.Teif(x0(i))tQt2/2=eif(x0(i))teQt2/2

      • 对两个拆分出来的独立事件做傅里叶逆变换

        • e i f ( x 0 ( i ) ) t → I . F . T δ ( x − f ( x 0 ( i ) ) ) e^{if(x_0^{(i)})t}\mathop{\to } \limits^{I.F.T} \delta(x-f(x_0^{(i)})) eif(x0(i))tI.F.Tδ(xf(x0(i))),是必然事件 X = f ( x 0 ( i ) ) X=f(x_0^{(i)}) X=f(x0(i))时的概率密度
        • e − Q t 2 / 2 → I . F . T N ( 0 , Q ) e^{-Qt^2/2} \mathop{\to } \limits^{I.F.T} N(0,Q) eQt2/2I.F.TN(0,Q),是Q的概率密度
      • 定理:若X的pdf为f,Y的pdf为g,X,Y独立,则 Z = X + Y Z=X+Y Z=X+Y p d f = f ∗ g pdf = f*g pdf=fg,设Z的概率密度为h,则 h = f ∗ g h=f*g h=fg(卷积),设 G G G为FT,则 G ( h ) = G ( f ) G ( g ) G(h)=G(f)G(g) G(h)=G(f)G(g)

      • 设事件X的pdf为 f X = δ ( x − f ( x 0 ( i ) ) ) f_X=\delta(x-f(x_0^{(i)})) fX=δ(xf(x0(i))),Y的pdf为 f Y = N ( 0 , Q ) f_Y =N(0,Q) fY=N(0,Q),X,Y独立, G ( f A ) = G ( f X ) G ( f Y ) ⇒ A = X + Y G(f_A)=G(f_X)G(f_Y) \Rightarrow A=X+Y G(fA)=G(fX)G(fY)A=X+Y。想对事件A做随机试验,则只需要对事件X和事件Y分别做随机试验然后把它们加起来。

        分析两个拆分出来的事件 X X X为必然事件, Y ∼ N ( 0 , Q ) Y\sim N(0,Q) YN(0,Q),且X,Y独立

      • f 1 − ( x ) f_1^-(x) f1(x)生成粒子 f 1 − ( x ) = ∑ i w i f Q [ x − f ( x 0 ( i ) ) ] f^-_1(x)= \sum \limits_i w_if_Q [x-f(x_0^{(i)})] f1(x)=iwifQ[xf(x0(i))],对每一个 f Q [ x − f ( x 0 ( i ) ) ] f_Q [x-f(x_0^{(i)})] fQ[xf(x0(i))]可以看做是一个必然事件 X = f ( x 0 ( i ) ) X=f(x_0^{(i)}) X=f(x0(i))与一个随机数 Y ∼ N ( 0 , Q ) Y\sim N(0,Q) YN(0,Q)的叠加。

        则可生成粒子 X 1 − ( 1 ) , X 1 − ( 2 ) , . . . , X 1 − ( n ) X_1^{-(1)},X_1^{-(2)},...,X_1^{-(n)} X1(1),X1(2),...,X1(n) X 1 − ( i ) = f ( x 0 ( i ) ) + v X_1^{-(i)}=f(x_0^{(i)})+v X1(i)=f(x0(i))+v,其中 v ∼ N ( 0 , Q ) v\sim N(0,Q) vN(0,Q)的一个随机数。

        例子 X 1 = 2 X 0 + Q , Q ∼ N ( 0 , 1 ) X_1=2X_0+Q,Q\sim N(0,1) X1=2X0+Q,QN(0,1),设 X 0 ∼ N ( 0 , 1 ) X_0\sim N(0,1) X0N(0,1),样本 x 0 − ( 1 ) = 0 , x 0 − ( 2 ) = 0.1 , x 0 − ( 3 ) = − 0.1 x_0^{-(1)}=0,x_0^{-(2)}=0.1,x_0^{-(3)}=-0.1 x0(1)=0,x0(2)=0.1,x0(3)=0.1

        ​ 则 x 1 − ( 1 ) = 2 ⋅ 0 + 0.12 , x 1 − ( 2 ) = 2 ⋅ 0.1 + 0.08 , x 1 − ( 2 ) = 2 ⋅ ( − 0.1 ) + 0.3 x_1^{-(1)}=2\cdot 0+0.12,x_1^{-(2)}=2\cdot 0.1+0.08,x_1^{-(2)}=2\cdot (-0.1)+0.3 x1(1)=20+0.12,x1(2)=20.1+0.08,x1(2)=2(0.1)+0.3

      • 综上 f 1 − ( x ) = ∑ i w i f Q [ x − f ( x 0 ( i ) ) ] f_1^-(x)=\sum \limits_i w_if_Q [x-f(x_0^{(i)})] f1(x)=iwifQ[xf(x0(i))],对每一个 f Q [ x − f ( x 0 ( i ) ) ] f_Q [x-f(x_0^{(i)})] fQ[xf(x0(i))]生成一个粒子即可。此时 x 1 − ( i ) = f ( x 0 ( i ) ) + Q x_1^{-(i)}=f(x_0^{(i)})+Q x1(i)=f(x0(i))+Q本质是改变了粒子的位置,并未改变粒子的权重
        【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第4张图片

  2. 粒子滤波算法推导

    • 设置初值 X ∼ N ( μ , σ 2 ) X \sim N(\mu,\sigma^2) XN(μ,σ2)

    • 生成 X 0 X_0 X0采样样本 x 0 ( 1 ) , . . . . , x 0 ( n ) x_0^{(1)},....,x_0^{(n)} x0(1),....,x0(n),生成 X 0 X_0 X0的样本对应权重 w 0 ( i ) w_0^{(i)} w0(i),可以1/n,也可以按比例分配 f ( x i ) ∑ i f ( x i ) \frac{f(x_i)}{\sum \limits_i f(x_i)} if(xi)f(xi),其中 f ( x ) f(x) f(x) X 0 X_0 X0的pdf

    • 预测步:生成 X 1 − X_1^- X1样本 x 1 ( i ) = f ( x 0 ( i ) ) + v x_1^{(i)}=f(x_0^{(i)})+v x1(i)=f(x0(i))+v v v v为一个服从 N ( 0 , Q ) N(0,Q) N(0,Q)的正态分布的随机数。

      f − ( x ) = ∑ i w 0 ( i ) δ ( x − x 1 − ( i ) ) f^-(x)=\sum \limits_i w_0^{(i)}\delta (x-x_1^{-(i)}) f(x)=iw0(i)δ(xx1(i))预测步改变了粒子的位置,并未改变粒子的权重

    • 更新步 f 1 + ( x ) = η f R [ y − h ( x ) ] f 1 − ( x ) = ∑ i = 1 n η f R [ y − h ( x ) ] w 0 ( i ) δ ( x − x 1 − ( i ) ) f^+_1(x)=\eta f_R[y-h(x)]f^-_1(x)=\sum \limits_{i=1}^n \eta f_R[y-h(x)] w_0^{(i)}\delta (x-x_1^{-(i)}) f1+(x)=ηfR[yh(x)]f1(x)=i=1nηfR[yh(x)]w0(i)δ(xx1(i))

    【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第5张图片

    ⇒ f 1 + ( x ) = ∑ i = 1 n η f R [ y − h ( x 1 − ( i ) ) ] w 0 ( i ) δ ( x − x 1 − ( i ) ) \Rightarrow f_1^+(x)=\sum \limits_{i=1}^n \eta f_R[y-h(x_1^{-(i)})] w_0^{(i)}\delta (x-x_1^{-(i)}) f1+(x)=i=1nηfR[yh(x1(i))]w0(i)δ(xx1(i))

    w 1 ( i ) = f R [ y − h ( x 1 − ( i ) ) ] w 0 ( i ) w_1^{(i)}= f_R [y-h(x_1^{-(i)})] w_0^{(i)} w1(i)=fR[yh(x1(i))]w0(i),则

    ⇒ f 1 + ( x ) = η ∑ i = 1 n w 1 ( i ) δ ( x − x 1 − ( i ) ) \Rightarrow f_1^+(x)=\eta \sum \limits_{i=1}^n w_1^{(i)} \delta (x-x_1^{-(i)}) f1+(x)=ηi=1nw1(i)δ(xx1(i)) ,其中 η = ( ∑ i w 1 ( i ) ) − 1 \eta =(\sum \limits_i w_1^{(i)})^{-1} η=(iw1(i))1起到归一化作用

    更新步并未改变粒子位置,但是改变了粒子权重

    • 对后验概率分布 f 1 + ( x ) = ∑ i = 1 n w 1 ( i ) δ ( x − x i ) f^+_1(x)=\sum \limits_{i=1}^n w_1^{(i)}\delta(x-x_i) f1+(x)=i=1nw1(i)δ(xxi)估计期望 X ^ k + = E ( X 1 + ) = ∫ − ∞ ∞ x ∑ i = 1 n w 1 ( i ) δ ( x − x i ) d x = ∑ i = 1 n w 1 ( i ) x i \hat X_k^+ =E(X_1^+)=\int_{-\infin}^\infin x\sum \limits_{i=1}^n w_1^{(i)}\delta(x-x_i)dx=\sum \limits_{i=1}^n w_1^{(i)}x_i X^k+=E(X1+)=xi=1nw1(i)δ(xxi)dx=i=1nw1(i)xi

      方差 D ( X 1 + ) = E ( X 1 2 + ) − [ E ( X 1 + ) ] 2 = ∑ i = 1 n ( w 1 ( i ) x i 2 ) − ( X ^ k + ) 2 D(X_1^+)=E(X_1^{2+})-[E(X_1^+)]^2=\sum \limits_{i=1}^n(w_1^{(i)}x_i^2)-(\hat X_k^+)^2 D(X1+)=E(X12+)[E(X1+)]2=i=1n(w1(i)xi2)(X^k+)2

  3. 粒子滤波算法流程

    • 设置初值 X ∼ N ( μ , σ 2 ) X \sim N(\mu,\sigma^2) XN(μ,σ2)
    • 生成 X 0 X_0 X0采样样本 x 0 ( 1 ) , . . . . , x 0 ( n ) x_0^{(1)},....,x_0^{(n)} x0(1),....,x0(n),生成 X 0 X_0 X0的样本对应权重 w 0 ( i ) w_0^{(i)} w0(i),可以1/n,也可以按比例分配 f ( x i ) ∑ i f ( x i ) \frac{f(x_i)}{\sum \limits_i f(x_i)} if(xi)f(xi),其中 f ( x ) f(x) f(x) X 0 X_0 X0的pdf
    • 预测步:生成 X 1 − X_1^- X1样本 x 1 ( i ) = f ( x 0 ( i ) ) + v x_1^{(i)}=f(x_0^{(i)})+v x1(i)=f(x0(i))+v v v v为一个服从 N ( 0 , Q ) N(0,Q) N(0,Q)的正态分布的随机数。更新粒子位置
    • 更新步:设观测值 y 1 y_1 y1,生成 w 1 ( i ) = f R [ y 1 − h ( x 1 − ( i ) ) ] w 0 ( i ) w_1^{(i)}=f_R[y_1-h(x_1^{-(i)})]w_0^{(i)} w1(i)=fR[y1h(x1(i))]w0(i)更新粒子权重。
    • w 1 ( i ) w_1^{(i)} w1(i)归一化 w 1 ( i ) = w 1 ( i ) ∑ i w 1 ( i ) w_1^{(i)}=\frac{w_1^{(i)}}{\sum \limits_i w_1^{(i)}} w1(i)=iw1(i)w1(i)
    • 此时有新的粒子 X 1 ( i ) X_1^{(i)} X1(i)和新的权重 w 1 ( i ) w_1^{(i)} w1(i)
    • 再由预测步生成 X 2 ( i ) = f ( x 1 ( i ) ) + v X_2^{(i)}=f(x_1^{(i)})+v X2(i)=f(x1(i))+v
    • 再由更新步生成 w 2 ( i ) = f R [ y 2 − h ( x 2 − ( i ) ) ] w 0 ( i ) w_2^{(i)}=f_R[y_2-h(x_2^{-(i)})]w_0^{(i)} w2(i)=fR[y2h(x2(i))]w0(i),归一化 w 2 ( i ) = w 2 ( i ) ∑ i w 2 ( i ) w_2^{(i)}=\frac{w_2^{(i)}}{\sum \limits_i w_2^{(i)}} w2(i)=iw2(i)w2(i)
    • . . . . . ..... .....
  4. 重采样:为了解决粒子退化问题,针对下一步更新失效的问题,但必然导致粒子多样性丧失,且减慢粒子滤波的速度。重采样判据 N = 1 ∑ w i 2 N=\frac{1}{\sum w_i^2} N=wi21

    • 粒子退化问题:只有少数粒子具有较高的权重,大量粒子权重极低。 → \to 下一步更新失效

      • 原因1:粒子数太多

      • 原因2: w k ( i ) = f R [ y k − h ( x k − ( i ) ) ] w k − 1 ( i ) w_k^{(i)}=f_R[y_k-h(x_k^{-(i)})]w_{k-1}^{(i)} wk(i)=fR[ykh(xk(i))]wk1(i) f R [ y k − h ( x k ( i ) ) ] = ( 2 π R ) − 1 / 2 e − [ y k − h ( x k ( i ) ) ] 2 2 R f_R[y_k-h(x_k^{(i)})]=(2\pi R)^{-1/2}e^{-\frac{[y_k-h(x_k^{(i)})]^2}{2R}} fR[ykh(xk(i))]=(2πR)1/2e2R[ykh(xk(i))]2 e − α x 2 e^{-\alpha x^2} eαx2

        【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第6张图片

    • 例子退化的坏处 f k + = δ ( x − x 2 ) f_k^+=\delta(x-x_2) fk+=δ(xx2),除了 w k ( 2 ) = 1 w_k^{(2)}=1 wk(2)=1,其余权重都是0。进行预测步 x k + 1 ( i ) = f ( x k ( i ) ) + v k √ x_{k+1}^{(i)}=f(x_k^{(i)})+v_k \surd xk+1(i)=f(xk(i))+vk;进行更新步 w k ( 2 ) = f R [ y k − h ( x k − ( 2 ) ) ] w k − 1 ( 2 ) w_k^{(2)}=f_R[y_k-h(x_k^{-(2)})]w_{k-1}^{(2)} wk(2)=fR[ykh(xk(2))]wk1(2)其余权重都还是0;归一化 w k + 1 ( 2 ) = w k + 1 ( 2 ) ∑ i w k + 1 ( i ) = 1 w_{k+1}^{(2)}=\frac{w_{k+1}^{(2)}}{\sum \limits_i w_{k+1}^{(i)}} =1 wk+1(2)=iwk+1(i)wk+1(2)=1权重没有更新,失去了权重更新的作用

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第7张图片

  • 重采样的流程

    • 按概率进行复制和淘汰,权重高的粒子更有可能被多次复制,从而保证整个粒子数不变。

    • 复制后把所有粒子的权重设为 1 n \frac{1}{n} n1

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第8张图片

  • 例子

    • x 1 : w 1 = 0.1 , x 2 : w 2 = 0.1 , x 3 : w 3 = 0.7 , x 4 : w 4 = 0.1 x_1:w_1=0.1,x_2:w_2=0.1,x_3:w_3=0.7,x_4:w_4=0.1 x1:w1=0.1,x2:w2=0.1,x3:w3=0.7,x4:w4=0.1,在[0,1]上按 w i w_i wi的大小生成区间,权重越大区间越长

      【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第9张图片

      每个区间为 ( 0 , w 1 ) ( w 1 , w 1 + w 2 ) , . . . , ( ∑ i − 1 w i − 1 , ∑ i w i ) (0,w_1)(w_1,w_1+w_2),...,(\sum \limits_{i-1} w_{i-1},\sum \limits_{i} w_i) (0,w1)(w1,w1+w2),...,(i1wi1,iwi),即 ( 0 , 0.1 ) ( 0.1 , 0.2 ) ( 0.2 , 0.9 ) ( 0.9 , 1 ) (0,0.1)(0.1,0.2)(0.2,0.9)(0.9,1) (0,0.1)(0.1,0.2)(0.2,0.9)(0.9,1)

    • 随机生成随机数a, a ∼ U ( 0 , 1 ) a\sim U(0,1) aU(0,1)

    • 看a落在哪个区间,就把该区间对应粒子进行复制。若a取4次, x 1 x_1 x1复制一次, x 3 x_3 x3复制三次,则重采样结果是 x 1 , x 3 , x 3 , x 3 x_1,x_3,x_3,x_3 x1,x3,x3,x3,即按概率进行复制。

    • 所有粒子权重设为 1 n \frac{1}{n} n1

    • 重采样代码

      Xold=[x1 x2 x3 x4];
      Wold=[w1 w2 w3 w4];
      for i=1:4
          a = unifrnd(0,1);
          C[4] = (w1,w1+w2,w1+w2+w3,1);
          for j = 1:4
              if(a
  1. [粒子滤波算法代码实现](

    注意:滤波之前一定要写成状态方程观测方程的形式 x k = f ( x k − 1 ) x_k=f(x_{k-1}) xk=f(xk1),大多数情况下不能直接得到 x k x_k xk x k − 1 x_{k-1} xk1的关系,而是 x = f ( t ) x=f(t) x=f(t),要用各种模型(改进欧拉、龙格库塔、泰勒展开等)将 x = f ( t ) x=f(t) x=f(t)转化为** x k = f ( x k − 1 ) x_k=f(x_{k-1}) xk=f(xk1)**。

  2. 如何在复杂pdf上采样

    采样粒子的特点:概率密度大的地方粒子密度大,概率密度小的地方粒子密度小。

    采样方法:高pdf 的地方粒子有更大的概率被保留,低pdf的地方粒子有更大的概率被去掉。做减法,结果粒子数不可控。

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第10张图片

均匀分布 → \to 任意分布

  • 均匀分布生成粒子

  • 取直线M,使 M ≥ f ( x ) M\geq f(x) Mf(x)

  • 对每一个粒子 x 1 , , . . . , x n x_1,,...,x_n x1,,...,xn做判断:生成随机数 a ∼ U ( 0 , M ) a\sim U(0,M) aU(0,M),看a落在哪个区间,若 a ∈ ( 0 , f ( x i ) ) a\in (0,f(x_i)) a(0,f(xi)) x i x_i xi保留,否则去掉。

    【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第11张图片

任意分布 → \to 均匀分布

  • g ( x ) g(x) g(x)为正态分布

  • 在g(x)采样

  • 找到一个常数M,使得 M g ( x ) ≥ f ( x ) Mg(x)\geq f(x) Mg(x)f(x)

  • 对于每一个 x i x_i xi,生成一个随机数 a ∼ U ( 0 , M g ( x i ) ) a\sim U(0,Mg(x_i)) aU(0,Mg(xi)),看a落在哪个区间,若 a ∈ ( 0 , f ( x i ) ) a\in (0,f(x_i)) a(0,f(xi))保留,反之拒绝。

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第12张图片

接受-拒绝采样法:设待采样分布 f ( x ) f(x) f(x),容易采样分布 g ( x ) g(x) g(x)提议分布proposal distribute)。做加法,结果粒子数可控。

  • 找到M,使得 M g ( x ) ≥ f ( x ) Mg(x)\geq f(x) Mg(x)f(x)
  • g ( x ) g(x) g(x)采样一个粒子 x 1 x_1 x1
  • 对于每一个 x i x_i xi,生成一个随机数 a ∼ U ( 0 , M g ( x 1 ) ) a\sim U(0,Mg(x_1)) aU(0,Mg(x1)),看a落在哪个区间,若 a ∈ ( 0 , f ( x 1 ) ) a\in (0,f(x_1)) a(0,f(x1))保留,反之拒绝。
  • g ( x ) g(x) g(x)采样一个粒子 x 2 x_2 x2
  • . . . . .... ....

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第13张图片

提议分布尽可能要与 f ( x ) f(x) f(x)位置、形状贴近,形状越相似,拒绝率越低。

【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第14张图片
【SLAM基础入门】贝叶斯滤波、卡尔曼滤波、粒子滤波笔记(4)_第15张图片

  1. 改写预测方程:已知 X = f ( t ) X= f(t) X=f(t),如何得到高精度的 X k = F ( X k − 1 ) X_k=F(X_{k-1}) Xk=F(Xk1)

    核心方程 { x k = f ( x k − 1 ) + Q k 预 测 难 写 z k , j = h ( x k ) + R k 观 测 好 写 \left\{\begin{array}{l} \begin{aligned} x_k &= f(x_{k-1})+Q_k 预测 难写\\ z_{k,j} &= h(x_k)+R_{k}观测 好写 \end{aligned} \end{array}\right. {xkzk,j=f(xk1)+Qk=h(xk)+Rk

    解决方式 x = f ( t ) → d i s c r e t e x k = f ( t k ) ⇒ x k = F ( x k − 1 , t ) x=f(t) \mathop{\to} \limits^{discrete} x_k=f(t_k)\Rightarrow x_k = F(x_{k-1},t) x=f(t)discretexk=f(tk)xk=F(xk1,t),如
    [ X k X ˙ k X ¨ k ] = [ 1 d t d t 2 / 2 0 1 d t 0 0 1 ] [ X k − 1 X ˙ k − 1 X ¨ k − 1 ] + [ Q k 11 Q k 2 Q k 3 X k ] \begin{bmatrix} X_k\\[4pt] \dot X_k\\[4pt] \ddot X_k \end{bmatrix}= \begin{bmatrix} 1&dt&dt^2/2\\[4pt] 0&1&dt\\[4pt] 0&0&1 \end{bmatrix} \begin{bmatrix} X_{k-1}\\[4pt] \dot X_{k-1}\\[4pt] \ddot X_{k-1} \end{bmatrix}+\begin{bmatrix} Q_{k11}\\[4pt] Q_{k2}\\[4pt] Q_{k3} X_k \end{bmatrix} XkX˙kX¨k=100dt10dt2/2dt1Xk1X˙k1X¨k1+Qk11Qk2Qk3Xk ,但是改变了维数,计算了许多不必要的量,计算缓慢。

    思路:转换为常微分方程数值解法 x = f ( t ) ⇒ x ˙ = F ( x , t ) x=f(t)\Rightarrow \dot x=F(x,t) x=f(t)x˙=F(x,t),使用欧拉法、龙格库塔法,在不改变维数的前提下提高精度。

    • 已知 d x d t + p ( t ) x = 0 ⇒ x = e − ∫ p ( t ) d t + l n C \frac{dx}{dt}+p(t)x=0 \Rightarrow x= e^{-\int p(t)dt +lnC} dtdx+p(t)x=0x=ep(t)dt+lnC想用 d x d t + p ( t ) x = 0 ⇐ x = e − ∫ p ( t ) d t + l n C \frac{dx}{dt}+p(t)x=0 \Leftarrow x= e^{-\int p(t)dt +lnC} dtdx+p(t)x=0x=ep(t)dt+lnC,来得到 x ˙ = F ( x , t ) \dot x=F(x,t) x˙=F(x,t)
    • x = f ( t ) = e ∣ l n f ( t ) ∣ x=f(t)=e^{|lnf(t)|} x=f(t)=elnf(t)
    • 对比得到 p ( t ) = − f ′ ( t ) f ( t ) p(t)=-\frac{f'(t)}{f(t)} p(t)=f(t)f(t)
    • 即得到 x = f ( t ) ⇒ x ˙ − f ′ ( t ) f ( t ) x = 0 ⇒ x ˙ = F ( x , t ) = f ′ ( t ) f ( t ) x x=f(t) \Rightarrow \dot x -\frac{f'(t)}{f(t)}x=0 \Rightarrow \dot x=F(x,t)=\frac{f'(t)}{f(t)}x x=f(t)x˙f(t)f(t)x=0x˙=F(x,t)=f(t)f(t)x

    举例:设 x = f ( t ) = e t 2 x=f(t)=e^{t^2} x=f(t)=et2,则 f ′ ( t ) = 2 t e t 2 f'(t)=2te^{t^2} f(t)=2tet2,因此 F ( x , t ) = 2 t e t 2 e t 2 x = 2 t x ⇒ x ˙ = 2 t x F(x,t) = \frac{2te^{t^2}}{e^{t^2}}x=2tx \Rightarrow \dot x=2tx F(x,t)=et22tet2x=2txx˙=2tx

    • 欧拉法 x k = x k − 1 + 2 t k − 1 x k − 1 d t x_k = x_{k-1}+2t_{k-1}x_{k-1}dt xk=xk1+2tk1xk1dt
    • 改进欧拉法 x k = x k − 1 + d t [ 2 t k − 1 x k − 1 + t t k ( x k − 1 + 2 t k − 1 x k − 1 d t ) ] / 2 x_k = x_{k-1}+dt[2t_{k-1}x_{k-1}+tt_k( x_{k-1}+2t_{k-1}x_{k-1}dt)]/2 xk=xk1+dt[2tk1xk1+ttk(xk1+2tk1xk1dt)]/2
    • 龙格库塔法

你可能感兴趣的:(SLAM滤波专栏,人工智能,自动驾驶)