朱成杰,张东升
(安徽理工大学 电气与信息工程学院,安徽 淮南 232000)
当前,机器人运动控制理论技术发展日新月异,但算法理论与实际应用结合的案例仍远远落后于理论技术的发展,随着自动驾驶技术的不断提高,机器人自主运动能力越发被一线科研人员重视。 机器人自主运动能力的提高,离不开成本逐渐降低的激光雷达的应用,而激光雷达的使用又为SLAM 算法的现实应用奠定了基础[1]。
针对现实应用场景的高复杂度,本文引入了SLAM算法对移动机器人的建图定位进行分析,并通过ROS(Robot Operating System)的仿真平台Gazebo 搭建仿真环境,实现了SLAM 算法建图定位仿真。 针对仿真存在的一些问题,本文同时引入了实物移动机器人平台,进行了Gmapping 方法和Hector SLAM 方法的建图定位测试。 根据仿真以及实物测试结果,分析比较提出了更加适用于实际场景的SLAM 算法,为SLAM 算法的应用提供了一种可靠方法。
SLAM (Simultaneous Localization and Mapping),也称CML (Concurrent Mapping and Localization),即并发建图定位。 根据SLAM 技术依赖的传感器,业内人士将SLAM 技术分为激光SLAM 技术和视觉SLAM 技术两大类。 激光SLAM 技术发展早于视觉SLAM 技术,相对较为成熟可靠,随着近年来机器视觉的热度不断增加,视觉SLAM 技术也得到了飞速的发展。 国外学者将SLAM 技术的发展划分为3 个阶段:经典阶段(Classic Age: 1986—2004 年)、 算 法 分 析 阶 段(Algorithmic-Analysis Age: 2004—2015 年)、鲁棒感知阶段(Robust-Perception Age: 2015—至今)。 当前的SLAM 技术研究,主要集中在提高SLAM 算法对于不同环境的适应能力以及鲁棒性,同时考虑计算效率和轻量化的程序实现。 目前,主流应用的2D-SLAM 算法有Gmapping,Hector Slam,cartographer(谷歌)等[2-3]。
下面主要介绍Gmapping 方法和Hector SLAM 方法的基本原理[4]。 Gmapping 方法实质是对于RBpf 方法的一种改进,具体体现在对粒子的提议分布的改进和选择性重复采样过程的改进。 RBpf 方法直接根据观测数据z1:t和控制数据u1:t求解地图和位姿的联合分布,其策略是先对位姿进行预估,再进行联合分布的求解,即先定位再建图。 对于位姿的预估,RBpf 使用了重要性重采样方法,实现过程可分为:(1)粒子采样;(2)粒子权值计算;(3)粒子重采样;(4)位姿预估[5]。 其原理如下。
先明确最终实现的是预估位姿和地图的联合分布。
在公式(3)中,将求解权值的递推公式表达了出来,只需求解出提议分布即可[6]。
提高包含正确信息的有效粒子所占比例,或者提高有效粒子所占权重,无疑会使提议分布的结果更加接近正确的目标分布结果。 重复采样可以解决有效粒子比重提升的问题,但也带来了新的问题。 在频繁的重复采样过程中,有效粒子的比重不断增加,随之而来的是粒子信息多样性的破坏,在经历了无数次的重复采样,粒子经过迭代复制,最终将只剩下若干个包含相同地图信息的粒子,造成粒子信息退化。 为解决这一问题,可以先从目标分布中找到概率大的区域,然后直接在概率大的区域进行采样,利用采样得到的数据建立高斯模型,用此模型模拟提议分布的结果,这样势必可以解决粒子退化问题,同时也相应减少了重复采样次数过多带来的计算问题。 以下公式(4)为模拟提议分布的高斯函数模型。
据此模型可求解出下一时刻机器人的位姿信息,进而达到建图定位的目标。
Hector SLAM 方法是一种基于扫描匹配的SLAM方法,支持数据上可以不使用里程计的信息进行定位和建图。 其使用IMU 以及具有良好容错性的扫描匹配策略进行建图定位,在硬件方面主要依靠精度高、干扰噪声小的激光雷达进行数据采集。
Gazebo 是一款3D 动态模拟器,能在复杂的室内和室外环境中,准确有效地模拟机器人群。 Gazebo 平台包括多个物理引擎、丰富的机器人模型库和环境库、各种传感器模型,可视化图形界面为移动机器人的设计提供了方便,同时,可依赖现有机器人模型进行一些算法的运行测试。 本文使用了TurtleBot 机器人模型作为算法的测试载体,避免了算法实现的过程中再搭建机器人的模型,节约了开发的时间成本[7-8]。
在仿真世界中,项目引入机器人模型TurtleBot,将算法程序植入到TurtleBot 机器人的运行程序中,进而实现机器人的运行控制与建图定位。 通过键盘控制机器人在仿真世界中的移动,并对环境进行建图。 如图1所示为Gazebo 环境下搭建的3D 仿真场景,用于机器人在仿真环境中进行模拟建图;如图2 所示为所建仿真场景,用于机器人在仿真环境下用SLAM 算法建图的对比。
图1 仿真场景
图2 2D 场景
由Gmapping 方法与Hector 方法基本原理可知,Gmapping 方法依赖里程计提供的信息,而Hector 方法只依赖高精度的雷达信息。 为此,仿真设计实现了里程计正常工作时,Gmapping 方法的建图以及里程计发布错误信息时的建图情况[9-10]。
如图3 所示为里程计信息发布无误时,使用Gmapping 方法在仿真场景中所建立的地图;如图4 所示为里程计发布错误里程信息时,Gmapping 方法建立的地图。 基于图3 及图4 可以分析出,里程计发布信息出错时,地图场景发生了明显的偏移,与仿真搭建的2D 平面结构存在较大的误差。 在仿真中使用了机器人碰撞墙壁而不停止电机运行的方式,模拟发布里程计的错误信息,进而实现了实际场景机器人运动中车轮悬空的场景模拟。
图3 Gmapping 正确里程计仿真
图4 Gmapping 错误里程计仿真
实物测试平台选取的机器人车体框架尺寸为595 mm×631 mm×242 mm,为满足机器人的运动需求,采用两主动轮驱动,两万向轮配合转动,同时辅以行星减速电机作为动力源。 基于算法运算量较大的考量,使用小型工控机作为上位机运行载体,下位机系统运行在以STM32F407 系列芯片为MCU 的核心板上。 现实场景算法建图模拟中,用高特征值的实验室环境来模拟实际生活中高复杂度的场景。
在实物机器人的建图定位过程中, 先使用Gmapping 方法进行测试。 区别于仿真环境中使用机器人碰撞墙壁产生错误里程计信息,实际场景测试中,采用了人为干预的方法产生错误里程计信息,具体措施是将机器人车体抬起悬空以及外力干预转向等。 因实际生活环境的复杂性,使用多角度的外力干扰,能更加真实地模拟机器人在复杂场景的运行。
如图5、图6 所示为使用Gmapping 方法在真实环境中的建图效果,其中,图6 为使用外力干预导致里程计失效或里程计信息发布错误时的建图效果。 如图7、图8 所示为使用Hector SLAM 方法在相同的真实环境中所建地图,其中,图8 为外力干预使得里程计信息失效或发布错误信息时所建地图。 分析上述地图信息,里程计信息对于两种SLAM 方法建图定位的影响存在较大的差别,Gmapping 方法对于里程计的严重依赖,使其并不适用于实际场景的建图定位策略;Hector SLAM方法不依赖里程计信息建图定位以及其良好的容错性,显然更加适合高复杂度环境的机器人建图定位的应用。
图5 Gmapping 正确里程计
图6 Gmapping 错误里程计
图7 Hector SLAM 正确里程计
图8 Hector SLAM 错误里程计
通过仿真以及实物模拟测试结果可以得出,HectorSLAM 方法相比主流的Gmapping 方法,更加适合实际场景的机器人建图定位使用。 但在模拟测试中,仍然存在一些值得注意的问题,如:在使用Hector SLAM 方法进行建图定位分析时,若外力干预使得机器人发生较高速度的转向,所建立的地图将会发生较严重的漂移和畸变,从而影响实际建图定位效果。 同时,Hector SLAM 方法依赖较高帧率的激光雷达,当雷达的扫描帧率低于40 Hz 时,建图的效果也将与理论结果存在一定偏差。 因此,在使用Hector SLAM 方法作为机器人建图定位算法时,需要提供较高品质的雷达才能达到理想效果。