基于滤波器的激光SLAM-2-Fast-SLAM

(Mark:有空把Fast-SLAM论文看一下)

原理

Fast-SLAM也是用粒子滤波(RBPF,就是PF加了RB分解,把地图m提出来了)。

之前我们已经推导过贝叶斯滤波即,给定观测和控制量,当前时刻状态量x 等于 

常数 * 观测 *(运动模型 * 上一时刻状态量)

那实际SLAM运用中我们还需要一个地图m,那就是求p(x_1_:_t,m|u_1_:_t,z_1_:_t)

 

(引入条件概率公式)

p(a,b)=p(a)*(b|a)

 

可以得到

p(x_1_:_t,m|u_1_:_t,z_1_:_t)=p(x_1_:_t|u_1_:_t,z_1_:_t)*p(m|x_1_:_t,u_1_:_t,z_1_:_t)

地图m跟控制量无关

p(x_1_:_t,m|u_1_:_t,z_1_:_t)=p(x_1_:_t|u_1_:_t,z_1_:_t)*p(m|x_1_:_t,z_1_:_t)

我们只需要把精力放在求机器人状态上面p(x_1_:_t|u_1_:_t,z_1_:_t)

因为有了状态之后,地图p(m|x_1_:_t,z_1_:_t)是有确定解的(close_form)。

 

跟之前的两篇一样,我们希望把这个状态量做成一个迭代解的形式。(把轨迹问题转变成增量问题)。

推导如下

p(x_1_:_t|u_1_:_t,z_1_:_t)

=p(x_1_:_t|z_t,u_1_:_t,z_1_:_t_-_1)

=\eta *p(z_t|x_1_:_t,u_1_:_t,z_1_:_t_-_1)*p(x_1_:_t|u_1_:_t,z_1_:_t_-_1)(贝叶斯公式)

=\eta *p(z_t|x_1_:_t,u_1_:_t,z_1_:_t_-_1)*p(x_t,x_t_-_1|u_1_:_t,z_1_:_t_-_1)

=\eta *p(z_t|x_1_:_t,u_1_:_t,z_1_:_t_-_1)*p(x_t|x_t_-_1,u_1_:_t,z_1_:_t_-_1)*p(x_t_-_1|u_1_:_t,z_1_:_t_-_1)(条件概率公式)

=\eta *p(z_t|x_1_:_t,u_1_:_t,z_1_:_t_-_1)*p(x_t|x_t_-_1,u_t)*p(x_t_-_1|u_1_:_t_-_1,z_1_:_t_-_1)(xt和观测无关,且知道xt-1就不需要u1:t-1,另有xt-1跟ut无关)

即,当前时刻的路径 等于 观测 * 运动学模型 * 当前时刻路径。

 

用粒子滤波的做法,我们把p(x_t|x_t_-_1,u_t)用粒子群表示。

每隔粒子用运动学模型进行传播。

传播之后用观测模型进行权重计算(并根据位姿构建地图)

 

存在的问题

占内存

  1. 每个粒子带一幅地图,占内存
  2. 如果里程计误差大,则需要更多的粒子才能比较好的代表分布,又需要内存。

 

改进

所以要提升proposal分布采样的质量。(GMAPPING)

比如我们以前从一个平滑的分布x^i_t\sim p(x_t|u_t,x^i_t_-_1)里面采样,就要很多样本,均匀的去采。

那如果我们引入一个scan-match,尽量在最匹配(可能是局部最优)的范围内采样,就可以减少采样数。

(好像是等于把一个分布隔断成一个一个的局部最优,每隔局部最优采一个样?)(用的是Ut,没有观测,怎么来的scan match?)

x^i_t=\arg \max (x_t){p(z_t|x_t,m)*p(x_t|u_t,x^i_t_-_1)}

 

粒子耗散

重采样导致所有粒子来自一个或者少数几个粒子的复制。

改进

减少重采样次数,用一个量来表示当前估计和真实分布的差异。(GMAPPING)

N_e_f_f=1/\sum (w^i)^2

 

进一步改进

进一步优化proposal

上面的优化方式:从proposal分布进行采样,然后用极大似然估计提升采样质量。

这里的优化方式:考虑最近一帧的观测,把proposal分布限制在一个狭小的有效区域,然后正常的对proposal分布进行采样。

(因为激光雷达的匹配比里程计的测量精确很多,从分布上来说,激光雷达匹配的方差要比里程计模型的方差小很多)

即原始proposal p(x_t|x_t_-_1,u_t)被替换成p(x_t|x_t_-_1,u_t,z_t,m)=\eta *p(z_t|x_t,m)*p(x_t|x_t_-_1,u_t)

在L^i区域,p(z_t|x_t,m)要远大于p(x_t|x_t_-_1,u_t),所以在这里我们令它为常数。

p(x_t|x_t_-_1,u_t,z_t,m)=\eta *p(z_t|x_t,m) ,where,x_t\in L^(^i^)

proposal分布从里程计观测模型变成了激光雷达观测模型

我们假设激光雷达观测模型符合高斯分布

p(x_t|x_t_-_1,u_t,z_t,m)\cong N(\mu ,\sum )

其实是scan match(极大似然估计)得到一个局部极值(最大匹配值)x^*_t

x^*_t=argmax(x_t){p(z_t|x_t,m)*p(x_t|u_t,x^i_t_-_1)}

我们认为这个位姿在高斯分布的μ附近,那么就直接在这附近采样得到k个位姿。

{x_j|\left | x_j-x^*_t \right |<\Delta }

对这K个分布求概率p(z_t|x_j,m),以求解对应的高斯分布。

\mu =\frac{1}{n}\sum _{j=1}^{k}x_jp(z_t|x_j,m)

\sum = \frac{1}{n}\sum _{j=1}^{k}(x_j-\mu )(x_j-\mu )^Tp(z_t|x_j,m)

因此,我们的粒子传播又从运动学模型采样变成了从高斯分布采样。

Proposal变了之后,权重w计算方式也变了。

权重模型

w=bel(x_t)/\overline{bel}(x_t)

=\eta *p(z_t|x_t.m)*p(x_t|u_t,x^i_t_-_1)bel(x_t_-_1) / p(x_t|x_t_-_1,u_t,z_t,m)*bel(x_t_-_1)(代入地图m)

又有p(x_t|x_t_-_1,u_t,z_t,m=p(z_t|x_t,m)p(x_t|u_t,x_t_-_1)/p(z_t|x_t_-_1,u_t,m)(贝叶斯)

w=p(z_t|x_t_-_1,u_t,m)

=\int p(z_t|x_t,m)p(x_t|x_t_-_1,u_t)dx_t

=\sum _{j=1}^{j=K}p(z_t|x_t,m)

 

进一步优化方法的流程

 

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值