SLAM初探-SLAM for Dummies
SLAM综述性特别是原理讲述比较浅显易懂的的资料比较少,相对比较知名的是《SLAM for Dummies》,但中文资料相对较少,这里就简单概述一下《SLAM for Dummies》的核心内容。
(一) SLAM for Dummies中SLAM的基本模块
SLAM的基本组成包括:地标(Landmark)抽取、数据关联、系统状态变量估计、基于观测值得系统状态变量更新,以及地标更新。SLAM for Dummies主要描述了2D场景下的地图构建与机器人定位,这里的状态变量主要是指机器人x,y坐标位置与方向角以及地标x,y坐标位置,而系统状态变量估计、基于观测值的系统状态变量更新主要使用EKF算法。
(二) SLAM for Dummies中SLAM硬件组成
机器人采用了轮式室内机器人Evolution Robotics ER1 robot,使用里程计(odometry )预测下一时刻机器人的系统状态变量,里程计的误差要求是每移动1米的误差小于2cm,每转动45度的误差小于2度。测距模块采用Sick公司的激光雷达,其参数为角度分辨率为0.25度或0.5度,扫描范围100度或180度,测距误差正负5厘米。
(三) SLAM for Dummies中SLAM流程
SLAM流程如下图所示,基于里程计的变化使用EKF更新系统状态变量,基于激光扫描数据抽取地标,并进行数据关联完成本次观测的地标与以前观察到地标的关联,根据数据关联的结果,即观测过程,使用EKF更新和修订基于里程计预测的系统状态变量,同时更新地标信息,增加以前没有观测到地标。

