这一节,在熟悉了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. javascript中手风琴特效

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. Five Invaluable Techniques to Improve Regex Performance

    Regular expressions are powerful, but with great power comes great responsibility. Because of the wa ...

  3. java 遍历list 模糊查询用

    java 遍历list 模糊查询用 /** * 筛选list * @param list 要筛选的list * @param key 筛选的key * @param <T> * @retu ...

  4. SQL like查询条件中的通配符处理

    1. SQL like对时间查询的处理方法 SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005- ...

  5. rem 自适应布局 bootstrap 移动端适配

    移动端适配用:rem 自使用布局用:bootstrap

  6. hive(I)--学习总结之常用技能

    hive是Apache的一个顶级项目,由facebook团队开发,基于java开发面向分析师或BI等人员的数据工具(常用作数据仓库),它将hdfs文件组织成表,使用hive-sql调用mapreduc ...

  7. CF949B A Leapfrog in the Array 思维题,推理

    题意: Dima是一名初级程序员. 在他的工作中,他经常不断地重复以下操作:从数组中删除每个第二个元素. 有一天,他对这个问题的解决方案感到厌倦,他提出了以下华丽的算法. 假设有一长度为2n的数组,最 ...

  8. python之类与对象属性的增删改查

    类属性与对象属性的增删改查 类属性的增删改查 class School: """ 文档 """ Teacher = "老王&quo ...

  9. javaScript(其他引用类型对象)

    javascript其他引用类型对象 Global对象(全局)这个对象不存在,无形的对象,无法new一个 其内部定义了一些方法和属性:如下 encodeURI str = www.baidu.com ...

  10. 命令行导入导出Mysql数据库

    MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录,如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serve ...