提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
本文先对2D激光雷达地图构建介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
(1)服务型机器人(室内建图定位导航)
(2)室内移动机器人
(1)IMU数据
(2)里程计数据
(3)单线激光雷达(Lidar)
(1)覆盖栅格地图
(2)机器人的轨迹(建图是的轨迹)
.
.
用于优化修正地图,每次回环都会优化一次地图,使得地图更加精确所以,【防盗标记–盒子君hzj】要先判断回环条件,在进行最小二乘算法优化地图
回环条件很重要,条件太苛刻就永远不会回环不会进行地图优化,条件太宽松就会一直瞎回环优化,浪费大量的计算机资源
(1)Scan-to-Scan
【使用两次扫描的数据进行匹配】
【没有典型应用,已经被淘汰了,信息量太少,非常容易匹配错误】
.
(2)Scan-to-Map
【使用当前扫描的数据和已经建立的子地图进行匹配】
【典型应用是cartorgraphor】
(3)Map-to-Map
【使用当前建立的地图和已经建立的子地图进行匹配】
【从开源的项目中使用得很少,是未来的方向】
(4)Branch and Bound & Lazy Decision
效果很好
.
.
1)(卡尔曼)EKF-SLAM----90年代
2)FastSLAM----2002~2003
3)Gmapping----2007
4)Optimal RBPF----2010
主要用到贝叶斯滤波原理(泛化)方法和粒子滤波原理(具体化)方法,这两种原理我另外开博客介绍,(比较理论)【防盗标记–盒子君hzj】请转战一下
这里我简单介绍一下FastSLAM和Gmapping
(1)Fast-SLAM介绍
.
.
(2)Fast-SLAM算法流程
.
.
(3)Fast-SLAM存在的问题及优化
问题优化一
问题优化二
问题优化三
(1)Gmapping特性
(1)目前使用的最为广泛的2D激光SLAM算法
(2)在较小的环境中能实现较好的建图效果
(3)以FastSLAM为基本原理
(4)在FastSLAM的基础上进行了优化1和优化2
(5)Gmapping没有使用优化3
(2)阅读Gmapping源码
具体看我另外的博客分解cartographer吧,转战一下~.
.
.
1)Globally Consistent Range Scan For Environment Mapping----1997
2)Incremental Mapping of Large Cyclic Environments----1999
3)Karto SLAM----2010
4)Cartographer----2016
(1)总的过程
示意图表示
(2)数学表示
.
.
.
(2)误差函数
.
.
.
(1)里程计测量检测方法【里程计测量又称预测值】【防盗标记–盒子君hzj】
机器人从节点i运动到节点i+1,里程计测量得到此运动信息。并在对应的节点中连上一条边,边为里程计测量值。
.
.
(2)回环检测方法
节点i和节点j观测到同样的环境信息,两者进行匹配得到相对位姿。并在对应的节点中连一条边,边为匹配的相对位姿。用信息矩阵来描述本次匹配的可靠性
.
.
用一个图(Graph)来表示SLAM问题,图中的节点来表示机器人的位姿,两个节点之间的边表示两个位姿的空间约束,构建图,并且找到一个最优的配置(各节点的位姿),让预测与观测的误差最小
(1)把SLAM建立地图的过程认为是一个建立“图”的过程
(2)机器人经过每一个地方的位姿认为是一个节点
(3)节点与节点之间的约束关系,我们认为是一个“边缘”向量
当机器人绕一个地图一圈形成一个闭环是,机器人的起点和终点理论上是重合的,但是在实际情况下,两者不一定会重合,【防盗标记–盒子君hzj】会存在一个误差,这个误差值T的计算方法有两种,一种是根据前向通道里程计不断累加的方法计算误差值T1,一种是根据起点传感器观测的数据和终点传感器观测的数据计算误差值T2,我们建立一个精确的地图必须优化,使得T1=T2即回环误差等于0,因此引出两个概念
(1)前向建图:相当于通过里程计数据,累计机器人移动时的位姿
(2)回环图优化:【防盗标记–盒子君hzj】通过非线性最小二乘法生成一个误差向量,用于优化图,使得T1=T2即回环误差等于0
.
.
.
1)基于图优化的SLAM算法
2)比较完善的匹配系统,包含建图和定位
3)目前效果最好的开源激光SLAM系统
4)有人在专门的维护,不断增加新的特性
具体看我另外的博客分解cartographer吧,转战一下~
.
.
.
已知机器人当前位姿(xyw)和当前激光雷达的扫描数据scan,建立出一个地图,【防盗标记–盒子君hzj】环境地图是机器人进行定位和规划的前提
1)把环境分解成一个一个的小栅格,每个栅格有两种状态:占用(Occupied)或者空闲(free)
2)栅格地图属于非参的空间模型
3)随着地图的增大,内存需求急剧增加
4)天然区分可通行区域,适合进行轨迹规划
(1)在建图的过程中,环境不会发生改变
(2)栅格地图中的栅格是一个二元随机变量,只能取两个值:占用(Occupied)或者空闲(Free),p(m)=1表示被占用,p(m)= 0表示空闲,p(m)= 0.5表示不知道(Unknown)
(3)地图中的每一个栅格都是独立的的,因此数学表达式可以表示为:
(4)地图估计问题表示为:
因此,估计环境的地图只需要对每一个独立的栅格进行估计即可
.
.
.
该算法对某一个栅格进行操作的时候,只有加法操作【防盗标记–盒子君hzj】,因此具有非常高的更新速度
更新的时候,需要知道传感器的逆测量模型
对于每一个栅格统计两个量:misses(i)和hits(i)
1)misses(i)表示栅格i被激光束通过的次数,即被标为free的次数
2)hits(i)表示栅格i被激光束击中的次数,即被标为occupied的次数
3)Hits(i)/(misses(i) + hits(i))表示栅格i的极大似然估计
4)当hits(i) / (missed(i) + hits(i))超过阈值则认为该栅格为Occupied,否则认为栅格是Free的
1)高精度的里程信息
2)信息量丰富的视觉地图
(1)好的算法不是万能的,甚至说效果贡献一般,工程复现做应用,更看重的是硬件性能、传感器精度,及吸热结构等等
(2)目前激光雷达SLAM比视觉SLAM的应用面广,【防盗标记–盒子君hzj】且二维的激光雷达比三维的激光雷达应用更多。在市场上价格是产品的一个很大的考虑因素,传感器和处理的选择不一定要用做高端的