APP下载

低成本移动机器人2D SLAM算法地图评估研究

2021-11-17刘丽伟朱绪康李秀华赵子君

计算机仿真 2021年4期
关键词:位姿栅格移动机器人

刘丽伟,朱绪康,李秀华,赵子君

(长春工业大学计算机科学与工程学院,吉林 长春 130012)

1 引言

众所周知,移动机器人利用自身传感器获得未知环境的地图,同时确定自身在地图中的位置和姿态的过程叫做同时定位与建图(Simultaneous Localization and Mapping,SLAM)。目前,移动机器人SLAM技术的研究,大都基于高成本高精度的传感器,近年传感器技术发展日新月异,低成本机器人逐渐广泛应用于各个行业[1]。

SLAM和实时路径规划是实现移动机器人智能化的关键,生成地图的精度会直接影响移动机器人的定位和自主导航。SLAM算法众多,不同算法的鲁棒性、生成的地图的准确性和完整性是不同的,选择最适合的算法是机器人高效运行的关键。

评估SLAM算法的质量也就是估计运行期间创建地图的准确性,比较多种算法结果的最简单方法是计算创建的地图和地面实况图之间的差异。

机器人操作系统(Robot Operating System,ROS)是目前最流行的机器人框架,满足了各SLAM算法对运行环境的要求。它提供了一组工具、库和驱动程序,通过对代码进行微小的更改,就可以集成到不同的机器人平台中。重要的是,研究人员能够快速简单地使用ROS进行仿真和实际场景实验[2]。

本文通过对比实验定量评估运行在低成本移动机器人的2D SLAM算法的有效性和鲁棒性。其中,理论分析了四种可运行在ROS的SLAM算法,在仿真环境和实际场景中进行了实验,并提出五个指标评估算法生成的地图。

2 2D SLAM算法

2D SLAM地图总体上可以分为栅格地图、几何地图和拓扑地图。其中,Moravec和Elfes开创性地提出栅格地图这一环境表示方法:一个栅格代表环境的1cm-10cm,多个栅格组成一个大的环境网络。运行中,根据机器人激光雷达探测某方位物体的有无,相应的栅格将被标记。栅格有三种标记状态:占用,自由和未知。随着机器人移动和传感器数据被接收,机器人环境信息逐渐被描绘出来。由于表示方法简单、环境几何信息描述明确,栅格地图被广泛使用[1]。栅格地图便于机器人进行路径规划,在移动机器人自主导航中得到了较为成功的应用[3]。

本文中,实验比较了四个SLAM算法生成的地图,下面简要介绍它们:Gmapping,Hector SLAM,Karto SLAM和Google Cartographer。

2.1 Gmapping

Gmapping是由Grisetti等人提出的基于Rao-Blackwellized Particle Filter (RBPF)的2D SLAM算法。为了获取好的结果,原始的粒子滤波算法需要大量的粒子,但这必会增加计算复杂度;同时算法还存在粒子耗尽问题,也就是表示粒子重要性的权重失去意义,权重较大的粒子权重越来越大,而权重较小的粒子逐渐消失。Gmapping 采用的RBPF使用了自适应重采样技术,克服了粒子滤波算法存在的问题,重采样过程是有限的并且仅在需要时才会执行[4]。计算粒子分布时,同时考虑机器人的运动模型(里程计)和最新的传感器观测数据,降低了机器人位姿在粒子滤波过程中的不确定性,从而减少了所需颗粒的数量,同时保持了生成地图的准确性。在实验中,Gmapping使用的粒子数量为30。

2.2 Hector SLAM

Hector SLAM结合了2D SLAM系统的鲁棒扫描匹配算法和惯性传感系统的3D导航技术。Hector SLAM算法要求激光雷达的数据更新频率高、测量噪声小,而且它依赖扫描匹配但不需要使用里程计,所以该算法可以运行于无人机和移动机器人[5]。利用已知的地图对激光雷达数据进行优化获得机器人2D位姿估计,同时估计激光点在地图的表示,并估计占据栅格的概率。使用Gauss-Newton法扫描匹配,求得激光点与已有地图的刚体变换,为避免局部最小而非全局最优出现,使用了多分辨率地图。导航功能中,若要基于扩展卡尔曼滤波的3D状态估计工作,则必须配备惯性测量单元(IMU)。

