这一节,在熟悉了Featue maps相关概念之后,我们将开始学习基于EKF的特征图SLAM算法。

  1. 机器人,图和增强的状态向量

随机SLAM算法一般存储机器人位姿和图中的地标在单个状态向量中,然后通过一个递归预测和量测过程来估计状态参数。其中,预测阶段通过增量航迹估计来处理机器人的运动,并增加了机器人位姿不确定性的估计。当再次观测到Map中存储的特征后,量测阶段,或者叫更新阶段开始执行,这个过程可以改善整个的状态估计。当机器人在运动过程中观测到新特征时,便通过一个状态增强的过程将新观测的特征添加到状态向量中。

  机器人的状态,即一个相对于参考笛卡尔坐标系的自身位姿参数通过均值和协方差来定义:

(1)

(2)

  图的协方差矩阵Pm 包含特征之间的互相关信息(即非对角项),这些交叉关联信息表征了每个特征对Map中其他特征相关信息的依赖。由于特征的位置是静态的,当周围的环境也即Map是刚性的话,特征之间的交叉关联将会随着的特征的二次观测增强。图中的特征可以表示如下

(3)

(4)

  SLAM中的图通过一个串联了机器人位姿和特征图状态的增强状态向量定义,如图1所示。这是很有必要的,因为一致的SLAM依赖于机器人位姿和图之间相关性Pvm

(5)

(6)

  

Fig. 1 增强的状态向量.

  需要注意的是,状态的初始化时通常为.也就是说,还没有特征被机器人观测到,并且初始时刻机器人位于参考坐标系的原点。

  2. 预测阶段

随机SLAM算法的过程模型根据航迹推算运动估计来确定机器人相对于先前时刻位姿的运动,图特征仍然保持静止。这个模型对状态估计的影响存在于状态向量部分和状态协方差矩阵中的以及项。而这些图特征相关项仍保持不变。

  估计带来的机器人(这里以移动小车为例)位姿变化和协方差通常用车轮的编码器测量和小车对应的运动学模型获取。本文里面的位姿改变通过基于激光测距的航迹推算获取,该算法可以通过批处理数据关联算法来找出序列激光扫描之间的相对位姿关系。

Fig. 2 机器人位姿变化示意.

  因此,预测的增强状态可以表示为

(7)

 (8)

  其中,雅各比矩阵的定义为

  (9)

  (10)

  雅各比矩阵定义为

(11)

      (12)

  因为雅各比矩阵仅仅影响机器人的协方差矩阵和对应的交叉相关性,方程(8)用下式高效地实现

           (13)

  3. 更新阶段

  如果已经存储在图中的估计特征被距离方位传感器二次观测到,此时对应的量测量可以表示为

(14)

(15)

  其中,量测量分别表示对应的距离值和相对于观测机器人的偏转角度。为量测协方差。传感器获取的量测值和图之间的关联可以通过下面的方程表示

(16)

  Kalman增益可以得到

(17)(18)

(19)

  其中,雅各比矩阵

(20)

  对于包含许多特征的SLAM图,雅各比矩阵将会含有许多零项,这会使得方程(18)和(19)的计算非常高效。

  随后我们可以从更新过程得到一个后验SLAM估计

(21/22)

  实践表明,如果几个独立的量测同时可用,即知道,便有可能获取更加精确的更新。

  4. 状态增强

  当机器人在环境中漫游时,一旦新特征被观测到,就必须存储到图中。接下来将给出新观测到的特征初始化方法,首先,状态向量和对应的协方差矩阵通过新的量测的极值增强为

(23)

(24)

  量测z 通过函数被转换位全局的笛卡尔坐标系特征位置,对应的变换表示如下

(25)

  可以通过线性化函数将增强的状态初始化

   (26/27)

  其中,雅克比矩阵表示为

     (28)

  与特征的储存相比,特征的删除非常简单,只需将特征对应的元素直接从状态向量删除,同时将相关的行和列中的项目从协方差矩阵中删除。

