W E E K 4 {\Large WEEK \qquad 4} WEEK4
4.1 里程计模型
\qquad
里程计会给出机器人已经移动多远,当然里程计定位只是获取机器人世界位置的一种方法。以汽车导航这个定位的具体应用为例,我们将看到许多定位方法,信息源包括GPS全球定位系统、蜂窝网络以及Wi-Fi热点。然而,每个信息源都包含不同程度的噪声,因此有不同程度的精度。
\qquad
以无人车为例,它需要高于GPS所能提供的3.5米的精度,这个精度决定了车是开在路上还是会冲上人行道。上一种信息源提供了全局位置信息,即绝对的坐标、里程及其他信息源可以增强这种全局定位。本地的信息源更加精确,可以提供厘米级的精度。但是对例如编码器或陀螺仪这样的信息源,进行积分会产生漂移。这是由误差的累积产生的,例如轮胎在地面打滑就使编码器不准。另一些本地传感器,如激光雷达、色彩、深度相机可以帮助我们校正这些误差。
\qquad
应用里程计更新机器人的位置信息,首先就要对机器人进行建模。以滑动转向四轮机器人为例,里程数据来自编码器脉冲,它能计量在给定时间内轮子旋转了多少度,将脉冲的数量映射到机器人的平动和转动上,就可以测量机器人转动角度和运动距离。
图
1
四
轮
机
器
人
转
动
图1\ 四轮机器人转动
图1 四轮机器人转动
\qquad
在四轮机器人的转向过程中,由编码器的测量值得到
e
o
e_{o}
eo(外轮)和
e
i
e_{i}
ei(内轮)的移动距离,测得长度即为所经过的弧度,按照弧度公式可知:
e
i
=
θ
r
i
e
o
=
θ
r
o
(
1
)
e_{i}=\theta r_{i}\qquad e_{o}=\theta r_{o}\qquad(1)
ei=θrieo=θro(1)由小车的宽度:
w
=
r
0
−
r
i
(
2
)
w=r_{0}-r_{i}\qquad(2)
w=r0−ri(2)计算旋转角度:
θ
=
e
o
−
e
i
w
(
3
)
\theta=\frac{e_{o}-e_{i}}{w}\qquad(3)
θ=weo−ei(3)
\qquad
对小车两轮经过的弧度取平均值,通过与转过的角度进行计算的位置变换:
y
=
e
o
+
e
i
2
c
o
s
θ
(
4
)
x
=
e
o
+
e
i
2
s
i
n
θ
(
5
)
y=\frac{e_{o}+e_{i}}{2}cos\theta\qquad(4)\\ x=\frac{e_{o}+e_{i}}{2}sin\theta\qquad(5)
y=2eo+eicosθ(4)x=2eo+eisinθ(5)
\qquad
上式得到小车的位置变换,对于小的移动是一个很好的位置计算。但编码器的测量会包含轮子的打滑引入的噪声,角度测量的误差又会引起位移估计的误差。一种解决办法是利用陀螺仪来获得更加精确的角度变化,在一个小的时间段内陀螺仪的测量是非常准确的。因此,角度的测量将只由陀螺仪测得的角速度对时间积分得到,这种测量方式同样可以提高平移的测量精度。这种简单的通过测量来定位的技术,需要机器人的起点来作为参考位置。本地的编码器及陀螺仪测量仍然包含噪声,所以我们希望加入更多的测量来校正误差。
4.2 定位和地图匹配
\qquad
地图配准是在以测量为基础的定位非常精确地补充。通过激光雷达可以提供对距离的测量,提供二维数据。在示例的应用中,对激光雷达进行建模,测量极坐标系下的深度信息,在离散的角度
θ
\theta
θ上返回一个连续的距离
r
r
r。
图
2
激
光
雷
达
扫
描
图2\ 激光雷达扫描
图2 激光雷达扫描
\qquad
将测量结果绘制成栅格地图。亮栅格概率很大为障碍,深色栅格表示概率很小为障碍。可以利用地图信息,在给定雷达数据时得到机器人在地图中的姿态。这种同时进行地图构建和定位的方法称为SLAM。
图
3
生
成
栅
格
地
图
图3\ 生成栅格地图
图3 生成栅格地图
\qquad
在定位过程中获得两套信息。占据栅格地图提供了期望机器人获得观测的准确信息,激光雷达的测量提供机器人当前时刻观测到的信息。通过以上两个信息找到最优的与观测结果相匹配的机器人姿态。
图
4
栅
格
地
图
和
测
量
结
果
图4\ 栅格地图和测量结果
图4 栅格地图和测量结果
\qquad
在所有可能姿态中搜索是困难的,可以使用基于编码器读数的测量信息来简化搜索。通过上一刻的姿态以及关于机器人走了多远的里程信息,将搜索限制预测姿态上。因此,机器人的最大似然姿态是在给定的激光雷达数据并依据里程信息预测的。这意味着我们可以将搜索限制在预测位置附近,对搜索结果的有效性更加有信心。
图
4
直
接
搜
索
姿
态
图4\ 直接搜索姿态
图4 直接搜索姿态
图
5
结
合
测
量
信
息
简
化
搜
索
图5\ 结合测量信息简化搜索
图5 结合测量信息简化搜索
\qquad
匹配姿态的代价函数:
m
a
x
p
∑
r
(
δ
(
p
x
+
r
c
o
s
(
p
θ
+
r
θ
)
,
p
y
+
r
s
i
n
(
p
θ
+
r
θ
)
)
⋅
m
(
x
,
y
)
)
(
6
)
\mathop{max}\limits_{p}\sum_{r}(\delta(p_{x}+rcos(p_{\theta}+r_{\theta}),p_{y}+rsin(p_{\theta}+r_{\theta})) \cdot m(x,y))\qquad(6)
pmaxr∑(δ(px+rcos(pθ+rθ),py+rsin(pθ+rθ))⋅m(x,y))(6)
图
6
成
功
匹
配
图6\ 成功匹配
图6 成功匹配
4.3 粒子滤波
\qquad
使用以采样为基础的分布,利用概率估计状态的技术称为粒子滤波器,其使用粒子群表示一组采样的分布。粒子滤波就是使用一系列来自该分布的样本表示该分布。
\qquad
实际上一群粒子表征高斯混合模型。每个粒子包含一个姿态和姿态的权重,权重就是这种情况下姿态在某分布下的概率。一个运动模型会使潜在的分布发生变化,粒子的变化是基于机器人获得的距离测量的变化。伴生的不确定性模型表征了运动模型的噪声例如轮子打滑或摩擦力的变化。在粒子滤波中,我们不追踪运动模型的具体参数,并通过运动噪声模型增加采样噪声。
\qquad
摘自《概率机器人》
粒子滤波器算法(基于重要性采样的贝叶斯滤波):
\qquad
1.基于粒子
x
t
−
1
[
m
]
x^{[m]}_{t-1}
xt−1[m]和控制
u
t
u_{t}
ut产生时刻t的假想状态
x
t
[
m
]
x^{[m]}_{t}
xt[m],粒子集中包括M个粒子作为粒子集的先验置信度。
\qquad
2.计算粒子的重要性因子,重要因子是将测量
z
t
z_{t}
zt合并到粒子集中。重要性是测量
z
t
z_{t}
zt在粒子
x
t
[
m
]
x^{[m]}_{t}
xt[m]下的概率,使用
w
t
[
m
]
=
p
(
z
t
∣
x
t
[
m
]
)
w_{t}^{[m]}=p(z_{t}|x_{t}^{[m]})
wt[m]=p(zt∣xt[m])给定。如果将
w
t
[
m
]
w_{t}^{[m]}
wt[m]解释为粒子的权值(weight), 则加权的粒子集(近似)表示贝叶斯滤波的后验
b
e
l
(
x
t
)
bel(x_{t})
bel(xt) 。
\qquad
3.重采样或者重要性采样,算法由从暂时粒子集中抽取替换M个粒子。抽取每个粒子的概率由其权值给定。重采样将M个粒子的粒子集变换成同样大小的粒子集。通过将重要性权重合并到再采样过程,粒子的分布发生变化:在采样前,它们按
b
e
l
‾
(
x
t
)
\overline{bel}(x_{t})
bel(xt)分布;在重采样后,它们(近似)按照后验
b
e
l
(
x
t
)
=
η
p
(
z
t
∣
x
t
[
m
]
)
b
e
l
‾
(
x
t
)
bel(x_{t})=\eta p(z_{t}|x^{[m]}_{t})\overline{bel}(x_{t})
bel(xt)=ηp(zt∣xt[m])bel(xt)(加权过程)分布。事实上,得到的样本集通常有许多重复,因为粒子是替换得到的。更重要的是,不包含在
x
t
x_{t}
xt的粒子往往就是具有较低权重的粒子。
\qquad
4.粒子滤波的另一个版本(通常是略次的)并不进行重采样,而是为每个粒子维护一个权重,权重初始化为1并按
w
t
[
m
]
=
p
(
z
t
∣
x
t
[
m
]
)
w
t
−
1
[
m
]
w_{t}^{[m]}=p(z_{t}|x_{t}^{[m]})w_{t-1}^{[m]}
wt[m]=p(zt∣xt[m])wt−1[m]更新。
\qquad
重采样步骤是一种某于达尔文适者生存(survival of the fittest) 思想的概率实现:它将粒子集重新聚集在状态空间中具有高后验概率的区域。这样,它就将滤波算法的计算资源集中在状态空间中最受关注的区域。
4.4 最近点迭代法(ICP)
\qquad
机器人要处理许多带有噪声的测量值,找到匹配模式并不简单。
图
7
测
量
值
和
匹
配
模
型
图7\ 测量值和匹配模型
图7 测量值和匹配模型ICP算法(另一种匹配方法):
\qquad
1.初始化旋转(R)和平移(t),通过旋转和平移实现测量和地图的匹配。
\qquad
2.找到
x
i
x_{i}
xi对应地图上的最近点
y
i
y_{i}
yi,算法方程为 (E-step):
y
i
=
a
r
g
m
a
x
y
j
∈
Y
∣
∣
x
i
−
y
j
∣
∣
(
7
)
y_{i}=arg \mathop{max}\limits_{y_{j}\in Y}||x_{i}-y_{j}||\quad(7)
yi=argyj∈Ymax∣∣xi−yj∣∣(7)找到所有测量点在地图上的相关点。
图
8
求
最
近
匹
配
点
图8\ 求最近匹配点
图8 求最近匹配点
\qquad
3.找到更好的R和t (M-step):
R
,
t
=
a
r
g
m
i
n
∑
x
i
,
y
j
∈
C
∣
∣
d
(
x
i
,
y
i
)
∣
∣
2
(
8
)
R,t=arg\ min\sum_{x_{i},y_{j}\in C}||d(x_{i},y_{i})||^{2}\quad(8)
R,t=arg minxi,yj∈C∑∣∣d(xi,yi)∣∣2(8)
\qquad
4.直到R和t变化幅度低于阈值,得出最优R和t
图
9
匹
配
结
果
图9\ 匹配结果
图9 匹配结果
图
10
3
D
匹
配
结
果
图10\ 3D匹配结果
图10 3D匹配结果