2.3 Karto SLAM

Karto SLAM是SRI Internationals推出的基于图优化的Karto算法的开源版本。基于图的算法中,节点表示机器人轨迹的位姿和传感器数据集,它们通过边连接,边则表示相邻时刻机器人位姿之间的运动,是连续位姿之间的约束。优化方法用于最小化节点间误差,亦即优化机器人位姿和轨迹。Karto SLAM使用高度优化且非迭代的Cholesky矩阵分解作为优化问题的求解器,使用 Spare Pose Adjustment(SPA)进行扫描匹配和回环检测[6]。基于图优化的SLAM在某些环境下比其它方法(例如PF)建图更有效,因为它只包含机器人姿势,求得位置后再建图。

2.4 Google Cartographer

Google Cartographer是另一个基于图的SLAM算法,它包含两个相关的子系统,第一个是本地SLAM(前端),负责扫描匹配(基于Ceres求解器)和创建融合多传感器数据的子地图,另一个是全局SLAM(后端),它使用SPA执行回环优化。

Cartographer主要理论是通过回环优化来消除建图过程中产生的累积误差,回环检测的基本单元是子地图。基于子地图已有的laser scan及其它传感器数据,激光雷达的laser scan能够在短时间内高效准确地插入到子地图中。在短时间内创建的子地图的累积误差被认为是足够小的,随着时间推移,子地图间的累积误差则会越来越大[7]。Cartographer中的扫描匹配策略是,在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找与该laser scan可能匹配的位姿,如果找到了一个足够好的匹配,则会将该匹配的回环约束加入到位姿优化问题中,每隔几秒钟进行一次回环检测。机器人到达一个新的位置后就会得到一个新的laser scan,同时回环可以立刻完成,保证系统的实时性。

3 实验设置

3.1 实验环境设置

实验分为两部分:实验和实际场景实验。在实验中,所有SLAM算法都在Gazebo中测试,Gazebo是一个集成在ROS中的3D模拟器。Gazebo支持开发所需的机器人、传感器和环境模型,并且通过搭载的物理引擎可以得到逼真的仿真效果。Gazebo中,使用Turtlebot3 Burger机器人模型和模拟真实世界的3D模型。Gazebo运行在安装了Ubuntu16.04 LTS和ROS Kinetic的电脑上,该电脑具有intel core i5-7300HQ处理器和16GB RAM 内存。实际场景实验也使用上述电脑,通过键盘控制真实机器人Turtlebot3 Burger,如图1所示。TurtleBot3是一个小型、低成本、可编程的基于ROS的移动机器人,可用于教育、科研,或者作为原型用于产品开发。Turtlebot3 Burger配备了Raspberry Pi 3 Model B+,MPU9250 IMU模块,HLS-LFCD2 2D激光雷达和用作里程计的车轮编码器。机器人的机载计算机使用安装了ROS Kinetic的Raspbian Stretch操作系统。

图1 Turtlebot3 Burger

如上所述,创建了模拟各种类型地形的3D模型,并使用插件从这些3D模型获得地面实况图(2D),图2a)显示了3D模型的地面实况图,尺寸为4.5m×4.05m,为比较SLAM算法在不同场景中的表现,设置仿真场景b),尺寸为10m×10m。在实际场景中,如图3所示还原了仿真环境A的场景。

图2 仿真环境地面实况图

图3 实际场景

为保证对比实验的公平性,将SLAM算法置于相同的条件下,使用rosbag保存ROS所有主题数据,然后回放rosbag文件使每个算法使用相同的数据。在ROS中,SLAM算法脱机使用rosbag数据与机器人使用实时获得的数据对生成地图没有影响。地图分辨率设置为0.05米/像素,栅格地图以pgm格式保存。

3.2 地图评估指标

