温州大学电气与电子工程学院 庞辰耀 吴平 翁德华 罗雨淅
本文基于树莓派ROS控制器和STM32运动控制器系统硬件平台实现激光SLAM算法。ROS控制器采用树莓派4B,安装有ROS机器人操作系统,作为机器人端ROS节点控制器。底层运动控制器为专用于树莓派的开源ROS控制模组,采用STM32F103作为主控制,板载IMU加速度陀螺仪传感器,支持四路直流电机闭环控制。通过陀螺仪和码盘电机得到机器人方位和行走里程,并基于激光SLAM算法进行建图,实现自主导航和避障。实验结果表明,本文所建立的基于ROS与激光SLAM自主导航与避障系统可以进行高精度建图,对于开放式的移动机器人具有一定的意义。
近年来,随着计算机视觉和人工智能等高新技术的逐渐成熟,机器人技术的迅猛发展,促使机器人逐渐走进了人们的生活,广泛地应用于人们生活中的每个角落。如在国防领域里,无人战机、无人执勤车等被用于情报收集和地形勘探,减少战争风险。在家庭和商业中心,扫地机器人、服务机器人和安保机器人给人们带来便捷服务的同时还可以减少人力成本。在物流领域里,搬运小车更是成为当中不可或缺的一部分,主要应用于物流的分拣和搬运以及机场港口的行李货柜搬运。其中,最被人熟知的就是在京东物流中心工作“小红人”AGV机器人,“小红人”可以实现自动排队、自动路线规划、自动避让等全自动工作机制,实现了“作业无人化”“运营数字化”和“决策智能化”[1]。
机器人的定位与导航是其中的关键问题之一,在这类问题的研究中,需要把握三个重点:(1)地图精确建模;(2)机器人准确定位;(3)路径实时规划。其中,即时定位与地图构建(Simultaneous Localization and Mapping,SLAM)最早由Smith、Self和Cheeseman于1988年提出,在未知的环境中从一个未知位置开始移动,移动过程中根据位置估计和地图进行自身定位,同时建造增量式地图,实现机器人的自主定位和导航[2]。具有定位精度准确,路径规划实时性强等特点,吸引了一大批研究者,成为实现智能机器人在未知环境下的即时定位与地图构建技术领域的研究热点。
鉴于此,本文提出一种基于ROS与激光SLAM自主导航与避障系统,建立了基于树莓派和STM32运动控制器的硬件系统平台,实现了基于激光SLAM算法的环境地图构建、自主导航与避障方法,可以进行高精度建图,并可实现自主导航和避障。
如图1所示,系统采用树莓派和STM32运动控制器框架。STM32主要作为控制核心,负责驱动机器人电机以及速度、位姿等数据的采集。树莓派主要连接摄像头、超声波模块以及激光雷达。其中,激光雷达在SLAM建图中起到极大作用。该模块通过一定频率发射激光并接收激光,从而测算出实际距离。因其具有现无接触远距离测量,速度快,精度高,量程大,抗光、电干扰能力强等特点,在实际应用场合中极为广泛。
图1 机器人硬件模块Fig.1 Robot hardware module
运动控制器为专用于树莓派的开源ROS控制模组,采用STM32F103作为主控制,板载IMU加速度陀螺仪传感器,支持路直流电机闭环控制。具有BOOT按键,支持ISP串口更新软件。可直接安插在树莓派上,通过插针接口可实现对树莓派供电和串口通信,如图2所示。
图2 驱动底板Fig.2 Drive base plate
如图2所示,其中主控制模块采用STM32F103作为主控制,该芯片具有丰富的外设。电机驱动采用了集成芯片TB6612,该芯片相较于传统的L298N模块,运行效率以及体积均有大幅度提升。
IMU模块采用了MPU6050芯片,该芯片内部集成了3轴陀螺仪,3轴加速度计以及一个可扩展的数字运动处理器。该模块采用了三个16位的ADC,极大地提高了数模转换的精度。且传感器的测量范围都是可控的,可精确跟踪快速与慢速的运动,降低了处理器对于姿态运算的负荷,提高了机器人实际运行的效率。
电池采用的是12V的降压模块,需通过降压模块将电压保持在5V。该模块芯片采用的是LM2596S芯片,可持续流经3A的大电流,具有很好的线性和负载调节特性,并在片内集成了保护电路、电流限制、热关断电路等,为系统提供稳定的电源电压,保证机器人系统的正常运行。
本文所示机器人(如图3所示)采用司岚A1激光雷达,并配合激光演示平台,通过按相应按键,就可以通过激光雷达即时定位与地图构建关键技术,根据实际场景正确建立地图并显示,并够控制其运动到指定位置,并能够根据任务进行路径规划,确定最佳路径。同时采用基于ROS+OpenCV的视觉识别关键技术和机器人底盘控制器、激光雷达、深度相机驱动与控制技术。可以通过机器人进行二维码立体检测、人脸识别、运动物体识别等功能。
图3 智能机器人实物图Fig.3 Real object of intelligent robot
软件层面搭载了基于Scratch3.0和树莓派进行深度二次开发图形化编程软件,充分结合树莓派概念增加了丰富的硬件积木编程模块,简单易操作又不失趣味性。
Gmapping由Giorgio Grisetti和CyrillStachniss等在2007年以Fast-SLAM方案为基本原理提出,是一种基于Rao-Blackwellized粒子滤波的二维激光SLAM方法,目前在机器人定位导航方面应用广泛[3]。Gmapping可以实时构建室内环境地图,其在小场景中具有计算量少,且地图精度较高,对激光雷达扫描频率要求较低等优势,因此,本文采用该算法进行时定位与地图构建,Gmapping算法的伪代码如图4所示。
图4 Gmapping算法的伪代码Fig.4 Pseudo code of Gmapping algorithm
ROS提供了Gmapping算法功能包,其总体框架如图5所示,Gmapping功能包订阅机器人的深度信息、IMU信息和里程计信息,同时完成一些必要参数的配置,即可创建并输出基于概率的二维栅格地图。
图5 Gmapping总体框架Fig.5 General framework of Gmapping
ROS中提供了一个3D可视化工具Rviz,可以在显示面板区域选择需要显示的选项,还包括了一个3D可视化区域,用于显示所加载的所有项。在此界面上,可以显示构建的地图、已规划的路径以及导航避障。可从不同角度对机器人的运动状态进行观察,可直观地获取机器人当前的位姿、创建的地图、导航路径等,3D可视化工具Rviz界面如图6所示。
图6 3D可视化工具RvizFig.6 3D visualization tool Rviz
基于ROS与激光SLAM自主导航与避障系统支持自主导航避障,其中全向移动平台支持全向移动导航模式与差速移动导航模式,全向机器人默认为全向导航模式,启动自主导航步骤如下。首先,通过SSH命令连接到机器人,导航到地图文件路径“~/ros_ws/src/zl01b/maps”,查看用于导航的地图文件。
再新建一个终端,SSH连接到机器人,运行“zl_nav.launch”导航节点,此时节点正在启动,终端会输出启动信息,等待出现图7启动完成界面。
图7 ROS系统配置图Fig.7 Configuration diagram of ROS system
再新建一个终端,在虚拟机端运行RVIZ可视化工具,并在RVIZ加载导航配置文件“zl_nav.rviz”。标定机器人当前位置和朝向,点击“2D Pose Estimate”按钮,将机器人的大体位置和朝向在地图中标出,箭头的尾部为ROS机器人的位置,箭头的方向为ROS机器人的朝向。利用“2D Nav Goal”按钮发布一个目标位置,ROS机器人即可自动导航与避障到达目标位置,导航与避障结果如图8所示。
图8 ROS机器人即可自动导航与避障到达目标位置结果Fig.8 Results of ROS robot's automatic navigation and obstacle avoidance to reach the target position
本文设计了一种基于ROS的激光SLAM智能避障及自动导航系统。具体通过建立基于树莓派和STM32运动控制器的硬件系统平台,实现了基于激光SLAM算法的环境地图构建、自主导航与避障方法,可以进行高精度建图,并可实现自主导航和避障。本文的研究可广泛应用于人们生活中的每个角落,为研究开发“作业无人化”“运营数字化”和“决策智能化”不同类型、不同领域的自主导航与避障智能机器人具有一定的意义[4]。