基于ROS的激光SLAM室内建图定位导航智能机器人设计

2020-04-22 20:37王林荣黄涛
无线互联科技 2020年4期
关键词:建图导航定位

王林荣 黄涛

摘   要:文章基于Linux系统上的ROS平台实现基本的SLAM算法,机器人可以实现构建室内地图、室内自动避障导航及室内定位等功能。底层主要以STM32和树莓派为核心,通过陀螺仪和码盘电机得到机器人方位和行走里程,使用激光雷达获取室内地图信息。在ROS上执行相应脚本,调用Gmapping,ACML算法实现室内地图构建和定位。

关键词:即时定位与地图构建;机器人操作系统;建图;导航;定位

1    机器人研究现状及发展方向

近年来,随着计算机视觉和人工智能等高新技术的逐渐成熟,其被越来越广泛地应用于人们生活中的每个角落。移动机器人在各个领域都有着很大的市场需求,使得相关技术有着更深入地研究和应用。在国防领域里,无人战机、无人执勤车等被用于情报收集和地形勘探,减少战争风险。在家庭和商业中心,扫地机器人、服务机器人和安保机器人给人们带来便捷服务的同时还可以减少人力成本。在物流领域里,搬运小车更是成为当中不可或缺的一部分,主要应用于物流的分拣和搬运以及机场港口的行李货柜搬运。其中,最被人熟知的就是在亚马逊物流中心工作的Kiva机器人[1]。目前有超过15 000台被派驻到10个物流中心进行工作。Kiva系统将物流中心的储存能力相较传统仓库提高了50%以上[2]。

即时定位与地图构建(Simultaneous Localization and Mapping,SLAM)技术可以很精确地实现环境的地图构建,定位以及多点导航。目前SLAM技术可以分为激光SLAM和视觉SLAM,激光SLAM采用的传感器为激光雷达,而视觉激光则采用深度摄像头。激光SLAM技术较为成熟、误差少,且足以满足当前环境的使用,所以本项目采用了此项技术。

当机器人有了SLAM的功能,就相当于机器人有了一双眼睛。其可以扫描未知环境从而获取地图,以及实时获取自己的当前位置;可以自行路径规划到达指定地图上的地点。如智能扫地机就可以通过SLAM实现精准的地面避障遍历,又自行回到充电地点。在无人驾驶以及无人机上亦同样适用,其需要实现一个共同的目的:避障、定位、路径规划。为了让机器人更加智能化,可在实现此项技术上再加上手机APP的控制和语音识别控制。

2    硬件系统设计

2.1  机器人平台

选择机器人平台需要考虑的关键因素是稳定性,减少机械结构问题带来的数据误差,微小的误差在定位和导航上都会造成错误。同时,亦需要考虑定位性能,这是机器人可以根据自身运动进行位置估算的重要标准。定位导航算法需要获取机器人的里程计信息,所以在控制平台上必须具有记录行驶路程以及方位的功能。机器人动力系统使用两个390线的码盘电机,使用码盘作为机器人的里程计,通过两轮差速实现转向,并使用九轴陀螺仪控制方位。

在定位导航上的测量单元主要有激光测量、图像测量。其中激光测距单元比较精确、高效,并且其输出不需要太多的处理。激光SLAM在构建地图的时候精度较高,思岚科技的RPLIDAR系列构建的地图精度可达到2 cm左右,而半径可达到12 m,足以在室内环境下使用。

底层控制板是STM32F1系列,用于控制运动装置以及获取码盘和陀螺仪信息。上层控制板则是运行Linux系统的树莓派,再执行次级系统机器人操作系统(Robot Operating System,ROS),激光雷达扫描室内环境返回数据信息传输到PC端进行建图、定位和导航。机器人实物如图1所示。

2.2  硬件电路设计

运动装置采用390线的码盘减速电机,TB6612FNG芯片作为电机驱动。系统通过PWM脉冲宽度调制来控制电机速度。机器人获取方位以及姿态调整需要使用到陀螺仪,再联合码盘电机采用PID算法进行闭环控制,使得机器人平台更加稳定。电路如图2所示。

3    软件系统设计

3.1  地图构建算法Gmapping

Gmapping由GiorgioGrisetti和CyrillStachniss等在2007年以Fast-SLAM方案为基本原理提出,是一種基于Rao-Blackwellized粒子滤波的二维激光SLAM方法,目前在机器人定位导航方面应用广泛[3]。

使用Gmapping算法进行机器人定位导航,在扫描到的环境中用每一个粒子代表机器人可能出现的位置。获取准确位置,必须估计机器人的位置和姿态,通过不断地运动和测量,获取其所处环境中的地图信息,逐渐降低自身位置的不确定性,最后获得准确的位置信息。在SLAM中,姿态和地图都是状态变量,因此一个粒子需要同时保存开始到现在的所有位姿和地图信息。这相当于将SLAM中分为定位和建图两部分,降低了算法的计算量和复杂度,可简单描述为机器人用上一刻的定位和地图预测当前时刻的位置信息,然后计算权重、重采样,接着更新粒子的姿态和地图信息。