评估SLAM算法,最简单高效的方法是比较生成图与地面实况图之间的差异,传统上人们通过眼睛观察,现将图像处理技术被用于分析地图,提取每个地图的特征并计算它们,定量评估差异。通过观察生成的地图,可以正确地确定出地图的质量,找到自由区域中稀疏散布的点,弯曲的墙壁,位置偏移的房间,重叠的墙壁,伪影等[8]。依赖相同的想法可以量化分析生成地图的质量。使用MATLAB图像处理工具箱(Image Processing Toolbox)里的函数,将生成地图与相应的地面实况图对齐,基于一组度量,进行评估。表1展示了三种场景下的对齐结果。默认情况下,将图像表示中未知单元格的颜色置为白色,这对于简化地图比较是有必要的[9]。使用了5个指标:①归一化最邻近距离(Normalized Distance to the nearest neighbor,ND),②均方误差(Mean Square Error,MSE),③结构相似性(Structure Similarity Index,SSIM),④栅格占用自由比(The proportion of occupied and free cells,Proportion), ⑤边长总和(the Summation of the Lengths of Sides,SLS)。注意,为得出客观正确的结论,不应该依赖某一个指标,而是使用多个指标综合分析。

表1 生成图(绿色)与地面实况图(红色)对其结果

3.2.1 归一化最邻近距离(Normalized Distance to the nearest neighbor,ND)

定量评估由SLAM算法产生的地图,最简单和准确的方法是计算生成地图与地面实况图的距离。该距离越小越好。为了正确地比较地图,应用MATLAB精简处理产生的地图,使表示墙的线段宽度缩至一个单元格宽度,然后对齐地图、计算差异指标。其中,基于强度的图像配准工具计算出的变换矩阵用于对齐它们,然后计算地面实况图中每个占用栅格到生成地图最近占用栅格的距离总和,最后用这个和除以地面实况图占用栅格数量[9][10],计算公式如下所示

(1)

其中,N是占用栅格的数量。

3.2.2 均方误差(Mean Square Error,MSE)

均方误差作为既简单又经典的客观图像质量评价方法,在图像质量评价中扮演着重要角色,通常用来表示图像逼真度,描述图像之间的偏离程度。均方误差法计算原始图像和目标图像对应像素差值的均方值,对于像素大小为M×N的图像来说,其定义如下,

(2)

此处,x和y分别为生成地图与地面实况图,x(i,j)和y(i,j)分别为相应图像中第i+1行j+1列的像素值。MSE越小说明生成图与真实图差异越大。

3.2.3 结构相似性(Structure Similarity Index,SSIM)

Wang等人提出的结构相似性指数(Structure Similarity Index,SSIM)可以衡量原始图像与被测图像的相似程度[11]。SSIM算法的基础理论认为图像中相邻像素之间有很强的关联性,而这样的关联性反映了场景中物体的结构特征。假设地面实况图与生成地图分别为x和y,则SSIM计算公式如下:

(3)

3.2.4 栅格占用自由比(The proportion of occupied and free cells,Proportion)

墙壁的精确度,是地图最明显的特征之一,直接反映了地图的质量。同一位置在地图上发生重叠,地图上表示墙壁的像素减少,或者房间发生了轻微的旋转,同一堵墙出现两次,表示墙壁的像素点会增多。要确定墙壁的精确度,必须计算墙壁与自由空间对应像素的比例。该比例与地面实况图差异越大,墙壁越不准确,算法越不合适。

3.2.5 边长总和(the Summation of the Lengths of Sides,SLS)

机器人对墙的长度估计不准确、地图中出现重叠的墙或伪影的情况下,会表现为墙的长度总和比实际墙长度更长或者更短。为评估这类现象,处理得到的二进制图像,使用Suzuki算法找到图像中的封闭区域,然后计算所有封闭区域的周长[13][14]。周长与地面实况图差异越大,墙壁越不准确,算法越不合适。

4 实验结果与分析

4.1 实验分析

仿真环境A的实验结果如图4 所示,其中D-PRO和D-SLS分别为生成图的Proportion和SLS与地面实况图相应值的差,差值越小越好。ND、SSIM和D-PRO柱状图使用左侧纵坐标,MSE和D-SLS折线图使用右侧纵坐标。对其它场景实验数据做同样的处理。

图4 仿真环境A结果

结合图4和表1中场景A的生成地图,4个SLAM算法都成功创建了地图,Cartographer和Gmapping表现明显好于Karto SLAM和Hector SLAM,Hector SLAM表现最差。

