基于ROS的室内自主导航移动机器人系统实现
2022-02-28叶强强郑明魁
叶强强, 郑明魁, 邱 鑫
(福州大学 物理与信息工程学院,福建 福州 350117)
0 引 言
国外对于移动机器人相关技术的研究起步较早。如20世纪70年代斯坦福研究院(SRI)研究出Shakey的移动机器人,它使用三角测距仪、碰撞传感器等来实现自主定位与感知。受限于当时的计算机水平及相应的技术,Shakey往往需要数个小时才能完成相应的路径规划。随着同时定位与建图(simultaneous localization and mapping,SLAM)技术的发展,其技术迅速被运用到机器人身上。2019年,在美国的TechCrunch AI+机器人大会上波士顿创始人暨CEO Marc Raibert展示了即将量产化的机器人SpotMini[1],展示其灵活性及其适用场景。SpotMini使用双目摄像头配合IMU通过3D SLAM技术实现定位。
国内的移动机器人产业起步时间虽然较短,但是在这一方面也取得相当大的进步。特别是在室内移动机器人这一方面,商业化的步伐正在加快。然而室内移动机器人要想真正得走进人们的生活中,还有一些亟待解决的问题,如移动机器人准确的定位是其自主导航的基础。此外,一套成熟、可移植性强的移动机器人方案也是实现商业化最重要的前提。
本文基于上述内容提出一种移植性强、定位性能优秀的室内移动机器人方案,在Ubuntu16.04环境搭载ROS系统上来实现室内移动机器人的建图、循迹及自主导航系统,为室内移动机器人商业化提供一种可行性方案。
1 系统总体框架
1.1 移动机器人硬件框架
本文移动机器人硬件方面采用清华大学团队研发的Autolabor Pro1[2]差速底盘机器人、瑞芬的Ah100b型号九轴惯性测量单元(inertial measurement unit,IMU),北科天绘Rfans—16的激光雷达。移动机器人系统的硬件框架如图1所示,Autolabor Pro1是双电机四轮驱动的模式。因此,同侧车轮的速度是相同的,在发送右轮或者左轮的速度时,只需要发送同侧一个车轮速度即可。激光雷达与IMU的数据放在PC端进行处理,对移动机器人的控制命令通过RS—232串口发给机器人底盘。
图1 移动机器人的硬件框架
1.2 移动机器人软件框架
移动机器人的软件框架如图2所示,由于GMapping[3]与AMCL只适用2D雷达数据。因此,使用ROS[4]的开源包Pointcloud_to_laserscan把3D PointCloud2转为2D高质量的 LaserScan。为了让GMapping建图与AMCL重定位过程更加的精确。这里对2D的LaserScan数据进行运动畸变的矫正。另外,由于GMapping与AMCL严重依赖于里程计数据,若机器人处于打滑的情况,或者是地面不平坦环境下,会导致建图与重定位的效果非常不理想。为改善这种情况,使用扩展卡尔曼滤波(extended Kalman filtering,EKF)[5]对轮式里程计与IMU数据进行融合,提升里程计数据的准确度。
图2 GMapping建图与AMCL定位框架
2 激光雷达数据预处理
图3 移动机器人运动Δt后各个坐标系之间的关系
(1)
如果移动机器人是在静止的情况下,运动畸变自然也不存在。但是,若移动机器人移动速度较快时,特别是在旋转的情况下,这种雷达数据的运动畸变将严重影响到移动机器人的建图、定位效果。
激光雷达数据的畸变矫正主要思想是估计出激光雷达在一帧数据时间内的运动情况,从而根据雷达数据一帧内运动情况对这一帧数据进行相应的矫正。估计帧内运动方法可以借助IMU[7]辅助测量得出,本文直接采用底盘里程计信息辅助方式来对激光数据进行运动畸变矫正。里程计信息更新频率远远高于激光雷达的更新频率,基本都能达到50 Hz左右。ROS环境下里程计发布的信息为机器人坐标系base_link在里程计坐标系odom下的位姿O=(xR,yR,θR)T,移动的速度v与角速度ω,在较短的时间内能正确反映机器人的运动情况。
假设一帧的激光雷达n个数据对应的时间点为{ts,ts+1,…,ts+n-2,te},由于里程计的更新频率远远高于激光雷的数据的发布频率,在相同的时间间隔内,里程计的时间戳比激光雷达的时间戳更加的密集。如图4所示,ts与te为一帧中激光数据开始点与结束点对应的时刻,竖直虚线代表拥有里程计信息的时间戳。把一帧的激光雷达按照时间间隔分成k个小区间,设移动机器人在每一个小区间内为匀加速运动的,如激光雷达的周期T=100 ms,k=10,则每个小区间的时间为10 ms,假设机器人在10 ms时间内运动状态为匀加速运动是合理的。
图4 激光和里程计信息对应的时刻
用Om表示m时刻对应的里程计的信息为Om,其中时刻tm O(ts)=O(tm)+(O(tn)-O(tm))/(tn-tm)(ts-tm) (2) 同理,通过{ts+k,ts+2k,…,ts+(k-1)k,te}最近时刻的里程计信息进行线性插值求出{O(ts+k),O(ts+2k),…,O(ts+(n-1)k),O(te)}的里程计信息。假设ts+2k与ts+3k中有p个激光数据点,在移动机器人从ts+2k到ts+3k时刻是匀加速运动的前提下,对p个激光点进行线性插值获取p个点对应的里程计信息。同理,获得这一帧激光数据n个点对应的里程计信息。使用对应的里程计信息根据上述方法把n个激光点转换到同一坐标系上,重新封装为激光数据再发布出去,即这一帧的运动畸变矫正完成。 GMapping主要基于RBPF粒子滤波的方法,GMapping中的每一个粒子都维持一幅地图及相应的位姿。RBPF算法把SLAM问题分解为两个部分:1)p(x1︰t′|z1︰t,u1︰t)机器人的定位;2)p(m|x1︰t,z1︰t)在已知机器人位姿的情况下建图 {p(x1︰t,m|u1︰t,z1︰t)=p(x1︰t′|z1︰t,u1︰t)*p(m|x1︰t,|z1︰t)} (3) GMapping算法使用粒子滤波方式估计出机器人的轨迹p(x1︰t′|z1︰t,u1︰t),该算法主要有以下4个步骤: 1)抽样 (4) (5) 2)重要性权重的计算 (6) 3)自适应重采样 粒子滤波有个严重的缺陷,如果频繁地进行重采样的话,粒子的多样性会散失。为缓解这种情况,GMapping实施自适应重采样,当Neff[9]小于相应的阈值T时,则执行重采样。 4)地图估计 为提升移动机器人定位方面的鲁棒性,实现从全局定位失效或者是机器人的绑架情况中恢复过来AMCL结合Augmented_MCL算法。Augmented_MCL使用指数平滑法思想通过跟踪传感器测量概率p(zt|z1︰t-1,u1︰t,m)的短期均值ωfast与长期均值ωslow来判断在什么情况下增加粒子,以便加强定位的鲁棒性。 AMCL如果单纯的依赖由编码器得出的里程计的信息的话,在小车行驶的过程中,特别是在转弯的过程中(转弯容易导致打滑),从而导致粒子的估计不准确。通过EKF融合IMU与里程计的数据,能较好地维持粒子的收敛状态。 在移动机器人路径规划[11]这一方面,本文使用的是move_base包。在全局路径规划上使用带有启发式搜索的A*算法[12]。 在局部路径规划这一方面使用动态窗口法(dynamic window approach,DWA)[13]算法,DWA根据当前移动移动机器人的状态,模拟出多条轨迹,如图5所示。根据相应的评价标准如是否接近障碍物、是否靠近目标点等选择一条最优的模拟轨迹。 图5 DWA算法轨迹模拟情况 GMapping建图效果如图6所示,从整体上看建图的效果还是非常不错。但是由于建图实际环境中存在玻璃,激光点透过玻璃,建图在局部细节方面还略有瑕疵。 图6 GMapping建图结果 AMCL的定位效果如图7所示。定位开始时,粒子处于散开状态,随着移动机器人的运动动,粒子慢慢收敛,说明移动机器人根据当前周围环境的雷达数据信息逐渐确定自己的位置。 图7 AMCL粒子收敛图 为实现移动机器人的室内循迹,移动机器人每运动一段距离记录下相应的x,y,yaw,并把这些小车的位姿信息存储在文本文件下。循迹时,通过依次发布这些目标点,来实现小车的循迹功能。通过相应的设置,让移动机器人既能依照轨迹回环循迹,又能让小车往返循迹。在局部路径规划方面,小车使用的是DWA算法,在小车在循迹的过程中,也能实现避障的功能。移动机器人的循迹如图8所示。路径为绕障碍物一圈的长带,可以看出,粒子一直收敛在机器人的周围,定位状态良好。 图8 移动机器人的循迹实现 本文通过对激光雷达数据预处理,里程计融合IMU实现室内移动机器人的GMapping建图、AMCL重定位、自主导航与循迹等功能。经过实验认证,移动机器人在室内自主导航,循迹效果表现良好。而且,本文方案的可移植性非常的强,如需要移植到阿克曼转向型或是麦克纳姆轮移动机器人上,只需要更改其相应的里程计模型即可。基于本方案,之后可以逐步融合视觉等方面以增加相应的功能,提升其鲁棒性,使其真正商业化落地。3 GMapping建图与AMCL重定位
3.1 GMapping建图
3.2 AMCL重定位
4 移动机器人的路径规划
5 实验结果
6 结束语