1. 基本概率
- TSDF: Truncated Signed Distance Function(截断的符号距离函数)
- Occupancy Grid Map(OGM:占用栅格地图):
- “free space”:用于planning
- 使用SLAM输出的位姿创建occupancy grid map
- OGM可用于路径规划(planning)和定位(localization)
- 又叫做根据已知的Pose建图(mapping with know poses)
- Cell的值:表示此Cell有障碍物的概率(被占据)
- 采用Bayesian滤波更新OGM Cell的值
- OGM的特征
- 把真实世界离散化为cells
- 栅格结构是刚体
- 每个cell有占用、空闲、未知三种状态
- 非参数化模型
- 大的map需要大量的内存
- 不依赖特征
- 每个cell是一个随机变量(模型化占用情况)
- Cell的占用概率
- Cell被占用:
p(mi)=1
- Cell未被占用:
p(mi)=0
- Cell未知状态:
p(mi)=0.5
- 每个Cell有一个对应的随机变量,这些随机变量相对独立
- 根据已知数据估计一个map
- 给定Sensor数据
z1:t和Sensor的位姿
x1:t,估计map:
p(m∣z1:t,x1:t)=i∏p(mi∣z1:t,x1:t)
1.1 Log-odd概念
- Log odd的概念:计算odd(赔率)的对数
- 为什么需要Log-Odd?
- 使用log-odds的形式,cell的值更新只使用加法(即把乘法变成了加法)
- 避免在0或1附近,概率被截断问题
l(x)∈(−∞,∞)
- Odd定义:事件发生的概率与事件不发生的概率的比值
odd(x)=1−p(x)p(x)
- Log-odd定义:
l(x)=log(odd(x))=log1−p(x)p(x)
- 反向计算p(x):
p(x)=1−1+expl(x)1
p(x)=1+odd(x)odd(x)
1.2 Log-Odd update (对数赔率更新法)
1.2.1 OGM概率更新原理
- 每个Cell的值为Cell被占据的概率值
- 在Bayes’ Rule下,根据传感器的测量数据更新map中的cell被占据概率
- Bayes规则:
p(mx,y∣z)=p(z)p(z∣mx,y)p(mx,y))
- 直接计算概率是困难的,为了简化计算,不使用占据概率本身,而使用log-odd
-
Odd((mx,y=1)givenz)=p(mx,y=0∣z)p(mx,y=1∣z)
1.2.2 Log-Odd更新推导过程
p(mx,y=1∣z)=p(z)p(z∣mx,y=1)p(mx,y=1)
Odd(mx,y=1∣z)=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(mx,y=0∣z)=p(z)p(z∣mx,y=0)p(mx,y=0)
Odd(mx,y=1∣z)=p(mx,y=0∣z)p(mx,y=1∣z)=p(z∣mx,y=0)p(mx,y=0)p(z∣mx,y=1)p(mx,y=1)
- 取对数:
log(Odd(mx,y=1∣z))=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)
- 上式左边为后验概率的Log-Odd,右边为Sensor model和先验概率,通过取对数,把右边两项相乘变成了两项相加
- 可得OGM的log-odds更新公式:
logodd+=logoddmeas+logodd−
1.2.3 OGM Log-Odd 更新原理
- 每个Cell的值为Log-Odd值
- Log-Odd更新公式:
logodd+=logoddmeas+logodd−
- 更新规则(
logodd+=logoddmeas):
- 只更新被观察到的Cell
- 被更新之后的值变成了先验值
1.2.4 Log-Odd形式的测量模型(Measurement Model)
- 测量项:
logp(z∣mx,y=0)p(z∣mx,y=1)
- 情况1:Cell (z=1)
logoddocc=logp(z=1∣mx,y=0)p(z=1∣mx,y=1)
- 情况2:Cell (z=0)
logoddfree=logp(z=0∣mx,y=1)p(z=0∣mx,y=0)
- 如果log-odd的值为0,则Odd=1,即
p(mx,y=1)=p(mx,y=0)=0.5
- 测量模型:
p(z∣mx,y)
-
p(z=1∣mx,y=1):True occupied measurement
-
p(z=0∣mx,y=1):False free measurement
-
p(z=1∣mx,y=0):False occupied measurement
-
p(z=0∣mx,y=0):True free measurement
1.3 Cartographer Submap的Cell更新过程
- 当一个Scan插入Submap时,通过以下步骤进行:
- 为hits计算一个栅格点的集合,且为misses计算一个与hits不相交的集合
- 对于每一个hit,插入一个最接近的grid point进入hits集合
- 对于每一个miss,把与线段(origin,scan point)交叉的Grid Point(且不在hits集合中的)插入misses集合
- 如果一个Grid Point从未被更新,则分配
phit或pmiss给它,当它分别位于hits集合或misses集合
- 如果一个Grid Point已经被更新,则更新公式如下:
odds(p)=1−pp
- 为hit更新:
Mnew(x)=clamp(odds−1(odds(Mold(x))∙odds(phit)))
- 为miss更新:
Mnew(x)=clamp(odds−1(odds(Mold(x))∙odds(pmiss)))
- 因为
phit>0.5且
pmiss<05所以有:
odds(phit)>1odds(pmiss)<1