Page 67 - 《软件学报》2020年第9期
P. 67
2688 Journal of Software 软件学报 Vol.31, No.9, September 2020
数据的地图,红框部分的地图与实际环境的尺度差异仍然存在,IMU 数据并不能处理尺度问题.图 7(c)是含有激
光雷达和里程计数据的地图,因为从里程计数据得到较为准确的线速度,红框部分的尺度问题得到解决,但还是
存在匹配错误问题.图 7(d)是包含所有传感器数据的地图,局部地图的匹配以及走廊部分的尺度不一致有明显
改善.
在长走廊场景的图 7(a)~图 7(c)中出现明显建图错误,是因为此场景的局部环境基本重复无变化,信息较为
简单.在此场景中仅依靠激光雷达传感器数据,无法探测到场景实际已发生改变.加入 IMU 数据后也无法帮助正
确建图,仅能帮助改善局部的地图匹配;而在里程计数据的辅助下虽然能正确感知环境的改变,但无法解决局部
匹配错误的问题.只有在 3 种传感器的共同作用下,才能得到一个理想的建图结果.
在这个场景的测试说明:扫地机器人在一些特殊场景的建图,对 IMU 和里程计等传感器数据有较大的依赖.
IMU 数据能提供角度增量,得到较为准确的位姿估计;里程计数据能提供较为准确的线速度进行位置估计,在激
光雷达数据的基础上得到较好的地图.
3.2.3 机器人碰撞的数据处理
在扫地机器人实际应用的场景中,碰撞不可避免,有时为了清扫障碍物边缘的灰尘,往往还会主动碰撞障碍
物.在测试中发现:产生碰撞会对里程计数据产生较大的干扰,最后生成的栅格地图具有明显的误差.而在没有
里程计数据的情况下,只有激光雷达数据或者激光和 IMU 数据都不会因为发生碰撞而干扰建图.而在前文的测
试中得到,里程计对于探测场景变换以及提升建图质量都是不可缺少的,这时需要在发生碰撞时对里程计数据
进行处理.
在扫地机器人上,前置有 3 个感知碰撞的传感器,在 SLAM 模块中,加入对这部分传感器的订阅.当发生碰
撞,也就是接收到感知碰撞传感器的数据时,SLAM 模块停止发送里程计数据,在碰撞结束后(一定时间内不再接
收到感知碰撞传感器的数据),再继续发送.算法中需要清空缓存队列中的里程计数据,防止之后利用这部分数
据进行角速度与线速度的计算;同时,在位姿融合部分保存之前通过里程计数据计算的线速度与角速度,需要加
入时间戳,在发生碰撞期间不再使用这些值,这样能避免里程计数据不准确造成的错误影响.
图 8 是在实验室场景产生碰撞后的栅格地图(红圈处为发生碰撞处,图 8(a)中发生 1 次,图 8(b)中为 4 次).
(a) 无里程计数据处理 (b) 有里程计数据处理
Fig.8 Comparison diagram of collision generated in the lab scene
图 8 实验室场景产生碰撞时对比图
图 8(a)中,在红圈处仅发生一次碰撞,此测试没有加入里程计数据的处理;图 8(b)中,在红圈处发生了 4 次碰
撞,这个测试中加入了对里程计数据的处理.可以看出:在加入里程计数据处理后,即使碰撞多次,建图质量仍未
下降;而在没有里程计数据处理的情况下,仅发生一次碰撞,也会使地图产生较大的误差.
表 3 是在上述两种情况下的匹配分数对比图.从表中可以看出:相较于有里程计数据处理的测试,未加入处
理的测试中,建图匹配分数有明显的降低.另外,当碰撞发生时,未加入对里程计数据处理的测试中,建图匹配分
数有明显的下降;对比有里程计数据处理的测试,建图匹配分数并未下降.说明在碰撞中对里程计数据的处理是
不可缺少的,否则会极大影响建图质量.