张润楠 尹宇杰 邱琦 王希文
基于机器人操作系统(ROS)的智能运输机器人自动导航系统实现的基本方法,设计了一款室内智能运输机器人,小车通过激光雷达扫描周围环境的实时信息,传入工控处理后通过见图算法建立一张二维地图,小车通过A*或Dijkstra算法进行全局路径规划,通过局部路径规划动态窗口算法(DWS)进行自动避障,通过激光雷达测量物体的距离,精确避障,使用OpenCv搭载Python实现人脸识别开锁。通过软硬件结合,构建了一套具有完整结构的服务于社区的运输系统。该系统可以选择不同的配送类型,选择不同的服务模式,选择配送时间以及取货时间等等,本产品解决了“最后一公里”配送的问题,实现了“商户-物品-用户”一站式服务,为智慧社区的构建作出了重要的贡献。
在智能时代,机器人已经成为帮助人们解决许多问题的得力助手。智能运输机器人在物流、家庭服务、工业等领域广泛应用,但是移动机器人的普及仍然存在很多问题亟待解决,如精准室内定位、精准建立地图等。为解决上述问题,近几十年间的研究提出了很多有效的解决方案,如自适应蒙特卡洛算法、动态窗口局部路径规划算法、A*全局路径规划算法等。
2010年Willow Garage公司发布了开源机器人操作系统ROS,大大增加了小车在软件上的复用性、移植性和软件间的兼容性,本文基于ROS系统,介绍了一种基于ROS和树莓派的室内智能运输机器人,并搭配通用接口,以适应不同环境的应用。
小车总体框架
智能机器人系统主要由手机客户端和基于ROS与树莓派的智能机器人组成,手机端主要包括界面层和通信层,轮式ROS机器人系统主要包括操作系统层、驱动层及设备层(硬件层),如图1所示。
在交互层:采用客户端App,移动App开发拟采用Native App,拟实现顾客下单、监控物流情况、物品状况照片反馈、生成取货二维码等功能,Web页面采用html5+ccs3技术开发,可以同时在PC端、移动端、iOS设备、安卓设备上运行,可以实现一套代码跨平台、跨设备和跨系统的操作,问题反馈、机器人修理等功能。在执行层:当智能机器人在运输过程中受到外界恶意阻挡,或者在配送过程中遇到强行打开柜门等恶意行为时,智能机器人会启动报警装置,并触发报警器。麦克纳姆轮是由瑞典麦克纳姆公司发明生产的。许多室内环境具有拐角、长廊等狭小部分,而移动机器人或移动智能机器人灵活性差,不能很好地完成转向,所以不适合在室内进行建图导航等工作,若想要实现机器人和智能机器人的全向移动,一般使用全向轮或麦克纳姆轮。相比全向轮,麦克纳姆轮的灵活性和机动性较强,提高了智能机器人的运动稳定性。在运动过程中为了方便避障,选用麦克纳姆轮。在感知层:本产品感知层主要由Rplidar A1激光雷达、IMU陀螺仪以及RGBD深度相机以及摄像头三部分组成。其中激光雷达用于测绘二維地图并且解决智能机器人在行驶过程中的避障问题;陀螺仪用于感知智能机器人的姿态同时还可以准确对其进行定位;深度相机辅助激光雷达用于环境深度感知;摄像头分为箱内摄像头和箱外摄像头,箱内摄像头用于监测物品情况;箱外摄像头用于监测机器人运行情况。在控制层:在ROS规划端进行地图构建、自主定位、路径规划、路径跟踪、自主导航五大模块的设计与实现。通过制定ROS规划端与硬件系统的通信协议,使整个软硬件协同开发、协调工作。通过树莓派4B,连接摄像头,将照片传到App客户端手机上,此外,可以通过树莓派实现机器学习,语言包传输提醒,提升服务质量,同时也能够实现智能机器人精准、安全配送。在驱动层:根据对智能机器人的整体分析,所设计的运动控制线控系统主要分为上位机和下位机两层,上位机主要是车载工控机,是整个机器人的中央控制系统,负责控制整个机器人的所有功能。下位机是由STM32单片机作为主控芯片负责控制信号的输出,实现对智能机器人的速度和方向的控制[1]。
硬件方案设计
激光雷达
激光雷达主要采集用来构建2D栅格地图的信息,按激光线束分为单线和多线。可以360°全方位地采集周围距离信息。在本产品中传感器模块采用高性价比的单线激光雷达Rplidar A1。该雷达为思岚公司生产,价格低廉,可靠性高,能够确保二维栅格地图构建的质量。将Rplidar A1作为核心传感器,可快速获得环境轮廓信息,配合相应算法的使用,可以帮助机器人实现自主构建地图、实时路径规划与自动避开障碍物。
陀螺仪
IMU即惯性测量单元,在标准情况下,一个IMU中包含三个单轴加速度计和三个单轴陀螺仪。其中加速度计的作用是检测物体在全局坐标系的角速度信号,即移动智能机器人转动的角度。通过IMU陀螺仪可以测量得到移动智能机器人在空间中的角速度和角加速度,并且由此可以解算出移动智能机器人的姿态。所以IMU在智能机器人导航应用中有很重要的作用。
下位机主控器STM-32模块
STM-32F103RBT6是一款基于CORTEX-M3内核、高性能、低成本、低功耗的微控制器,在软件和引脚封装方面同其他STM-32系列处理器是兼容的。
它的时钟频率达到72MHz,能实现高端运算。内嵌128KB FLASH程序储存器。丰富的外设,UART、SPI等串行接口以及最大翻转率18MHz的GPIO。它拥有最快1微秒转换速度的双12位精度ADC,此快速采集、高性能的ADC非常适用于数据的快速采集和快速处理,这也是本组选择它作为核心控制器的一个重要原因。
电机驱动模块
智能机器人要想稳定运行,不仅要在电源模块上做出改变,在电机驱动方面也要有所不同。采用直流减速电机驱动,使用12V宽电压输入电机,通电后电机转速可达1600r/min,智能机器人空载时转速可达600r/min,电机减速比为1:30,车轮半径为30mm。当遇到障碍物时,超声波传感检测将障碍物的数据分析处理后传送给STM32单片机,然后由STM32单片机依据所检测到的各个数据对比标准数据的处理结果输送给BTN7971驱动芯片,从而来控制电机驱动4个麦克纳姆全向轮,使机器人改变方向。
摄像头模块
OpenCV摄像头OpenCV是一个开源、低成本、功能强大的摄像头模块。以STM32F767CPU为核心,集成了OV7725摄像头芯片,摄像头直接成像,并将信号实时传给主控板,主控板处理并压缩后,通过以太网模块传输向App。
电源模块
采用12V可充电锂电池供电,电机驱动模块直接由锂电池提供12V的电压,电源模块使用的是XL2596稳压芯片,通过XL2596芯片稳压处理后输出5V电压提供给STM32单片机,能够输出稳定电压以保证电源模块正常有效工作。这样即使电机驱动模块和控制系统不分开供电,也能实现控制系统的稳定工作,减轻机器人在电源上的承重压力,为机器人提供更大的驱动力。
人脸识别模块
采用树莓派4代作为搭建OpenCV视觉环境的硬件设备。树莓派具有能耗低、移动便捷性高、集成性高等特点。树莓派4代更是在前几代的基础上,在性能上有了更大的提升,另外树莓派还带有Raspberry Pi Camera Module v2专用定制摄像头,拥有定焦镜头,高质量800万像素[2]。配合树莓派4B开发板,运行速度快,流畅度较高。用来作为跑图像处理的平台,开发性高、性能较好、方便且快捷。通过树莓派平台搭建计算机视觉库来使用DRN人脸检测算法预训练模型对人脸进行准确检测捕捉,使人脸检测更加便捷准确。
软件系统设计
GmApping SLAM算法
GmApping是一种基于Rpbf的SLAM解决方案,这种解决方案如图2所示,先估计机器人的运动轨迹,再根据机器人的状态估计环境地图;然后反过来这个环境地图又可以用来更新机器人的运动轨迹。在算法中的每个粒子都独立地记录了一条可能的机器人轨迹及其对应的环境地图。GmApping算法作为室内应用最广泛的2DSLAM方法,可以实时构建地图,在室内小地图场景下地图计算量较小时精度比较高。GmApping算法里每当读取一对里程计/激光雷达信息时,首先根据里程计信息更新机器人位姿,随后以新的机器人位姿为初值进行激光扫描匹配。扫描匹配之后得到的激光雷达的观测模型可以给出一个相对集中的分布,用采样的方法在这个相对集中的区域里确定高斯分布的均值和方差,从而得到与真实分布最为接近的提议分布。在本系统中,直接移植GmApping package进入ROS的工作空间,配置好对应激光雷达的驱动数据,运行GmApping即可构建地图数据。开源算法GmApping运作过程为:其包含一个用于OpenSLAM的ROS包,采用了粒子滤波算法,提供了基于激光SLAM的ROS节点,使用该算法可以从智能机器人收集的激光和姿势数据创建栅格地图[3]。
A*路径规划算法
A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是许多其他问题的常用启发式算法。注意,它是最有效的直接搜索算法,之后涌现了很多预处理算法(如ALT、CH、HL等等),在线查询效率是A*算法的数千甚至上万倍[4]。
A*算法主要步骤如下:
(1)假如将起点存放于Open List中。
(2)循环执行以下过程。
(3)在Open List中寻找当前需要处理的节点,筛选的标准为这个节点的F值是Open List里所有节点中最小的,假设这个节点为a,当找到当前处理节点后,需要将该节点从开放列表里删除,紧接着将它加入关闭列表中。
(4)判断紧挨着a节点的方格(假如为b、c、d、e、f、g、h、i)是否符合要求,如果那个方格已经在Close List中,或者那个方格因为障碍物或者地形的原因阻碍了运动路径,则不考虑这个方格。如果方格符合要求,则进行接下来的操作:假如b方格不在Open List中,则把b方格的节点加入Open List中,并把a节点设置为b节点的父节点;若b方格已经在Open List中,则计算从a节点移动到b节点消耗的F值,如果距离更近,则把a节点设置为b节点的父节点,并更新b节点的F值和G值。
(5)如遇到以下情况,则路径搜索结束:如果终点已经在Open List中,说明路径搜索以及进行到最后,完成对最后一个节点的搜索,路径规划完成;如果Open List里面没有节点,则说明无路径。
(6)从终点开始,沿着指向父节点的箭头一直到起点,并删除多余的路径节点。
交互界面介绍
手机App的工作状态分为界面层和通信层。界面层用于和用户进行交互,采集用户输入的数据(例如用户所输入的时间、地点等等),并能够显示ROS收到的数据信息。通信层用于建立和关闭socket通信,将用户在界面层输入的数据转换为JSON格式,将从ROS收到的JSON数据解析并传输给界面层(例如智能机器人实况、对比照片等等)。主要设置了四个模块。第一个是登錄与注册,使用我们产品的第一步;第二个是订单详情,用户可以了解自己的订单并查看机器人实况;第三个是物品下单,完成物品运送的各种模式选择并输入时间地点,具体下单流程如图3所示;第四个是问题反馈界面,用户可以输入待解决问题,也可以使用特别功能(卫生维护,查看物品运输前后对比照片);最后一个则是用户界面,可以查看个人信息以及进行退出登录操作。
搭配多功能插口应用在不同场景
应用在机场和火车站等公共运输服务场所,搭载配件如下:
(1)压力传感器:智能机器人箱身底部安装压力传感器检测乘客箱包重量是否超过承重量。
(2)安全扫描:通过在机器人箱内安装扫描和自动检测装置检测乘客是否有携带违禁用品,确保机场安全。
(3)自动报警:智能机器人通过检测人体关键点分析人员行为,确定存在打架斗殴行为时进行报警。同时系统可监测对场景内人群的运动特征变化,并以安全指数的形式进行提示,当安全知识低于阈值时触发报警装置。
应用在医院送药与餐厅送餐等
社区服务场所,搭载配件如下:
(1)信息匹配与人员识别:系统通过一系列语音交互和人机交互确定取货人的身份信息,并且通过与已有信息进行核对,匹配成功后将箱门打开完成取货操作。
(2)可分离、可分隔的特殊箱柜:智能机器人搭载可分离、可分隔的特殊箱柜,对需要运输给不同用户的物品进行分类,以确保可以多次运输。
应用在酒店和办公楼,搭载配件如下:
(1)加入通信模块,在物品到达用户门口时,拨打用户手机号码,告知用户物品送达,到门口取物。
(2)搭配多奥RFID梯控系统,可以实现机器人自主呼叫电梯,实现高层楼宇间智能机器人上下电梯行动。
(3)无线扫描、打印装置,可以实现线上下单,智能机器人自动送达打印文件。
应用在图书馆、库房,搭载配件如下:
(1)搭载RFID智能盘点,实现帮助图书整理、定位。
(2)搭载机械臂,帮助读者轻松索引图书,帮助清点数目、货物,并精准配送。
结束语
本文运用新一代机器人操作系统ROS来开发智能运输机器人,设计了一种简单的基于ROS的智能小车自主建图导航的方法。使用ROS开发移动智能小车具有很高的开放性和扩展性,能进行跨平台开发,可用该系统开发机械臂等;系统集合多种功能完善功能包,使得只需在ROS 框架下编写相关程序和调整相关参数等,就能快速开发出具有相应功能的智能小车,提高了开发效率和减少了软件开发的复杂性。本產品基于搭配多种模块进行开发,得到基础运输机器人,将基础运输机器人搭配不同模块则可以应用到多种场景,实现服务地点一体化建设。
参考文献:
[1]鲍锡桉,孙巧妍,张德军,等.基于ROS和SLAM的全向移动语音机器人设计[J].单片机与嵌入式系统应用,2021,21(10):59-62+67.
[2]盖军雄,雷晓春,江泽涛.基于ROS的阿克曼机器人室内导航实现[J].中国体视学与图像分析,2021,26(03):215-225.
[3]吴欣.ROS下移动机器人激光雷达地图构建与路径规划研究[D].西安理工大学,2021.
[4]温博.基于ROS的室内自主移动机器人系统设计与实现[D].西安建筑科技大学,2021.