文献综述
常规的机器人SLAM过程中,实际处于被动状态:仅利用输入的数据进行建图与定位,而不对如何输入数据进行干涉,所有的数据输入(指定运动目标及路径)实际上是由操作者来完成,这具有强烈的主观性和不确定性。主动SLAM则是根据现有的SLAM状态,选取一些合适的点作为进一步探索的目标,并对整个探索过程设计一套行动方案,以此来引导机器人进一步的运动规划路线。这些目标一般是选取对进行位姿和地图估计有利的位置[1],因此在主动SLAM过程中,可以利用现有的SLAM信息来指导如何提高定位于建图精度并进一步的减小误差,而被动式的SLAM则完全是基于操作者的经验来设计路线降低精度。
- 基于单线激光雷达的SLAM算法
单线激光雷达是一种简单有效的传感器,在室内平面SLAM相关方法中被广泛使用。利用单线激光雷达进行SLAM,目前算法前端常用的大体有两类方案:
- 基于粒子滤波
一个典型的例子是FastSLAM[2]及对其改进的GMapping[3],均以Rao-Blackwellized 粒子滤波算法(RBPF)作为基础。其中GMapping方法通过改善提议分布(基于栅格地图(grid map)进行)及自适应重采样的方法,可以降低所需的粒子数量,同时减轻了粒子耗尽的问题。虽然GMapping没有后端算法,但其在小范围的回环情况下,通过粒子的丰富性仍可以得到较为良好的结果,不过在具有大尺度回环的情况下,此方法仍旧存在粒子耗尽的问题。
- 基于优化
在这类方法中,一个典型的算法是cartographer[4]。cartographer在前端部分进行scan-to-map的匹配,并直接利用非线性优化的方法得到一个良好的匹配结果。在算力不匮乏的情况下,是一个有效的方法。
常用的单线激光雷达前端算法实际上都是scan-to-map的,虽然也存在scan-to-scan的方式,但是相较而言,尤其是在单线激光雷达进行平面SLAM这种特征较少的情况下,scan-to-scan方法容易过快的累积误差[4]。
- SLAM算法后端
SLAM算法后端的目的是利用回环等信息,对机器人运动轨迹上的位姿进行优化,进一步减少前端位姿估计产生的误差,得到对一条运动轨迹中位姿相对良好的描述。对于单线激光雷达建图这种平面SLAM问题而言,SPA[5]是一个常见的解决方案。SPA方法本质上是一种位姿图优化的方法,在已知较为准确约束关系的情况下,利用SPA可以得到良好的优化结果。
如果想要在平面SLAM中使用位姿图优化做为后端算法,则需要对得到的地图数据做出一定的处理,引入子地图作为扫描结果于全局地图的中间层级。每个子地图由相邻的多个帧扫描结果局部建图得到,可以认为这些扫描结果之间的误差较小,并不显著影响所得到地图的结果。相比之下,在子地图之间则可以认为具有相对较大的误差(基本上是子地图内误差的累积),可以认为这个误差是可以进一步优化的。这样,在子地图之间就构成了满足位姿图优化的条件,而为了进行位姿图优化,需要在子地图之间计算SPA算法所需要的约束[4]。合理的计算约束,可以将回环条件有效的包含进优化过程,不过对于回环检测的处理,cartographer使用了简单的分支限界法暴力搜索位置相近的子地图,虽然也能实时进行,但是产生了非必须的计算量。使用子地图方法的另一个优点是,子地图本身也可以认为是对一个扫描数据流的切片,这使得每一个直接与新的扫描数据进行匹配的地图的数据量不会过大,因而算法可以在相对较大尺度的环境下实时进行[6]。
- 主动探索目标的发现与选择
主动建图的目的本质上就是最小化整个SLAM结果的不确定度。这个不确定度可以使用熵的形式表示[7]:
其中,表示在时刻的位置,表示地图的占用情况,表示在时刻的观测结果,表示里程计的测量结果。这个熵可以分离为两个部分:地图熵和轨迹熵。在一些文献中,认为由于轨迹熵远小于地图熵,从而可以近似的忽略轨迹熵而不对主动过程产生太大的影响,并将最小化地图熵过程近似描述为最大化目标位置可观测到范围内的地图的不确定度,其中表示接下来的运动目标[8]。但实际上,这两个熵实际上是在描述两个不同的任务目标,地图熵主导向未知区域探索,而轨迹熵主导机器人进行回环以降低SLAM误差。两者确实并不容易直接结合到一起,因此很多主动建图方法都以地图不确定性为主[9-11],或仅在必要时才考虑轨迹不确定性对主动建图过程的影响[12]。
以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。