孙婷婷
(1.山东省船舶控制工程与智能系统工程技术研究中心,山东 荣成 264300;2.威海海洋职业学院,山东 荣成 264300)
目前移动机器人在各领域中均得到了快速的发展[1]。移动机器人通过传感器获取周边的环境信息是机器人实现复杂环境自主探索的重要环节。文献[2]采用激光雷达和里程计在未知环境中研究机器人SLAM算法。为提高SLAM算法的鲁棒性,该文采用粒子滤波器RPF作为定位算法。文献[3]采用导航系统和SLAM设计了一款自主式救援机器人,同步定位与地图创建模块先采用基于栅格地图的扫描匹配算法对机器人位姿进行初步校正,然后通过粒子滤波实现机器人的精确定位。文献[4]设计了一种结合单目视觉信息来辅助激光进行SLAM的方法,有效解决了单个激光传感器移动机器人室内定位与建图问题,实现了复杂环境下的场景识别。文献[5]提出基于GIS和SLAM的机器人自主导航方法,实现了包含空间数据库、SLAM、导航算法的完整系统,可指导机器人进行大范围导航和建图。本文研究主要基于ROS系统,采用Kinect摄像机、激光雷达、IMU等传感器进行数据融合以获取机器人的环境信息和定位信息,显著提高了地图构建的精确度。
本文设计的室内移动机器人要求能够自主选择目标点,并且自主规划路径[6],实现建图任务。图1所示为移动机器人的系统设计方案。方案采用ROS操作系统[7],从下到上分为三层,即物理层、功能层、交互层。物理层主要包括摄像机、激光雷达、IMU、机器人移动底盘,目的是感知周围的环境,将信息导入功能层;功能层主要实现环境感知、机器人自主建图、定位等;交互层完成机器人运动与指令等信息的交互。
图1 基于ROS系统的室内移动机器人系统设计方案
基于开发成本的考虑,移动底盘集成了碰撞传感器、防跌传感器、编码器等,不仅支持基于ROS操作系统的开发,还具有很强的可扩展性,且精度高。
自主建图器要求移动机器人对大量的图像进行快速处理,鉴于移动机器人工作环境的复杂性,控制器需满足耐高温与低温、体积小、实时性好等要求,图2所示为本设计所采用的XCY工控机实物。
图2 工控机
图3所示为本设计采用的激光雷达实物[8-9],表1为其主要性能参数。
图3 激光雷达
表1 ORLIDAR激光雷达技术参数
图4所示为能够采集音视频以及深度信息的Kinect传感器[10]。
图4 Kinect传感器
机器人在工作时如遇到颠簸、打滑等现象,里程计信息会发生较大变化,进而影响机器人的定位和轨迹路线。考虑到机器人工作环境的影响,本设计选用MPU9250惯性测量单元[11],如图5所示。
图5 惯性测量单元
本设计采用的操作系统为Ubuntu 16.04,图6所示为室内移动机器人的软件系统设计。软件系统主要包含4部分,分别是机器人建模、SLAM模块、自主探索模块、路径规划模块。机器人建模通过对URDF文件进行编译而实现。SLAM模块可以实现定位和建图功能,其中,定位信息可以由激光雷达和Kinect摄像机结合惯性测量单元获得;环境地图的构建依靠建图算法。自主探索模块要求机器人能够根据多传感器融合SLAM模块获取的定位和建图信息,通过局部环境地图信息计算出到达目标的最佳路径。
图6 室内移动机器人的软件系统设计
图7所示为SLAM算法的框架。传感器数据融合分为两部分,通过激光雷达数据和Kinect数据获得环境信息,通过编码器和IMU融合获得定位信息。借助融合后的数据可以进行室内移动机器人导航,即前端建图。通过闭环检测、计算约束量等可以修正地图误差。
图7 SLAM算法框架
图8所示为测试环境,该实验用于测试Kinect与激光雷达数据是否能够融合。激光雷达、Kinect以及纸箱的高度分别为h1、h2和h。由于h
图8 测试环境
图9 单一的激光雷达测试结果
图10 激光雷达与Kinect数据融合测试结果
自身定位实验在走廊中进行测试。机器人与墙壁之间相隔40 cm,设定机器人运行速度为10 cm/s,设置A、B两组对比实验。图11和图12分别表示A组单独采用编码器推算出机器人的定位轨迹对比和B组采用IMU和编码器融合后推算出的定位轨迹对比。点线和实线分别代表机器人的理想轨迹和融合前的定位轨迹。通过测试结果对比可知,A、B两组实验的实际轨迹与理想轨迹的误差都会随着时间的推移而迅速增大,但是B组实验的实际轨迹更贴近理想轨迹。A组在30 s时最大定位误差为 6.8 cm,B组定位误差为2.9 cm,B组的定位准确性较A组更高。
图11 融合前的定位轨迹对比
图12 融合后的定位轨迹对比
本文主要围绕基于多传感器融合的SLAM算法模块进行研究,在移动机器人感知以及机器人定位方面进行改进,并设置了两组对比实验。实验证明,将Kinect摄像机数据与激光雷达扫描数据融合,能有效表达机器人周围复杂的环境。将光电编码器数据与IMU数据融合,可获得更加准确的机器人位姿信息。