Udacity机器人软件工程师课程笔记(三十四) - 占用栅格地图构建算法

本文深入探讨SLAM算法,包括扩展卡尔曼滤波、稀疏扩展信息滤波等,解析移动机器人地图构建的挑战与解决方案,涵盖后验概率计算、二值贝叶斯滤波及占用栅格地图构建算法的推导。

一、 SLAM Algorithms 介绍

  • Extended Kalman Filter SLAM(EKF) 扩展卡尔曼滤波SLAM
  • Sparse Extended information Filter(SEIF) 稀疏扩展信息滤波
  • Extended Information Form(EIF) 扩展信息滤波
  • FastSLAM
  • GraphSLAM

定位

  • 假设:已知地图
  • 估计:机器人的轨迹

映射

  • 假设:机器人的轨迹
  • 估算:地图

二、 映射/地图绘制

在这里插入图片描述
移动机器人的地图绘制是一个具有挑战性的问题,主要有两个原因。

第一,地图和姿态对机器人来说都是未知的,但这可以用占用栅格地图构建算法来解决。

第二, 巨大的假设空间,假设空间是在映射过程中形成的所有可能映射的空间。这个空间是高维的,因为地图是在一个连续的空间上定义的。尤其是当机器人被部署到一个开放的环境中,它们必须感知无限多的物体。

占用栅格地图构建算法给出了地图的离散近似,但是即使在这种离散近似下,所有可能映射的空间仍然会很大。所以现在的挑战是估算出完整的具有高维空间的后验地图。

我们在定位中用来估计后验姿态的基本滤波方法将有所不同,并且在映射中应使用对其的扩展以适应庞大的假设空间。

接下来是绘图的难点,

在这里插入图片描述

第一个困难是,环境的规模。由于要处理大量数据,因此很难绘制大区域的地图。

机器人板上的微控制器必须收集所有瞬时姿势和障碍物,然后形成结果图并相​​对于该图定位机器人。而且,当地图的尺寸​​大于机器人的感知范围时,映射问题将变得更加困难。但这只是问题的一部分。

感知传感器中始终存在噪声,测听传感器和执行器。在映射过程中,我们必须始终过滤掉来自这些传感器和执行器的噪声。对于大噪声,随着这种噪声加起来,映射变得更加困难且更具挑战性。

在这里插入图片描述

感知上的歧义是映射的另一个困难。当两个地方看起来相似时就会产生歧义,并且机器人必须在机器人在不同时间点经过的两个位置之间建立关联。当机器人以循环方式行驶时(例如,在走廊中来回走动),会出现另一个映射困难。循环行驶时,机器人测听仪会逐渐累积误差。在循环周期结束时,误差将会很大。

三、映射已知姿态

在假定机器人姿势已知且无噪声的假设下生成地图的问题称为具有已知姿势的映射。
在这里插入图片描述

该图中表示了已知的姿势问题,其中x代表姿势,z代表测量值,m代表地图。

占用栅格地图构建算法可以估计后验地图,从而给出嘈杂的测量结果和已知的姿势。在大多数机器人应用中,测距数据比较杂乱,我们不知道机器人的姿势,那为什么在这种情况下必须进行映射?

在这里插入图片描述

映射通常发生在SLAM之后,因此,映射的力量在于其后处理。在SLAM期间,问题从具有已知姿态变为具有未知姿态。

在SLAM期间,内置环境地图的机器人会相对于它定位。在SLAM之后,占用栅格映射算法使用从SLAM过滤的确切机器人姿态。然后,根据SLAM和噪声测量的已知姿态,映射算法将生成适合路径规划和导航的地图。

四、后验概率

在这里插入图片描述

后验概率

回到具有已知姿势的图形化图形模型,我们的目标是实现一个映射算法,并在有噪声测量和假定已知姿势的情况下估计地图。

已知姿势映射问题可以用 P ( m ∣ z 1 : t , x 1 : t ) P(m | z_{1:t}, x_{1:t}) P(mz1:t,x1:t)函数表示。借助此功能,我们可以在给定时间t之前的所有测量值和时间t之前由机器人轨迹表示的所有姿势的情况下,在地图上计算后验。

在估算地图时,由于机器人路径是从SLAM提供给我们的,因此我们排除 u u u的影响。但以后将在SLAM中包含,以估计机器人的轨迹。

2D地图