根据图4结果,Gmapping和Cartographer有最低的ND和MSE,Cartographer有最低的D-PRO和D-SLS,它们SSIM都很高,Hector SLAM有最高的MSE,Karto SLAM有最高的D-SLS。

Hector SLAM和Gmapping都是经典的SLAM算法,但是Hector SLAM表现明显更差,其中一个原因是Hector SLAM主要依赖连续测量之间的扫描匹配,而且该方案把采集的每一帧激光雷达数据与地图进行匹配,该方案仅有前端扫描匹配模块,无后端优化过程。Gmapping是一种极其优化的粒子滤波算法,采用改进的重采样,确保了生成的地图的质量。Karto SLAM是基于图优化框架的开源方案,认识到了系统稀疏性,相比基于滤波器的方案这是很大的进步,实验中获得了比Hector SLAM更好的地图。Google Cartographer是 Karto SLAM 的优化方案,它的优秀表现归功于:优化回环检测的SPA求解器和用于位姿优化的Ceres扫描匹配器。

仿真环境B 实验结果如图5 所示。结合图5和表1中场景B的生成地图分析,Cartographer获得了较好的结果,第二名在Gmapping和Karto SLAM之间。

图5 仿真环境B结果

这个仿真环境,有更少的特征和较多的等宽长走廊。在此条件下,里程计的处理方式决定了Hector SLAM和Gmapping的表现。Gmapping方案非常依赖轮式里程计信息,生成地图的质量也取决于里程计的精度。而Hector SLAM不需要轮式里程计数据,里程计信息通过激光雷达数据估算。所以此环境中,机器人运动速度过快尤其是快速旋转的情况下,Hector SLAM方案极易产生漂移现象,使建图过程出错。Karto SLAM和Cartographer的表现反映了基于图优化理论SLAM算法的可靠性。

4.2 实际场景实验

实际场景实验结果如图6所示。结合图6和表1中实际场景实验的生成地图可以看出,每种算法得到的地图都明显比实验结果差。很多原因会造成这个结果,主要是物理因素,例如,机器人激光扫描数据上存在较多噪声,轮胎表面不平整导致里程计不准确,IMU数据存在噪声和误差等等。

图6 实际场景结果

尽管实际场景与仿真环境实验结果存在较大差异,但从实验数据来看,算法表现趋势与仿真环境基本一致。Cartographer有最低的ND MSE和最高的SSIM,D-PRO极其接近第一名,第二名属于Gmapping,最差的依然是Karto SLAM和Hector SLAM。

Hector SLAM需要高测量频率激光传感器,但这恰恰是低成本传感器的缺点,这就是传感器在性能和成本之间平衡的结果。Gmapping表现趋势与之前一致,接近Cartographer,但存在差距。又一次凸显了Cartographer独有的优化位姿和回环检测的优势。很明显,同样是基于图优化的算法,Karto SLAM表现不如Cartographer,但它的某些方面依旧好于Hector,证明了它在不同环境中的鲁棒性。

5 结束语

本文中,安装有ROS框架的低成本移动机器人在仿真环境和实际场景中分别测试了四种开源SLAM算法,都成功创建了地图,但质量有明显差异。基于提出的用于定量评价生成地图质量的指标,讨论了每种解决方案的优点和缺点。测试结果表明,Cartographer相比于其它算法,生成地图准确,鲁棒性好。Gmapping在各场景中表现稳定,仅次于Cartographer。由于Hector SLAM对传感器要求较高,本实验中表现不佳。下一步的研究重点是根据对各算法的分析,取长补短进一步优化算法,提高其性能。

猜你喜欢

位姿栅格移动机器人
基于ROS 和PX4 飞控的四轮驱动移动机器人研究
栅格环境下基于开阔视野蚁群的机器人路径规划
移动机器人路径规划算法综述
超声速栅格舵/弹身干扰特性数值模拟与试验研究
基于PLC的六自由度焊接机器人手臂设计与应用
基于位置依赖的密集融合的6D位姿估计方法
拉货机器人
曲柄摇杆机构的动力学仿真
反恐防暴机器人运动控制系统设计
移动机器人技术的应用与展望