W E E K 3 {\Large WEEK \qquad 3} WEEK3
3.1 关于建图
\qquad
机器人的地图就是其所处的环境。建立一个地图的过程叫做mapping(地图构建)。根据需要解决的问题建立相应的地图:
\qquad
1.使用何种坐标系表示,需要包含何种信息
\qquad
2.可使用的传感器
\qquad
3.机器人的需求
地图的类型:
\qquad
1.尺度地图,位置表示为坐标值,作为移动机器人在自我定位时使用的坐标系。
\qquad
2.拓扑地图,在图中的位置表示为节点,它们之间的连接表示为弧。弧被用来表述节点间的连接代价或者是限制条件,这种图在轨迹规划测验中很有用。
\qquad
3.语义地图,与之前最重要的不同点是标签以及标注对象间的相对位置,可以描述对象的位置,而不使用具体的坐标。
\qquad
之后将要讨论的地图都是尺度地图(下文中的栅格地图),建图所需解决的技术问题:
\qquad
1.在有噪声的测量中估计目标状态
\qquad
2.测量往往在相对坐标系下进行,需要转化为绝对坐标系
\qquad
3.其他机器人问题如轨迹规划与导航等,地图需要实时更新
3.2 构建栅格地图
3.2.1 定义
\qquad
“占据”被定义为一个二进制随机变量,随机变量是对真实事物采样空间的函数。“占据”被定义在有两种可能状态的概率空间中包括空闲和被占据。
m
x
,
y
:
{
f
r
e
e
,
o
c
c
u
p
i
e
d
}
→
{
0
,
1
}
(
1
)
m_{x,y}:\{free,occupied\}\rightarrow\{0,1\}\qquad(1)
mx,y:{free,occupied}→{0,1}(1)即随机变量的取值包括0和1。
\qquad
占据栅格地图就是占据变量组成的数组,其中每格都是随机占据变量。
图
1
占
据
栅
格
地
图
图1\ 占据栅格地图
图1 占据栅格地图占据栅格地图使用贝叶斯滤波器生成。贝叶斯滤波器意味着地图递归更新。
\qquad
某个事件(X)发生的概率(p(X))的比例可以记为赢率:
O
d
d
:
=
(
X
h
a
p
p
e
n
s
)
(
X
n
o
t
h
a
p
p
e
n
s
)
=
p
(
X
)
p
(
X
c
)
(
2
)
Odd:=\frac{(X\ happens)}{(X\ not \ happens)}=\frac{p(X)}{p(X^{c})}\qquad(2)
Odd:=(X not happens)(X happens)=p(Xc)p(X)(2)
\qquad
使用赢率可以带来许多便利。
3.2.2 测量
\qquad
占据栅格算法往往利用一个距离传感器提供距离信息,在地图中每个栅格都只有两种可能的测量结果开放(0)或者被占据(1)。
图
2
距
离
传
感
器
图2\ 距离传感器
图2 距离传感器
\qquad
测量结果中浅蓝色的栅格表示光线可以通过,即为开放栅格。黄色的栅格表示光线不能通过,即为被占据栅格。
z
→
{
0
,
1
}
(
3
)
z\rightarrow\{0,1\}\qquad(3)
z→{0,1}(3)测量模型
p
(
z
∣
m
x
,
y
)
(
4
)
p(z|m_{x,y})\qquad(4)
p(z∣mx,y)(4)测量中仅有的四种条件概率
p
(
z
=
1
∣
m
x
,
y
=
1
)
:
正
确
占
据
测
量
p
(
z
=
0
∣
m
x
,
y
=
1
)
:
错
误
开
放
测
量
p
(
z
=
1
∣
m
x
,
y
=
0
)
:
错
误
占
据
测
量
p
(
z
=
0
∣
m
x
,
y
=
0
)
:
正
确
开
放
测
量
p(z=1|m_{x,y}=1):正确占据测量\\ p(z=0|m_{x,y}=1):错误开放测量\\ p(z=1|m_{x,y}=0):错误占据测量\\ p(z=0|m_{x,y}=0):正确开放测量
p(z=1∣mx,y=1):正确占据测量p(z=0∣mx,y=1):错误开放测量p(z=1∣mx,y=0):错误占据测量p(z=0∣mx,y=0):正确开放测量
\qquad
依据贝叶斯法则,通过先验、测量模型(似然估计)和归一化参数(
η
\eta
η)推算后验。
p
(
m
x
,
y
∣
z
)
后
验
概
率
=
p
(
z
∣
m
x
,
y
)
似
然
估
计
p
(
m
x
,
y
)
先
验
概
率
p
(
z
)
(
5
)
\mathop{p(m_{x,y}|z)}\limits^{后验概率}=\frac{ \mathop{p(z|m_{x,y})}\limits^{似然估计} \mathop{p(m_{x,y})}\limits^{先验概率}}{p(z)}\qquad(5)
p(mx,y∣z)后验概率=p(z)p(z∣mx,y)似然估计p(mx,y)先验概率(5)
\qquad
设当实际的状态为被占据状态时,其赢率形式为:
O
d
d
(
(
m
x
,
y
=
1
)
g
i
v
e
n
z
)
=
p
(
m
x
,
y
=
1
∣
z
)
p
(
m
x
,
y
=
0
∣
z
)
(
6
)
Odd((m_{x,y}=1)given\ z)=\frac{p(m_{x,y}=1|z)}{p(m_{x,y}=0|z)}\qquad(6)
Odd((mx,y=1)given z)=p(mx,y=0∣z)p(mx,y=1∣z)(6)
\qquad
应用条件概率,可以包含进传感器概率模型。
p
(
m
x
,
y
=
1
∣
z
)
=
p
(
z
∣
m
x
,
y
=
1
)
p
(
m
x
,
y
=
1
)
p
(
z
)
(
7
)
p(m_{x,y}=1|z)=\frac{p(z|m_{x,y}=1)p(m_{x,y}=1)}{p(z)}\qquad(7)
p(mx,y=1∣z)=p(z)p(z∣mx,y=1)p(mx,y=1)(7)写成赢率形式:
O
d
d
:
p
(
m
x
,
y
=
1
∣
z
)
p
(
m
x
,
y
=
0
∣
z
)
=
p
(
z
∣
m
x
,
y
=
1
)
p
(
m
x
,
y
=
1
)
/
p
(
z
)
p
(
m
x
,
y
=
0
∣
z
)
=
p
(
z
∣
m
x
,
y
=
1
)
p
(
m
x
,
y
=
1
)
p
(
z
∣
m
x
,
y
=
0
)
p
(
m
x
,
y
=
0
)
(
8
)
Odd:\frac{p(m_{x,y}=1|z)}{p(m_{x,y}=0|z)}=\frac{p(z|m_{x,y}=1)p(m_{x,y}=1) /p(z)}{p(m_{x,y}=0|z)}=\frac{p(z|m_{x,y}=1)p(m_{x,y}=1) }{p(z|m_{x,y}=0)p(m_{x,y}=0) }\qquad(8)
Odd:p(mx,y=0∣z)p(mx,y=1∣z)=p(mx,y=0∣z)p(z∣mx,y=1)p(mx,y=1)/p(z)=p(z∣mx,y=0)p(mx,y=0)p(z∣mx,y=1)p(mx,y=1)(8)取对数形式
L
o
g
−
O
d
d
:
l
o
g
p
(
m
x
,
y
=
1
∣
z
)
p
(
m
x
,
y
=
0
∣
z
)
=
l
o
g
p
(
z
∣
m
x
,
y
=
1
)
p
(
m
x
,
y
=
1
)
p
(
z
∣
m
x
,
y
=
0
)
p
(
m
x
,
y
=
0
)
=
l
o
g
p
(
z
∣
m
x
,
y
=
1
)
p
(
z
∣
m
x
,
y
=
0
)
+
l
o
g
p
(
m
x
,
y
=
1
)
p
(
m
x
,
y
=
0
)
(
9
)
Log-Odd:log\frac{p(m_{x,y}=1|z)}{p(m_{x,y}=0|z)}=log\frac{p(z|m_{x,y}=1)p(m_{x,y}=1) }{p(z|m_{x,y}=0)p(m_{x,y}=0) }=log\frac{p(z|m_{x,y}=1)}{p(z|m_{x,y}=0)}+log\frac{p(m_{x,y}=1)}{p(m_{x,y}=0) }\qquad(9)
Log−Odd:logp(mx,y=0∣z)p(mx,y=1∣z)=logp(z∣mx,y=0)p(mx,y=0)p(z∣mx,y=1)p(mx,y=1)=logp(z∣mx,y=0)p(z∣mx,y=1)+logp(mx,y=0)p(mx,y=1)(9)得
l
o
g
o
d
d
+
=
l
o
g
o
d
d
m
e
a
s
+
l
o
g
o
d
d
−
(
10
)
log\ odd^{+}=log\ odd\ meas+log\ odd^{-}\qquad(10)
log odd+=log odd meas+log odd−(10)由对数特性右边相乘的两项变成相加。
图
3
栅
格
地
图
对
数
赢
率
变
化
图3\ 栅格地图对数赢率变化
图3 栅格地图对数赢率变化
\qquad
栅格地图存储了每一个栅格的对数赢率,测量模型也变成对数赢率。地图的更新计算变成了求和对数赢率。使用更新法则是需注意两点,第一,只更新观察到的栅格。第二,更新后的值变成了先验信息,整个更新法则是递归的。
\qquad
测量模型为:
l
o
g
p
(
z
∣
m
x
,
y
=
1
)
p
(
z
∣
m
x
,
y
=
0
)
(
11
)
log\frac{p(z|m_{x,y}=1)}{p(z|m_{x,y}=0)}\qquad(11)
logp(z∣mx,y=0)p(z∣mx,y=1)(11)
\qquad
考虑两种情况:
c
e
l
l
s
w
i
t
h
z
=
1
l
o
g
o
d
d
↓
o
c
c
:
=
l
o
g
p
(
z
=
1
∣
m
x
,
y
=
1
)
p
(
z
=
1
∣
m
x
,
y
=
0
)
(
12
)
c
e
l
l
s
w
i
t
h
z
=
0
l
o
g
o
d
d
↓
f
r
e
e
:
=
l
o
g
p
(
z
=
0
∣
m
x
,
y
=
1
)
p
(
z
=
0
∣
m
x
,
y
=
0
)
=
−
l
o
g
p
(
z
=
0
∣
m
x
,
y
=
0
)
p
(
z
=
0
∣
m
x
,
y
=
1
)
(
13
)
cells\ with\ z=1\quad log\ odd\downarrow occ:=log\frac{p(z=1|m_{x,y}=1)}{p(z=1|m_{x,y}=0)}\qquad(12)\\ cells\ with\ z=0\quad log\ odd\downarrow free:=log\frac{p(z=0|m_{x,y}=1)}{p(z=0|m_{x,y}=0)}=-log\frac{p(z=0|m_{x,y}=0)}{p(z=0|m_{x,y}=1)}\qquad(13)\\
cells with z=1log odd↓occ:=logp(z=1∣mx,y=0)p(z=1∣mx,y=1)(12)cells with z=0log odd↓free:=logp(z=0∣mx,y=0)p(z=0∣mx,y=1)=−logp(z=0∣mx,y=1)p(z=0∣mx,y=0)(13)设测量模型为:
l
o
g
o
d
d
↓
o
c
c
:
=
0.9
log\ odd\downarrow occ:=0.9
log odd↓occ:=0.9
l
o
g
o
d
d
↓
f
r
e
e
:
=
−
0.7
log\ odd\downarrow free:=-0.7
log odd↓free:=−0.7
图
4
地
图
栅
格
对
数
赢
率
初
始
化
为
0
图4\ 地图栅格对数赢率初始化为0
图4 地图栅格对数赢率初始化为0
\qquad
即
t
0
t_{0}
t0时刻
l
o
g
o
d
d
=
0
f
o
r
a
l
l
(
x
,
y
)
log\ odd=0\ for\ all(x,y)
log odd=0 for all(x,y)。这种初始化等价于栅格被占据和开放的概率是一样的。
图
5
测
量
之
后
地
图
栅
格
对
数
赢
率
由
t
0
到
t
1
变
化
图5\ 测量之后地图栅格对数赢率由t_{0}到t_{1}变化
图5 测量之后地图栅格对数赢率由t0到t1变化
\qquad
栅格对数赢率更新为:
c
e
l
l
s
w
i
t
h
z
=
1
l
o
g
o
d
d
=
0
+
0.9
c
e
l
l
s
w
i
t
h
z
=
0
l
o
g
o
d
d
=
0
−
0.7
cells\ with\ z=1\quad log\ odd=0+0.9\\ cells\ with\ z=0\quad log\ odd=0-0.7
cells with z=1log odd=0+0.9cells with z=0log odd=0−0.7
图
6
测
量
之
后
地
图
栅
格
对
数
赢
率
由
t
1
到
t
2
变
化
图6\ 测量之后地图栅格对数赢率由t_{1}到t_{2}变化
图6 测量之后地图栅格对数赢率由t1到t2变化
\qquad
栅格对数赢率更新为:
c
e
l
l
s
w
i
t
h
z
=
1
l
o
g
o
d
d
=
0
+
0.9
c
e
l
l
s
w
i
t
h
z
=
0
l
o
g
o
d
d
=
−
0.7
−
0.7
(
两
次
都
测
量
到
)
c
e
l
l
s
w
i
t
h
z
=
0
l
o
g
o
d
d
=
0
−
0.7
(
只
有
一
次
测
量
到
)
cells\ with\ z=1\quad log\ odd=0+0.9\\ cells\ with\ z=0\quad log\ odd=-0.7-0.7 (两次都测量到)\\ cells\ with\ z=0\quad log\ odd=0-0.7 (只有一次测量到)\\
cells with z=1log odd=0+0.9cells with z=0log odd=−0.7−0.7(两次都测量到)cells with z=0log odd=0−0.7(只有一次测量到)
\qquad
假设机器人姿态已知,并在地图中将它定位,然后就要讨论如何将机器人坐标系下的传感器数据变换到全局地图坐标下。
图
7
建
立
坐
标
系
图7\ 建立坐标系
图7 建立坐标系
\qquad
已知机器人在全局坐标系中的位置为
(
x
1
,
x
2
)
(x_{1},x_{2})
(x1,x2),传感器方向与
x
1
x_{1}
x1之间的角度为
θ
\theta
θ,传感器探测距离为的d。
图
8
将
机
器
人
置
于
坐
标
系
图8\ 将机器人置于坐标系
图8 将机器人置于坐标系
\qquad
求
(
x
1
,
o
c
c
,
x
2
,
o
c
c
)
(x_{1,occ},x_{2,occ})
(x1,occ,x2,occ):
[
x
1
,
o
c
c
x
2
,
o
c
c
]
=
[
c
o
s
θ
s
i
n
θ
−
s
i
n
θ
c
o
s
θ
]
[
d
0
]
+
[
x
1
x
2
]
(
14
)
\begin{bmatrix} x_{1,occ} \\ x_{2,occ} \end{bmatrix}=\begin{bmatrix} cos\theta & sin\theta\\ -sin\theta & cos\theta \end{bmatrix}\begin{bmatrix} d\\ 0 \end{bmatrix}+\begin{bmatrix} x_{1}\\ x_{2} \end{bmatrix}\quad(14)
[x1,occx2,occ]=[cosθ−sinθsinθcosθ][d0]+[x1x2](14)求出目标点的在全局坐标系的位置。
图
9
连
续
地
图
转
化
为
栅
格
地
图
图9\ 连续地图转化为栅格地图
图9 连续地图转化为栅格地图
\qquad
连续坐标除以单位栅格长度后取整。
i
=
c
e
i
l
(
x
/
r
)
(
15
)
i=ceil(x/r)\qquad(15)
i=ceil(x/r)(15)
图
10
坐
标
转
化
为
栅
格
坐
标
图10\ 坐标转化为栅格坐标
图10 坐标转化为栅格坐标
[
i
1
,
o
c
c
i
2
,
o
c
c
]
=
c
e
i
l
(
1
r
[
x
1
,
o
c
c
x
2
,
o
c
c
]
)
(
16
)
\begin{bmatrix} i_{1,occ} \\ i_{2,occ} \end{bmatrix}=ceil(\frac{1}{r}\begin{bmatrix} x_{1,occ} \\ x_{2,occ} \end{bmatrix})\qquad(16)
[i1,occi2,occ]=ceil(r1[x1,occx2,occ])(16)
\qquad
得出目标点栅格坐标。