目前,我们将仅估算二维地图的后验。在现实世界中,通常将具有二维激光测距仪传感器的移动机器人部署在平面上,以捕获3D世界的一部分。这些二维切片将在每个瞬间合并并划分为网格单元,以通过占用栅格地图构建算法估计后验。三维地图也可以通过占用栅格地图构建算法进行估算,但是由于需要过滤掉大量的嘈杂的三维测量结果,因此需要更高的计算内存。

五、网格单元

在这里插入图片描述

为了估计后部地图,占用栅格将在有限数量的栅格单元中均匀地划分二维空间。这些栅格单元中的每个栅格单元将保留与其覆盖的位置相对应的随机值。根据测量数据,该栅格空间将填充零和一。如果激光测距仪传感器检测到障碍物,则该单元格将被视为已占用并且其值为1。对于自由空间,该单元格将被视为未占用,其值将为0。

现在,要找出可以从栅格单元中生成的地图的数量,让我们选择前两个单元并计算出它们的组合。
在这里插入图片描述

第一个组合(0,0)是具有两个自由空间的地图。第二个组合(0,1)是一张地图,左侧有一个自由空间,右侧有一个障碍物。通过翻转第二张地图,得到第三张组合(1,0)。第四组合(1, 1)是具有两个障碍的地图。因此,可以从这两个栅格单元中形成的地图总数等于四个。

概括起来,可以从栅格单元中形成的地图数量等于单元数量乘幂的两倍。

现在,想象一下拥有一个带有成千上万个栅格单元的2D空间, 生成的地图数量将更大。

六、后验概率的计算

在这里插入图片描述
方法一 P ( m ∣ z 1 : t , x 1 : t ) P(m∣z_{1:t} ,x_{1:t}) P(mz1:t,x1:t)
我们刚刚看到,地图具有高维性,所以在计算内存方面,用第一种方法计算后验太占用内存了。

方法二 P ( m i ∣ z 1 : t , x 1 : t ) P(m_i | z_{1:t} ,x_{1:t}) P(miz1:t,x1:t)
第二种或更好的估计后验图的方法是将这个问题分解成许多单独的问题。在每一个这样的问题中,我们都会在每个时刻计算后验地图 m i m_i mi

然而,这种方法仍然存在一些缺陷,因为我们正在独立地计算每个单元的概率。因此,我们仍然需要找到一种不同的方法来处理相邻单元之间的依赖关系。

方法三 ∏ i P ( m i ∣ z 1 : t , x 1 : t ) ∏_iP(m_i | z_{1:t} ,x_{1:t}) iP(miz1:t,x1:t)
第三种方法是通过关联单元并克服庞大的计算内存来计算后部图的最佳方法, 就是用边际或因式分解的乘积来估计后验图。

七、滤波

1. 正向与反向测量模型

由于分解,我们现在需要解决一个二进制估计问题,其中栅格单元保持静态状态,该状态不会随时间变化。静态的意思是系统的状态在感测期间不会改变。

∏ i p ( m i ∣ z 1 : t , x 1 : t ) ∏_i p(m_i | z_{1:t} ,x_{1:t}) ip(miz1:t,x1:t)

在本地,存在针对此问题的过滤器,称为二值贝叶斯过滤器。二进制贝叶斯滤波器通过采用信念的对数比值比来解决静态问题。在静态下,置信度现在仅是测量的函数。

根据所反映的测量值,更新栅格单元的状态,并且通过表示栅格单元相对于测量值的二进制状态的逆测量模型可以知道此信念。

当测量比二进制静态更复杂时,通常使用逆测量模型

让我们以配备RGB-D相机的移动机器人为例。机器人的任务是估计此门是打开还是关闭。与门打开或关闭的简单二进制状态相比,由摄像机图像表示的测量范围巨大。

在这种情况下,使用反向传感器模型总是比使用正向传感器模型容易。二进制贝叶斯滤波器将使用对数优势比表示来求解逆测量模型。

在这里插入图片描述

为了表示 l t l_t lt的对数比值比的置信度,二进制贝叶斯过滤器将置信度除以其取反,然后采用该表达式的对数形式。

使用对数优势比表示的优势是避免概率不稳定性接近零或一。

正向测量模型 − P ( z 1 : t ∣ x ) -P(z_{1:t}|x) P(z1:tx):根据给定的系统状态估计后验值。
反向测量模型 − P ( x ∣ z 1 : t ) -P(x|z_{1:t}) P(xz1:t):估计一个后验超过系统状态给定的测量。

反向测量模型通常用于测量比系统状态更复杂的情况。