激光雷达的测量信息可以为Gmapping算法提供一个相对集中的粒子分布,把粒子采样范围更改到激光雷达测量的区域,使得后来的粒子分布更接近真实分布。而码盘电机和陀螺仪可以提供机器人的位姿信息,结合内容随机采样多个点,再根据这些点的里程计和观测模型计算均值和方差。其计算过程如图3所示。

Gmapping算法只适合室内环境,场景越大,需要的粒子越多,会导致建图失败。在机器人起始位置应该选择地图特征丰富的地方,避免大片的空地,从而更容易提高正确粒子的权重。建图系统框架如图4所示。

粒子滤波的思想基于蒙特卡洛方法来表示概率,可以用在任何形式的状态空间模型上。简单来说,粒子滤波法是指通过寻找一组在状态空间传播的随机样本,对概率密度函数进行近似,以样本均值代替积分运算(状态方程),从而获得状态最小方差分布的过程。因此,粒子滤波能够比较精确地表达基于观测量和控制量的后验概率分布,可以用于解决SLAM问题[3]。粒子滤波算法主要分成5个步骤:

(1)预测阶段,粒子滤波首先根据状态转移函数预测生成大量的采样,这些采样就被称之为粒子,利用这些粒子的加权和来逼近后验概率密度。

(2)校正阶段,随着观测值的依次到达,为每个粒子计算相应的重要性权值。该权值代表了预测的位姿取第N个粒子时获得观测的概率。因此,对所有粒子都进行评价,越有可能获得观测的粒子,获得的权重越高。

(3)重采样阶段,根据权值的比例重新分布采样粒子。由于近似逼近连续分布的粒子数量有限,因此这个步骤非常重要。下一轮滤波中,再将重采样过后的粒子集输入到状态转移方程中,就能够获得新的预测粒子了。

(4)滤波阶段,将重采样后的粒子放进状态转移方程经过计算获取新的预测粒子位姿和地图信息,然后再次进行预测、校正和重采样过程,经过不停地循环,使得粒子的范围值处于接近真实值的区域内,从而计算出机器人的具体定位。

(5)地图估计,对于每个采样的粒子,通过其采样的轨迹与观测计算出相应的地图估计,选取最接近真实值的粒子,即可生成规划区域的栅格地图。

3.2  自主避障导航和多点导航

机器人的导航系统主要使用ros-navigation导航功能包集合,导总结来看可以分为数据收集层(传感器数据收集)、全局规划层(global_planner)、局部规划层(local_planner)、行为层(结合机器人状态和上层指令给出机器人当前行为)、控制器层(与下位机通信)[4]。

机器人使用navigation栈导航时,move_base模块负责整个navigation行为的调度,包括初始化costmap与planner,监视导航状态适时更换导航策略等监视导航状态、适时更换导航策略等。涉及行为的控制,move_base具体实现就是有限状态机,定义了若干recovery_behavior,指定机器人导航过程中出问题后的行为。具体的逻辑流程如下:

move_base首先启动了global_planner和local_planner两个规划器,负责全局路径规划和局部路径规划,通过costmap组件生成自己的代价地图(global_costmap和local_costmap)。通过全局路径规划,计算出机器人到目标位置的全局路线,实现的方法是基于栅格地图的cost搜索找最优。然后通过局部规划,负责做局部避障的规划,具体navigation中实现的算法是Dynamic Windows Approach,具体流程是:由移动底盘的运动学模型得到速度的采样空间;在采样空间中,计算每个样本的目标函数;得到期望速度,插值成轨迹输出,如图5所示。

在机器人运行过程中,根据机器人的状态做出规划(唤醒规划器),操作(计算合法速度并发布),清理(recovery_behavior)等操作。

3.3  系统软件平台

ROS中提供了一個3D可视化工具Rviz,可以在显示面板区域选择需要显示的选项,还包括了一个3D可视化区域,用于显示所加载的所有项[5]。在此界面上,可以显示构建的地图和已规划的路径,还可以获得激光测距仪、里程计以及仿真机器人等多种信息。用户可从不同角度对机器人的运动状态进行观察,可直观地获取机器人当前的位姿和创建的地图等,如图6所示。

总而言之,Rviz可以帮助使用者实现所有测量数据信息的图形化显示,同时还可以通过按钮、点击或修改控制变量的方式,控制定位导航机器人的行为。

4    结语

室内服务机器人将会是未来一个很大的发展方向,在室内环境中GPS无法精准定位,所以SLAM技术应运而生。机器人可以自身感知室内环境,实现建图、定位和导航功能。通过单线激光雷达获取室内二维平面地图,完成到目标点的路径规划,再完成相应的工作。

室内建图主要使用Gmapping和Hector_SLAM算法,通过激光雷达的返回数据构建地图信息,使用蒙特卡洛定位算法实现机器人的定位,通过move_base导航包,采用A*算法寻找到最优路径。未来工作可以在此机器人上加上机械臂,以实现相关的功能操作。

猜你喜欢
建图导航定位
视觉同步定位与建图中特征点匹配算法优化
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
基于三轮全向机器人的室内建图与导航
一种基于多传感融合的室内建图和定位算法
找准定位 砥砺前行
机器人室内语义建图中的场所感知方法综述
青年择业要有准确定位