Scan Matching
- 问题描述:给定Scan和map,或者给定scan和scan或者给定map和map,找到最匹配的变换(translation+rotation)
- 作用:提高提议分布
- 方法:
- p(z|x,m)= beam sonsor model sensor full readings <-> map
- p(z|x,m)= likelihood field model sensor beam endpoints <-> likelihood field
- p(mlocal|x,m)=matching model local map<->global map
Beam sensor Model
P(z|x,m)=∐Kk=1P(zk|x,m)
P
(
z
|
x
,
m
)
=
∐
k
=
1
K
P
(
z
k
|
x
,
m
)
+ 噪声原因 :较小的测量噪声、动态物体带来的误差、未探测到物体带来的误差(没有探测到物体时将使用测距仪的最大测程作为测量数据,因此也有可能不正确)、随机误差。
(1)测量噪声:由测距仪的精度、大气对测量信号的影响等造成,其概率模型一般是以理想测量距离为均值的高斯模型
(2)动态物体误差:由未预测到的物体(Unexpected objects)带来的误差。环境是动态的,而保存的地图是静态的,即不变的。没有包含在地图里的物体的出现会产生一个令人意外的比较小的测量数据。典型的动态物体就是行人。处理这些误差的一种方法就是把它当成传感器噪声。测量到的距离越大,检测到动态物体的概率越小,且小距离对应的测量到的是动态物体的概率应远大于大距离的概率,随意概率随距离的增大呈指数下降趋势,所以其概率模型为指数分布
(3)随机误差:测距仪偶尔会产生一些无法解释的测量结果。
(4)测量失败:有时候,传感器探测不到障碍物,比如试图探测一些吸收光线的物体,此时的探测数据将失效。典型的探测结果就是传感器返回自身的最大探测距离。概率模型表示为:(应该就是两点分布,即失败与没有失败)
- 根据实际数据得到参数
Likelihood Field Model
Beam endPoint model :以激光束的终点,而不是整个激光束
+ 高斯分布(均值为最近的障碍物的距离)+ 均匀分布(随机测量)+ 小的均匀分布(最大范围测量)
Phit(z|x,m)=12πσ√exp(−d2/2σ2)
P
h
i
t
(
z
|
x
,
m
)
=
1
2
π
σ
e
x
p
(
−
d
2
/
2
σ
2
)
其中d为end-point到最近障碍物的距离。
+ 该方法的缺点
+ 没有对人或者其他动态的障碍物建模
+ 没有对激光束建模,认为传感器可以穿过墙
+ 不能处理未知区域 (改进 若end_point 在未知区域
P(z|x,m)=1/zmax
P
(
z
|
x
,
m
)
=
1
/
z
m
a
x
)
+
P(z|x,m)
P
(
z
|
x
,
m
)
对应于似然区域得分
+ slam工程中
激光传感器的作用主要是感知周围环境,获取的扫描数据在SLAM过程中有两个作用:一是构建地图(占用概率栅格地图);另外一个是扫描匹配,优化里程计获取的机器人位姿,扫描匹配是建立局部子图和全局地图位置关系的过程,常用到的就是传感器观测模型。
ScanMatching 实现机器人位姿估计
matlab程序实现
transform = matchScans(currentScan, referenceScan)//计算相对位姿
transScan = transformScan(currentScan, transform);//转为可视化结果
---
使用迭代算法建立栅格地图