粒子滤波器是一种强大的非线性滤波技术,用于估计动态系统的状态。与卡尔曼滤波器不同,粒子滤波器可以处理任意的非线性性和非高斯性,这使其在机器人定位、目标跟踪、计算机视觉等领域得到广泛应用。
粒子滤波器的核心思想是使用一组加权样本(称为"粒子")来近似目标状态的后验概率分布。每个粒子代表状态空间中的一个可能状态,而其权重则表示该状态的可能性或概率。想象在一个迷雾中的森林里寻找宝藏。你不确定宝藏的确切位置,但有一个不太准确的地图和一个不太可靠的金属探测器。粒子滤波器就像派出多个搜索小组(粒子)在不同位置搜索,根据每组获得的金属探测器信号强度(观测值)来判断哪些区域更可能藏有宝藏。随着时间推移,你会让更多的搜索小组前往信号较强的区域,从而逐渐缩小搜索范围。
粒子滤波器基于贝叶斯滤波框架,我们首先定义完整的数学表示。对于一个马尔可夫动态系统,我们的目标是在给定所有历史观测 z 1 : t z_{1:t} z1:t 的情况下,估计状态变量 x t x_t xt 的后验概率分布 p ( x t ∣ z 1 : t ) p(x_t|z_{1:t}) p(xt∣z1:t)。
根据贝叶斯定理,我们有:
p ( x t ∣ z 1 : t ) = p ( z t ∣ x t ) p ( x t ∣ z 1 : t − 1 ) p ( z t ∣ z 1 : t − 1 ) p(x_t|z_{1:t}) = \frac{p(z_t|x_t)p(x_t|z_{1:t-1})}{p(z_t|z_{1:t-1})} p(xt∣z1:t)=p(zt∣z1:t−1)p(zt∣xt)p(xt∣z1:t−1)
其中分母是归一化常数,可以表示为:
p ( z t ∣ z 1 : t − 1 ) = ∫ p ( z t ∣ x t ) p ( x t ∣ z 1 : t − 1 ) d x t p(z_t|z_{1:t-1}) = \int p(z_t|x_t)p(x_t|z_{1:t-1})dx_t p(zt∣z1:t−1)=∫p(zt∣xt)p(xt∣z1:t−1)dxt
先验分布 p ( x t ∣ z 1 : t − 1 ) p(x_t|z_{1:t-1}) p(xt∣z1:t−1) 通过Chapman-Kolmogorov方程计算:
p ( x t ∣ z 1 : t − 1 ) = ∫ p ( x t ∣ x t − 1 ) p ( x t − 1 ∣ z 1 : t − 1 ) d x t − 1 p(x_t|z_{1:t-1}) = \int p(x_t|x_{t-1})p(x_{t-1}|z_{1:t-1})dx_{t-1} p(xt∣z1:t−1)=∫p(xt∣xt−1)p(xt−1∣z1:t−1)dxt−1
贝叶斯递归估计可以分解为两个阶段:预测和更新。
预测阶段:
p ( x t ∣ z 1 : t − 1 ) = ∫ p ( x t ∣ x t − 1 ) p ( x t − 1 ∣ z 1 : t − 1 ) d x t − 1 p(x_t|z_{1:t-1}) = \int p(x_t|x_{t-1})p(x_{t-1}|z_{1:t-1})dx_{t-1} p(xt∣z1:t−1)=∫p(xt∣xt−1)p(xt−1∣z1:t−1)dxt−1
更新阶段:
p ( x t ∣ z 1 : t ) = p ( z t ∣ x t ) p ( x t ∣ z 1 : t − 1 ) p ( z t ∣ z 1 : t − 1 ) p(x_t|z_{1:t}) = \frac{p(z_t|x_t)p(x_t|z_{1:t-1})}{p(z_t|z_{1:t-1})} p(xt∣z1:t)=p(zt∣z1:t−1)p(zt∣xt)p(xt∣z1:t−1)
当状态转移和观测模型高度非线性或非高斯时,以上积分通常难以解析求解。粒子滤波使用蒙特卡洛方法来近似后验分布。
考虑任意函数 g ( x ) g(x) g(x) 关于分布 p ( x ) p(x) p(x) 的期望:
E [ g ( x ) ] = ∫ g ( x ) p ( x ) d x E[g(x)] = \int g(x)p(x)dx E[g(x)]=∫g(x)p(x)dx
如果我们有从分布 p ( x ) p(x) p(x) 中抽取的 N N N 个独立同分布样本 { x i } i = 1 N \{x^i\}_{i=1}^N {xi}i=1N,则可以近似计算:
E [ g ( x ) ] ≈ 1 N ∑ i = 1 N g ( x i ) E[g(x)] \approx \frac{1}{N}\sum_{i=1}^N g(x^i) E[g(x)]≈N1i=1∑Ng(xi)
当 N → ∞ N \rightarrow \infty N→∞ 时,根据大数定律,这个近似会收敛到真实值。
然而,在实践中通常难以直接从后验分布 p ( x t ∣ z 1 : t ) p(x_t|z_{1:t}) p(xt∣z1:t) 中采样。因此,粒子滤波器使用重要性采样技术,从一个更容易采样的提议分布 q ( x t ∣ x t − 1 , z t ) q(x_t|x_{t-1}, z_t) q(xt∣xt−1,zt) 中抽取样本,然后通过权重调整来修正这种近似。考虑序贯估计问题中的完整状态轨迹 x 0 : t x_{0:t} x0:t,我们希望从 p ( x 0 : t ∣ z 1 : t ) p(x_{0:t}|z_{1:t}) p(x0:t∣z1:t) 中采样。采用提议分布 q ( x 0 : t ∣ z 1 : t ) q(x_{0:t}|z_{1:t}) q(x0:t∣z1:t),重要性权重定义为:
w t = p ( x 0 : t ∣ z 1 : t ) q ( x 0 : t ∣ z 1 : t ) w_t = \frac{p(x_{0:t}|z_{1:t})}{q(x_{0:t}|z_{1:t})} wt=q(x0:t∣z1:t)p(x0:t∣z1:t)
假设提议分布可以分解为:
q ( x 0 : t ∣ z 1 : t ) = q ( x t ∣ x 0 : t − 1 , z 1 : t ) q ( x 0 : t − 1 ∣ z 1 : t − 1 ) q(x_{0:t}|z_{1:t}) = q(x_t|x_{0:t-1}, z_{1:t})q(x_{0:t-1}|z_{1:t-1}) q(x0:t∣z1:t)=q(xt∣x0:t−1,z1:t)q(x0:t−1∣z1:t−1)
并且状态满足马尔可夫性质,观测条件独立,则:
p ( x 0 : t ∣ z 1 : t ) ∝ p ( z t ∣ x t ) p ( x t ∣ x t − 1 ) p ( x 0 : t − 1 ∣ z 1 : t − 1 ) p(x_{0:t}|z_{1:t}) \propto p(z_t|x_t)p(x_t|x_{t-1})p(x_{0:t-1}|z_{1:t-1}) p(x0:t∣z1:t)∝p(zt∣xt)p(xt∣xt−1)p(x0:t−1∣z1:t−1)
结合上述两式,我们可以递归地计算权重:
w t = w t − 1 p ( z t ∣ x t ) p ( x t ∣ x t − 1 ) q ( x t ∣ x 0 : t − 1 , z 1 : t ) w_t = w_{t-1} \frac{p(z_t|x_t)p(x_t|x_{t-1})}{q(x_t|x_{0:t-1}, z_{1:t})} wt=wt−1q(xt∣x0:t−1,z1:t)p(zt∣xt)p(xt∣xt−1)
通常,我们选择状态转移概率作为提议分布,即 q ( x t ∣ x 0 : t − 1 , z 1 : t ) = p ( x t ∣ x t − 1 ) q(x_t|x_{0:t-1}, z_{1:t}) = p(x_t|x_{t-1}) q(xt∣x0:t−1,z1:t)=p(xt∣xt−1),这种情况下权重简化为:
w t = w t − 1 p ( z t ∣ x t ) w_t = w_{t-1}p(z_t|x_t) wt=wt−1p(zt∣xt)
归一化后的权重为:
w ~ t i = w t i ∑ j = 1 N w t j \tilde{w}_t^i = \frac{w_t^i}{\sum_{j=1}^N w_t^j} w~ti=∑j=1Nwtjwti
在序贯重要性采样中,随着时间的推移,权重方差会不断增大,导致大多数粒子的权重接近于零,这称为粒子退化问题。可以证明,在最优提议分布 q ∗ ( x t ∣ x t − 1 , z t ) = p ( x t ∣ x t − 1 , z t ) q^*(x_t|x_{t-1}, z_t) = p(x_t|x_{t-1}, z_t) q∗(xt∣xt−1,zt)=p(xt∣xt−1,zt) 下,权重方差最小。
最优提议分布可以表示为:
p ( x t ∣ x t − 1 , z t ) = p ( z t ∣ x t ) p ( x t ∣ x t − 1 ) p ( z t ∣ x t − 1 ) p(x_t|x_{t-1}, z_t) = \frac{p(z_t|x_t)p(x_t|x_{t-1})}{p(z_t|x_{t-1})} p(xt∣xt−1,zt)=p(zt∣xt−1)p(zt∣xt)p(xt∣xt−1)
其中:
p ( z t ∣ x t − 1 ) = ∫ p ( z t ∣ x t ) p ( x t ∣ x t − 1 ) d x t p(z_t|x_{t-1}) = \int p(z_t|x_t)p(x_t|x_{t-1})dx_t p(zt∣xt−1)=∫p(zt∣xt)p(xt∣xt−1)dxt
使用最优提议分布时,权重更新公式变为:
w t = w t − 1 p ( z t ∣ x t − 1 ) = w t − 1 ∫ p ( z t ∣ x t ) p ( x t ∣ x t − 1 ) d x t w_t = w_{t-1}p(z_t|x_{t-1}) = w_{t-1}\int p(z_t|x_t)p(x_t|x_{t-1})dx_t wt=wt−1p(zt∣xt−1)=wt−1∫p(zt∣xt)p(xt∣xt−1)dxt
粒子滤波器的性能可以通过克拉默-拉奥下界(CRLB)来分析,它提供了无偏估计器方差的下界:
Var ( θ ^ ) ≥ 1 I ( θ ) \text{Var}(\hat{\theta}) \geq \frac{1}{I(\theta)} Var(θ^)≥I(θ)1
其中 I ( θ ) I(\theta) I(θ) 是费舍信息量,定义为:
I ( θ ) = E [ ( ∂ ∂ θ log p ( x ∣ θ ) ) 2 ] = − E [ ∂ 2 ∂ θ 2 log p ( x ∣ θ ) ] I(\theta) = E\left[\left(\frac{\partial}{\partial\theta}\log p(x|\theta)\right)^2\right] = -E\left[\frac{\partial^2}{\partial\theta^2}\log p(x|\theta)\right] I(θ)=E[(∂θ∂logp(x∣θ))2]=−E[∂θ2∂2logp(x∣θ)]
对于粒子滤波器,可以推导出粒子数量 N N N 与估计方差之间的关系:
Var ( x ^ t ) ∝ 1 N \text{Var}(\hat{x}_t) \propto \frac{1}{N} Var(x^t)∝N1
考虑连续时间动态系统,状态演化可以通过随机微分方程(SDE)描述:
d x t = f ( x t , t ) d t + G ( x t , t ) d W t dx_t = f(x_t, t)dt + G(x_t, t)dW_t dxt=f(xt,t)dt+G(xt,t)dWt
其中 W t W_t Wt 是维纳过程。状态的概率密度函数 p ( x , t ) p(x, t) p(x,t) 满足Fokker-Planck-Kolmogorov方程:
∂ p ( x , t ) ∂ t = − ∑ i = 1 n ∂ ∂ x i [ f i ( x , t ) p ( x , t ) ] + 1 2 ∑ i = 1 n ∑ j = 1 n ∂ 2 ∂ x i ∂ x j [ ( G G T ) i j p ( x , t ) ] \frac{\partial p(x, t)}{\partial t} = -\sum_{i=1}^n \frac{\partial}{\partial x_i}[f_i(x, t)p(x, t)] + \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^n \frac{\partial^2}{\partial x_i \partial x_j}[(GG^T)_{ij}p(x, t)] ∂t∂p(x,t)=−i=1∑n∂xi∂[fi(x,t)p(x,t)]+21i=1∑nj=1∑n∂xi∂xj∂2[(GGT)ijp(x,t)]
粒子滤波器可以看作是通过蒙特卡洛方法直接求解该偏微分方程。
粒子滤波器的实现包括以下几个步骤:
在时间 t=0,从先验分布 p ( x 0 ) p(x_0) p(x0) 中采样 N 个粒子 { x 0 i } i = 1 N \{x_0^i\}_{i=1}^N {x0i}i=1N,并将每个粒子的权重初始化为 w 0 i = 1 / N w_0^i = 1/N w0i=1/N。
对于 i = 1 到 N:
从先验分布 p(x_0) 中采样 x_0^i
设置 w_0^i = 1/N
在时间 t,根据状态转移模型 p ( x t ∣ x t − 1 ) p(x_t|x_{t-1}) p(xt∣xt−1) 预测每个粒子的新状态:
对于 i = 1 到 N:
从状态转移概率 p(x_t|x_{t-1}^i) 中采样 x_t^i
在实践中,这通常涉及将过程噪声添加到确定性状态转移函数中:
x t i = f ( x t − 1 i ) + v t i x_t^i = f(x_{t-1}^i) + v_t^i xti=f(xt−1i)+vti
其中 f f f 是状态转移函数, v t i v_t^i vti 是过程噪声。
收到观测值 z t z_t zt 后,根据观测模型 p ( z t ∣ x t ) p(z_t|x_t) p(zt∣xt) 更新每个粒子的权重:
对于 i = 1 到 N:
计算 w_t^i = w_{t-1}^i * p(z_t|x_t^i)
然后对权重进行归一化:
sum_w = 总权重之和
对于 i = 1 到 N:
w_t^i = w_t^i / sum_w
重采样是粒子滤波器中的关键步骤,用于解决粒子退化问题。当大多数粒子的权重接近于零时,只有少数粒子对状态估计有实际贡献,这降低了算法的有效性。重采样的思想是根据粒子的权重对它们进行重新采样,舍弃低权重粒子,复制高权重粒子:
计算有效粒子数 N_eff = 1 / 在和(w_t^i^2)
如果 N_eff < 阈值:
从离散分布 P(i) = w_t^i 中抽取 N 个样本
重置所有粒子权重为 1/N
常用的重采样方法包括多项式重采样、系统重采样和残差重采样等。
最后,我们可以根据加权粒子集合估计系统状态。最常用的方法是计算加权平均:
x ^ t = ∑ i = 1 N w t i x t i \hat{x}_t = \sum_{i=1}^N w_t^i x_t^i x^t=i=1∑Nwtixti
或者选择权重最大的粒子作为估计值:
x ^ t = x t i ∗ , i ∗ = arg max i w t i \hat{x}_t = x_t^{i^*},i^* = \arg\max_i w_t^i x^t=xti∗,i∗=argimaxwti
粒子滤波器的渐近性质可以通过中心极限定理进行分析。当粒子数量 N N N 趋于无穷时,蒙特卡洛近似的误差 ε N \varepsilon_N εN 满足:
N ε N → d N ( 0 , σ 2 ) \sqrt{N}\varepsilon_N \xrightarrow{d} \mathcal{N}(0, \sigma^2) NεNdN(0,σ2)
其中 σ 2 \sigma^2 σ2 是依赖于真实后验分布和提议分布的方差项。具体地,对于任意可积函数 ϕ \phi ϕ,有:
N ( ∑ i = 1 N w t i ϕ ( x t i ) − ∫ ϕ ( x ) p ( x ∣ z 1 : t ) d x ) → d N ( 0 , σ ϕ 2 ) \sqrt{N}\left(\sum_{i=1}^N w_t^i\phi(x_t^i) - \int \phi(x)p(x|z_{1:t})dx\right) \xrightarrow{d} \mathcal{N}(0, \sigma_{\phi}^2) N(i=1∑Nwtiϕ(xti)−∫ϕ(x)p(x∣z1:t)dx)dN(0,σϕ2)
其中渐近方差 σ ϕ 2 \sigma_{\phi}^2 σϕ2 可以表示为:
σ ϕ 2 = ∫ ( ϕ ( x ) − ∫ ϕ ( x ′ ) p ( x ′ ∣ z 1 : t ) d x ′ ) 2 p ( x ∣ z 1 : t ) d x \sigma_{\phi}^2 = \int \left(\phi(x) - \int \phi(x')p(x'|z_{1:t})dx'\right)^2 p(x|z_{1:t})dx σϕ2=∫(ϕ(x)−∫ϕ(x′)p(x′∣z1:t)dx′)2p(x∣z1:t)dx
在高维状态空间中,粒子滤波器面临所谓的"维度灾难"。可以证明,为了维持固定的估计精度,所需的粒子数量随状态维度 d d d 指数增长:
N ∝ α d N \propto \alpha^d N∝αd
其中 α > 1 \alpha > 1 α>1 是一个常数。这种指数关系使得在高维空间中应用粒子滤波器变得计算上不可行。
从理论上可以证明,在高维空间中,粒子权重的变异系数(coefficient of variation)会随着维度的增加而指数增长:
CV ( w t ) ∝ e c ⋅ d \text{CV}(w_t) \propto e^{c \cdot d} CV(wt)∝ec⋅d
其中 c > 0 c > 0 c>0 是一个常数,这导致了严重的权重退化。
对于滤波系统的稳定性分析,可以使用李雅普诺夫方法。定义误差过程 e t = x t − x ^ t e_t = x_t - \hat{x}_t et=xt−x^t,构造李雅普诺夫函数:
V ( e t ) = e t T P e t V(e_t) = e_t^T P e_t V(et)=etTPet
其中 P P P 是正定矩阵。如果存在正数 λ \lambda λ 使得:
E [ V ( e t + 1 ) ∣ e t ] − V ( e t ) ≤ − λ V ( e t ) + C E[V(e_{t+1}) | e_t] - V(e_t) \leq -\lambda V(e_t) + C E[V(et+1)∣et]−V(et)≤−λV(et)+C
其中 C C C 是一个常数,则滤波器是均方稳定的。对于线性高斯系统,可以严格证明卡尔曼滤波器的稳定性。对于非线性系统,粒子滤波器的稳定性分析更为复杂,通常需要结合局部线性化和随机稳定性理论。
从信息几何角度,可以将粒子滤波过程视为在概率分布流形上的演化。定义分布之间的Kullback-Leibler散度:
D K L ( p ∣ ∣ q ) = ∫ p ( x ) log p ( x ) q ( x ) d x D_{KL}(p||q) = \int p(x)\log\frac{p(x)}{q(x)}dx DKL(p∣∣q)=∫p(x)logq(x)p(x)dx
以及Fisher信息度量:
g i j ( θ ) = ∫ p ( x ∣ θ ) ∂ log p ( x ∣ θ ) ∂ θ i ∂ log p ( x ∣ θ ) ∂ θ j d x g_{ij}(\theta) = \int p(x|\theta)\frac{\partial \log p(x|\theta)}{\partial \theta_i}\frac{\partial \log p(x|\theta)}{\partial \theta_j}dx gij(θ)=∫p(x∣θ)∂θi∂logp(x∣θ)∂θj∂logp(x∣θ)dx
预测步骤可以看作是在流形上沿着某个方向的演化,而更新步骤则是在观测约束下的投影。粒子表示可以看作是分布的离散近似,重采样步骤则是一种重新参数化过程。
状态转移模型描述了系统状态如何随时间演化。对于线性高斯系统,它可以表示为:
x t = A x t − 1 + B u t + v t x_t = Ax_{t-1} + Bu_t + v_t xt=Axt−1+But+vt
其中 A A A 是状态转移矩阵, B B B 是控制输入矩阵, u t u_t ut 是控制输入, v t v_t vt 是过程噪声,通常假设为均值为零的高斯白噪声,协方差为 Q Q Q。
对于非线性系统,状态转移可以表示为:
x t = f ( x t − 1 , u t ) + v t x_t = f(x_{t-1}, u_t) + v_t xt=f(xt−1,ut)+vt
其中 f f f 是非线性状态转移函数。
更一般地,考虑随机微分方程:
d x t = f ( x t , t ) d t + G ( x t , t ) d W t dx_t = f(x_t, t)dt + G(x_t, t)dW_t dxt=f(xt,t)dt+G(xt,t)dWt
其离散化形式可以通过Euler-Maruyama方法获得:
x t + Δ t = x t + f ( x t , t ) Δ t + G ( x t , t ) Δ t N ( 0 , I ) x_{t+\Delta t} = x_t + f(x_t, t)\Delta t + G(x_t, t)\sqrt{\Delta t}\mathcal{N}(0, I) xt+Δt=xt+f(xt,t)Δt+G(xt,t)ΔtN(0,I)
观测模型描述了观测值与系统状态之间的关系。对于线性高斯系统,它可以表示为:
z t = H x t + w t z_t = Hx_t + w_t zt=Hxt+wt
其中 H H H 是观测矩阵, w t w_t wt 是观测噪声,通常假设为均值为零的高斯白噪声,协方差为 R R R。
对于非线性系统,观测模型可以表示为:
z t = h ( x t ) + w t z_t = h(x_t) + w_t zt=h(xt)+wt
其中 h h h 是非线性观测函数。
在粒子滤波器中,似然函数 p ( z t ∣ x t ) p(z_t|x_t) p(zt∣xt) 通常假设为高斯分布:
p ( z t ∣ x t ) = 1 ( 2 π ) n ∣ R ∣ exp ( − 1 2 ( z t − h ( x t ) ) T R − 1 ( z t − h ( x t ) ) ) p(z_t|x_t) = \frac{1}{\sqrt{(2\pi)^n|R|}} \exp\left(-\frac{1}{2}(z_t-h(x_t))^TR^{-1}(z_t-h(x_t))\right) p(zt∣xt)=(2π)n∣R∣1exp(−21(zt−h(xt))TR−1(zt−h(xt)))
其中 n n n 是观测向量的维度, ∣ R ∣ |R| ∣R∣ 是协方差矩阵 R R R 的行列式。
对于更复杂的情况,可以考虑非参数似然模型,如基于核密度估计的:
p ( z t ∣ x t ) = ∑ j = 1 M α j K H ( z t − h j ( x t ) ) p(z_t|x_t) = \sum_{j=1}^M \alpha_j K_H(z_t - h_j(x_t)) p(zt∣xt)=j=1∑MαjKH(zt−hj(xt))
其中 K H K_H KH 是带宽矩阵为 H H H 的核函数, α j \alpha_j αj 是混合权重,满足 ∑ j = 1 M α j = 1 \sum_{j=1}^M \alpha_j = 1 ∑j=1Mαj=1。
有效粒子数是评估粒子退化程度的指标,定义为:
N e f f = 1 ∑ i = 1 N ( w t i ) 2 N_{eff} = \frac{1}{\sum_{i=1}^N (w_t^i)^2} Neff=∑i=1N(wti)21
当 N e f f N_{eff} Neff 接近于 N N N(粒子总数)时,表示所有粒子的权重大致相等;当 N e f f N_{eff} Neff 接近于 1 时,表示一个粒子占据了绝大多数权重,其他粒子几乎没有贡献。
可以证明 N e f f N_{eff} Neff 的期望值满足:
E [ N e f f ] ≤ N E[N_{eff}] \leq N E[Neff]≤N
等号当且仅当所有权重相等时成立。此外,有效粒子数与粒子权重方差的关系为:
N e f f = N 1 + N ⋅ Var ( w t ∗ ) N_{eff} = \frac{N}{1 + N \cdot \text{Var}(w_t^*)} Neff=1+N⋅Var(wt∗)N
其中 w t ∗ w_t^* wt∗ 表示归一化前的粒子权重。
从信息论角度,可以定义后验分布的熵:
H [ p ( x t ∣ z 1 : t ) ] = − ∫ p ( x t ∣ z 1 : t ) log p ( x t ∣ z 1 : t ) d x t H[p(x_t|z_{1:t})] = -\int p(x_t|z_{1:t}) \log p(x_t|z_{1:t}) dx_t H[p(xt∣z1:t)]=−∫p(xt∣z1:t)logp(xt∣z1:t)dxt
以及观测与状态之间的互信息:
I ( x t ; z t ∣ z 1 : t − 1 ) = H [ p ( x t ∣ z 1 : t − 1 ) ] − H [ p ( x t ∣ z 1 : t ) ] I(x_t; z_t|z_{1:t-1}) = H[p(x_t|z_{1:t-1})] - H[p(x_t|z_{1:t})] I(xt;zt∣z1:t−1)=H[p(xt∣z1:t−1)]−H[p(xt∣z1:t)]
互信息量度量了新观测 z t z_t zt 提供的信息量。更高的互信息意味着观测更有价值,能更有效地减少状态估计的不确定性。
考虑一个简单的机器人定位问题,其中机器人在二维平面上移动,状态向量包括位置和朝向,即 x t = [ x , y , θ ] T x_t = [x, y, \theta]^T xt=[x,y,θ]T。
假设机器人的运动模型为:
( x t y t θ t ) = ( x t − 1 + v ⋅ Δ t ⋅ cos ( θ t − 1 ) y t − 1 + v ⋅ Δ t ⋅ sin ( θ t − 1 ) θ t − 1 + ω ⋅ Δ t ) + v t \begin{pmatrix} x_t \\ y_t \\ \theta_t \end{pmatrix} = \begin{pmatrix} x_{t-1} + v \cdot \Delta t \cdot \cos(\theta_{t-1}) \\ y_{t-1} + v \cdot \Delta t \cdot \sin(\theta_{t-1}) \\ \theta_{t-1} + \omega \cdot \Delta t \end{pmatrix} + v_t xtytθt = xt−1+v⋅Δt⋅cos(θt−1)yt−1+v⋅Δt⋅sin(θt−1)θt−1+ω⋅Δt +vt
其中 v v v 是线速度, ω \omega ω 是角速度, Δ t \Delta t Δt 是时间步长, v t v_t vt 是过程噪声。
假设机器人配备了激光传感器,可以测量到周围环境中的地标距离,观测模型为:
z t j = ( x t − l x j ) 2 + ( y t − l y j ) 2 + w t j z_t^j = \sqrt{(x_t - l_x^j)^2 + (y_t - l_y^j)^2} + w_t^j ztj=(xt−lxj)2+(yt−lyj)2+wtj
其中 ( l x j , l y j ) (l_x^j, l_y^j) (lxj,lyj) 是第 j j j 个地标的位置, w t j w_t^j wtj 是观测噪声。
初始化:随机生成 N 个粒子,表示机器人可能的初始位置和朝向。
预测:根据机器人的运动命令( v v v 和 ω \omega ω)和状态转移模型,预测每个粒子的新状态。
更新:根据激光传感器的观测值和观测模型,计算每个粒子的权重。
重采样:根据粒子权重进行重采样,保留高权重粒子,舍弃低权重粒子。
估计:计算加权平均作为机器人的位置估计。
随着机器人的移动和持续观测,粒子会逐渐聚集在机器人的真实位置附近,从而实现准确的定位。