【学习记录】移动机器人定位:栅格与蒙特卡罗
一、 介绍:
两种定位方法:1、栅格定位(Grid Localization)2、蒙特卡罗定位(MCL)
二、栅格定位
在整个位姿空间的栅格分解上使用直方图滤波来近似后验,栅格定位具有多模分布的能力。
离散贝叶斯滤波:
bel(xt)={pk,t}bel(x_t)= \{ p_{k,t} \} bel(xt)={pk,t}
每个概率pk,tp_{k,t}pk,t定义在一个栅格单元xkx_kxk上,
合法位姿空间:
domain(Xt)=x1,t∪x2,t∪...xk,tdomain(X_t)=x_{1,t}\cup x_{2,t} \cup...x_{k,t}domain(Xt)=x1,t∪x2,t∪...xk,t
栅格定位算法:
1:Algorithm Grid_localization({pk,t−1,ut,zt,m}\{ p_{k,t-1}, u_t, z_t, m \}{pk,t−1,ut,zt,m}):
2: for all k do
3: p~k,t=∑ipi,t−1\tilde{p}_{k,t}=\sum\limits_{i} p_{i,t-1}p~k,t=i∑pi,t−1 motion_model(mean(xk),ut,mean(xi))(mean(x_k), u_t, mean(x_i))(mean(xk),ut,mean(xi))
4: pk,t=ηp~k,tp_{k, t}=\eta \tilde{p}_{k,t}pk,t=ηp~k,tmeansurement_model(zt,mean(xk),mz_t,mean(x_k),mzt,mean(xk),m)
5: endfor
6: renturn{pk,tp_{k,t}pk,t}
算法第3行:实现运动模型更新
算法第4行:实现观测模型更新,使用η\etaη归一化因子进行归一化
三、蒙特卡罗定位
蒙特卡罗定位算法:
1:Algorithm MCL(χt−1,μt,zt,m\chi_{t-1},\mu_{t},z_t,mχt−1,μt,zt,m):
2: χˉ=χt=∅\bar\chi=\chi_t=\emptysetχˉ=χt=∅
3: for m =1 to M do
4: xt[m]=x^{[m]}_t=xt[m]=sample_motion_model(μt,xt−1[m]\mu_t,x^{[m]}_{t-1}μt,xt−1[m])
5: ωt[m]=\omega^{[m]}_{t}=ωt[m]=measurement_model(zt,xt[m],mz_t,x^{[m]}_t,mzt,xt[m],m)
6: χˉt=χˉt+<xt[m],ωt[m]>\bar\chi_t=\bar\chi_t+<x^{[m]}_t,\omega^{[m]}_t>χˉt=χˉt+<xt[m],ωt[m]>
7: endfor
8: for m =1 to M do
9: draw i with probability ∝ωt[i]\varpropto \omega^{[i]}_t∝ωt[i]
10: add xt[i]x^{[i]}_txt[i]to χt\chi_tχt
11: endfor
12: return χt\chi_tχt
AMCL算法:
1:Algorithm Augmented_MCL(cht−1,μt,zt,m\ch_{t-1}, \mu_t,z_t,mcht−1,μt,zt,m):
2: static ωslow\omega_{slow}ωslow