(四) SLAM for Dummies中地标的抽取
地标的选取原则:(1)地标容易重新观测到;(2)地标相互之间区分度高;(3)环境中地标数量充足;(4)地标是稳定不动的。
基于激光雷达观测数据进行地标抽取的算法:
(1)Spike地标:基于激光雷达测距结果,抽取出“点”型地标。如果2个相邻的扫描点的测距距离大于一个距离门限,认为是一个Spike地标。在平滑的环境中,Spike无法正常工作,也无法处理像人这样在环境中移动的情况
(2)RANSAC地标:基于雷达测距结果,抽取出“线”型地标。通过随机采样角度差在D度以内的激光测距结果,并通过最小均方LS近似拟合成一条直线,如果距离该直线很近的激光测距结果的样点数量大于一个指定的门限,则认为该直线为一个地标。
在EKF算法中,地标有一个相对机器人位置的距离和方向角,对于“线”型地标,通常以机器人位置到“线”型地标的垂直线长度作为地标相对机器人的距离,垂直线的夹角作为方向角。
相对而言,以上两种基于地标的算法在准确性和稳定性方面差于基于scan匹配的算法。
(五) SLAM for Dummies中地标的关联
地标关联是指完成两个不同扫描观测到的地标之间的匹配。在《SLAM for Dummies》中,使用数据库维护以前观测到的地标及其被观测到的次数。只有该地标被观测到N次,才认为是合格的地标。 对于新的扫描,基于最近邻居规则,与数据库中的一个地标关联,并计算两者之间的欧式距离或者Mahalanobis距离,当距离小于一个门限(该门限是EKF不确定参数的函数)时,认为两者是同一个地标,否则认为是新地标,被观测到的次数设为1。
(六) SLAM for Dummies中核心算法EKF的设计
EKF的主要流程如下:(1)使用里程计数据更新当前系统状态;(2)基于地标关联或者说是地标的重观察修订更新的系统状态;(3)在当前系统状态中增加新的地标。
EKF算法的核心是系统状态变量(通常是由机器人位置的X,Y坐标、方向角,各个地标位置的X,Y坐标等3+2N个元素组成的列向量,N为合格地标的数量)、系统状态协方差((3+2N)*(3+2N)矩阵,初始化时,因为没有地标信息,也没有里程计数据,协方差矩阵仅为3*3的对角矩阵,对角矩阵的值为接近0 的一个非0值)的维护和更新,以及Kalman增益的计算。
(1)基于里程计数据更新当前系统状态
(a)更新由机器人位置的X,Y坐标、方向角,即系统状态变量的前三个元素
(b)更新预测模型(方程)的雅克布矩阵
(c)更新预测模型(方程)的高斯噪声方差
(d)计算系统状态协方差
(2)基于地标关联修订系统状态
针对每一个匹配的地标,执行以下处理过程:
(a)计算观测模型(方程)的雅克布矩阵
(b)更新观测模型(方程)的高斯噪声方差
(c)基于观测模型高斯噪声方差、观测模型(方程)的雅克布矩阵,系统状态协方差矩阵,计算Kalman增益
(d)基于Kalman增益,更新系统状态变量
(3)在当前系统状态中增加新的地标
针对每一个匹配的地标,执行以下处理过程:
(a)在系统状态变量中增加新的地标,元素个数从3+2N拓展到3+2N+2M,M为新增地标个数
(b)在系统状态变量协方差矩阵中增加新地标对应的项
SLAM初探-SLAM for Dummies的更多相关文章
- 从零开始一起学习SLAM | 学习SLAM到底需要学什么?
SLAM涉及的知识面很广,我简单总结了 “SLAM知识树” 如下所示: (公众号菜单栏回复 “树” 可获得清晰版) 可以看到涉及的知识面还是比较广的.这里放出一张SLAM圈子里喜闻乐见的表达悲喜交加心 ...
- [SLAM]Karto SLAM算法学习(草稿)
Karto_slam算法是一个Graph based SLAM算法.包括前端和后端.关于代码要分成两块内容来看. 一类是OpenKarto项目,是最初的开源代码,包括算法的核心内容: https:// ...
- SLAM: 单目视觉SLAM的方案分类《机器人手册》
摘抄知乎上一段有趣的话: 如果你出门问别人『学习SLAM需要哪些基础?』之类的问题,一定会有很热心的大哥大姐过来摸摸你的头,肩或者腰(不重要),一脸神秘地从怀里拿出一本比馒头还厚的<Mu ...
- [SLAM] GMapping SLAM源码阅读(草稿)
目前可以从很多地方得到RBPF的代码,主要看的是Cyrill Stachniss的代码,据此进行理解. Author:Giorgio Grisetti; Cyrill Stachniss http: ...
- 《SLAM for Dummies》中文版《SLAM初学者教程》
SLAM for Dummies SLAM初学者教程A Tutorial Approach to Simultaneous Localization and Mapping 一本关于实时定位及绘图 ...
- SLAM for Dummies SLAM初学者教程 中文翻译 1到4章
SLAM for Dummies SLAM初学者教程A Tutorial Approach to Simultaneous Localization and Mapping 一本关于实时定位及绘图 ...
- [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge
发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...
- [SLAM] Studying Guidance
Books from Zhihu: 幽默一把 看完Gonzalez:嗯,好像很好玩的样子,我也来搞一搞.看完Price:什么鬼,怎么这么多公式,公式看不懂肿么破.看完Szeliski:原来用一千页的书 ...
- SLAM学习笔记(1)基本概念
SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localization), 即时定位与地图构建 ...
随机推荐
- Portal 设置
nodatas 设置agent 状态,其采集指标 agent.alive 上报中断时,通知用户. hostgroups设置 模版设置
- !+"\v1" 能判断浏览器类型吗?
我在 http://www.iefans.net/ie-setattribute-bug/ 中看到如此判断是否是IE,if(!+"\v1"){IE代码}else{其他浏览器代码}, ...
- nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 错误解决
今天在做LNMP的时候,启动nginx服务,无法开启,导致网页打不开.把服务从起一下发现提示错误如下: Starting nginx: nginx: [emerg] bind() to 0.0.0.0 ...
- Nodejs websocket入门
websocket 2011年技术文档 http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index.html 浏览器端接 ...
- 移动应用开发过程中需要哪些IOS APP工具
虽说如今要开发一款IOS app应用软件已经不是什么难事,app开发技术已经发展成熟,所以要制作一款适用于苹果IOS智能操作系统的app软件也挺容易的了.不过对于开发者来说,可以通过一些app工具来更 ...
- 经历alidns在国外的严重延时
有个域名,是在国外1und1申请的,但dns的解析,国外的空间的功能弱爆了. 之前是放在dnspod,后来又试过dnspod的海外, 最后放回alidns,之前一直都很好的. 这2天国内没问题,在德国 ...
- 记得初学JS时候练个九九乘法表都写的要死要活
还记得当初刚接触JS时候,看到视频中老师写了个九九乘法表,觉得好神奇,可是自己在下面动手写了半天还是有各种问题,甚是懊恼啊.今又看到园子里有关于乘法表的博文,出于对过去的不舍与缅怀,遂重写一遍. &l ...
- Art-template模板
1.介绍 新一代 javascript 模板引擎. 2.性能(引) 1.性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍(性能测试) 2.支持运行时调试,可精确定位异常模板所在 ...
- WebForm 内置对象2
Session: 与Cookies相比 相同点:每一台电脑访问服务器,都会是独立的一套session,key值都一样,但是内容都是不一样的 以上所有内容,都跟cookies一样 不同点: 1.Sess ...
- [Spring常见问题]java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
这个问题是因为部署在tomcat下的项目中没有springweb包 但是问题来了,但是我的项目中有呀,maven都引了呀,然后我就懵B啦!看到这个博客我就豁然开朗了:http://my.oschina ...