SLAM概念学习之随机SLAM算法的更多相关文章

  1. SLAM概念学习之特征图Feature Maps

    特征图(或者叫地标图,landmark maps)利用参数化特征(如点和线)的全局位置来表示环境.如图1所示,机器人的外部环境被一些列参数化的特征,即二维坐标点表示.这些静态的地标点被观测器(装有传感 ...

  2. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  3. R语言︱决策树族——随机森林算法

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:有一篇<有监督学习选择深度学习 ...

  4. R语言︱机器学习模型评估方案(以随机森林算法为例)

    笔者寄语:本文中大多内容来自<数据挖掘之道>,本文为读书笔记.在刚刚接触机器学习的时候,觉得在监督学习之后,做一个混淆矩阵就已经足够,但是完整的机器学习解决方案并不会如此草率.需要完整的评 ...

  5. Python机器学习笔记——随机森林算法

    随机森林算法的理论知识 随机森林是一种有监督学习算法,是以决策树为基学习器的集成学习算法.随机森林非常简单,易于实现,计算开销也很小,但是它在分类和回归上表现出非常惊人的性能,因此,随机森林被誉为“代 ...

  6. 使用Numpy验证Google GRE的随机选择算法

    最近在读<SRE Google运维解密>第20章提到数据中心内部服务器的负载均衡方法,文章对比了几种负载均衡的算法,其中随机选择算法,非常适合用 Numpy 模拟并且用 Matplotli ...

  7. H2O中的随机森林算法介绍及其项目实战(python实现)

    H2O中的随机森林算法介绍及其项目实战(python实现) 包的引入:from h2o.estimators.random_forest import H2ORandomForestEstimator ...

  8. 用Python实现随机森林算法,深度学习

    用Python实现随机森林算法,深度学习 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩 ...

  9. 随机森林算法-Deep Dive

    0-写在前面 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器.该分类器最早由Leo Breiman和Adele Cutler提出.简单来说,是一种bagging的思想,采用bootstra ...

随机推荐

  1. 问题集锦 ~ PHP

    #switch //当variable为数字0的时候,case为true,会执行第一段case代switch (variable) { case 'value': # code... break; d ...

  2. table-layout:fixed属性

    说实话,第一次见到这个属性有点懵圈,真是没见过这个属性 好了,直接说作用 table-layout其实是一种表格算法,用来显示表格单元格.行.列的算法规则. 固定表格布局: 固定表格布局与自动表格布局 ...

  3. 请问具体到PHP的代码层面,改善高并发的措施有哪些

    1.今天被问一个问题:请问具体到PHP的代码层面,改善高并发的措施有哪些? 面对高并发问题我首先想到的是集群.缓存(apt.redis.mem.内存...),但具体到PHP代码层面除了想到队列.减少网 ...

  4. css 书写推荐顺序

    1.位置属性(position, top, right, z-index, display, float等)2.大小(width, height, padding, margin)3.文字系列(fon ...

  5. 开源Android容器化框架Atlas开发者指南

    Atlas是古希腊神话中的天神,是波士顿动力公司的机器人,借助搜索引擎,得以发现这个名词背后许许多多的含义.在手机淘宝,Atlas是一个扎根于Android客户端的一个组件化容器框架,相比神话中用手和 ...

  6. HDU1166 敌兵布阵 线段树详解

    题解: 更新是线段树的单点更新,简单一点. 有50000个阵营,40000查询,用普通数组肯定超时.区间求和和区间查询问题用线段树最好不过了. 先说说什么是线段树. 区间[1,10]用树的方法存起来, ...

  7. 路飞学城Python-Day23

    1.计算机基础 Python可以实现各种应用软件,类比word.QQ.爱奇艺等,但是应用这些软件需要计算机硬件, 计算机发展的过程就是人类不断的希望机器去取代人力,解放更多的人力,最终极的理想就是完全 ...

  8. 汇编(assembling)简介(源:阮一峰)

    简介 计算机真正能够理解的是低级语言,它专门用来控制硬件.汇编语言就是低级语言,直接描述/控制 CPU 的运行.如果你想了解 CPU 到底干了些什么,以及代码的运行步骤,就一定要学习汇编语言. 我们知 ...

  9. 模块打包机--webpack--基础使用

    什么是webpack? 作用有哪些?   WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,Type ...

  10. SpringBoot 消费NSQ消息

    使用监听器,来实现实时消费nsq的消息 一.目前spring boot中支持的事件类型如下 ApplicationFailedEvent:该事件为spring boot启动失败时的操作 Applica ...