用对数比值表示的优点是避免了在0或1附近的概率不稳定性。另一个优点是系统的速度、准确性和简单性。可以查看这两个来源,以获得更多关于对数概率和数值稳定性的信息:

  1. Log Probability
  2. Numerical Stability

2. 静态二值贝叶斯滤波

我发现这里课程说的不清楚,所以引用了《概率机器人》中的解释和推导。

机器人技术中的某些问题表达为不随时间变化的二值状态的最优估计间题。
这些问题通过二值贝叶斯滤波(binary Bayes filter) 来阐述。如果一个机器人从传感器测量的序列中估计环境的一个固定的二值数,此时这类问题就产生了。例如,一个机器人可能想知道门是开着的还是关着的,并认为在检测期间门的状态不改变。

当状态静止时,置信度就仅是测量的函数:

b e l i ( x ) = p ( x ∣ z 1 : t , u 1 : t ) = p ( x ∣ z 1 : t ) bel_i(x) =p(x |z_{1:t}, u_{1:t}) =p(x | z_{1:t}) beli(x)=p(xz1:t,u1:t)=p(xz1:t)

这里状态有两个可能值,用 x x x x ′ x' x 表示。具体来说,有 b e l i ( x ′ ) = 1 − b e l t ( x ) bel_i(x') = 1 - bel_t(x) beli(x)=1belt(x)。状态x 不含时间项反映了状态不会改变的事实。

自然的,这类二值估计问题可以利用离散贝叶斯滤波来处理。但是,置信度通常由一个概率比的对数(log odds ratio) 来实现。

状态 x x x的概率(odds) 定义为此事件的概率除以该事件不发生的概率
p ( x ) p ( x ′ ) = p ( x ) 1 − ( x ) \frac{p(x)}{p(x')}=\frac{p(x)}{1-(x)} p(x)p(x)=1(x)p(x)

概率对数就是这个表达式的对数
l ( x ) : = l o g p ( x ) 1 − p ( x ) l(x):=log\frac{p(x)}{1-p(x)} l(x):=log1p(x)p(x)
概率对数假设值为 − ∞ ∼ ∞ -\infin \sim \infin 。用于更新以概率对数表示的置信度的贝叶斯滤波计算很简洁。它避免了概率接近0 或1 引起的截断间题。

程序给出了其基本的更新算法。这种算法是加法。事实上,任何对测量做出反应的变量的递增和递减都可以解释为贝叶斯滤波的概率对数形式。该二值
贝叶斯滤波利用一个反向测量模型(inverse measurement model) p ( x ∣ z t ) p(x|z_t) p(xzt)代替熟悉的前向模型 p ( z t ∣ x ) p(z_t|x) p(ztx) 。反向测量模型将关于(二值)状态变量的一个分布指定为测量 z t z_t zt的一个函数。

在这里插入图片描述
反向模型经常用于测量比二值状态更复杂的情况。这种情况的一个实例就是
从相机图像中估计门是否为关的问题。这里状态很简单,但需要进行所有测量的空间却是很大的。 通过设计一个函数根据相机图像来计算门为关着的概率,要比描述所有相机图像中显示门为关着的分布更容易些。 换句话说,实现一个反向传感器模型比前向传感器模型更容易。

置信度 b e l t ( x ) bel_t(x) belt(x) 可以根据概率比对数 l t l_t lt 通过下面的方程来求得:
b e l t ( x ) = 1 − 1 1 + e l t bel_t(x)=1-\frac{1}{1+e^{l_t}} belt(x)=11+elt1
为了证明二值贝叶斯滤波算法的正确性,简要重申基本的贝叶斯滤波方程,并明确的贝叶斯归一化方法:
p ( x ∣ z 1 : t ) = p ( z t ∣ x , z 1 : t − 1 ) p ( x ∣ z 1 : t − 1 ) p ( z t ∣ z 1 : t − 1 ) = p ( z t ∣ x ) p ( x ∣ z 1 : t − 1 ) p ( z t ∣ z 1 : t − 1 ) p(x|z_{1:t})=\frac{p(z_t|x, z_{1:t-1})p(x|z_{1:t-1})}{p(z_t|z_{1:t-1})} \\ =\frac{p(z_t|x)p(x|z_{1:t-1})}{p(z_t|z_{1:t-1})} p(xz1:t)=p(ztz1:t1)p(ztx,z1:t1)p(xz1:t1)=p(ztz1:t1)p(z

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stan Fu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值