基于ROS的楼宇内共享无人配送系统设计与实现
谭韶峰 苏朝文 徐江山
天津工业大学计算机科学与技术学院
0 引言
现在各种办公楼、居民楼等正在向智能化方向发展,人们越来越多业务往来所涉及的物品投递发生在楼宇内。这种场景中,传统方式显然已经无法满足人满需求。本项目基于激 光 SLAM(Simultaneous Localization and Mapping)技术,ROS(Robot Operating System)技术,人工智能技术、物联网技术,参考共享单车的商业模式,提出了一套可以共享使用的楼宇内无人配送系。用户可以通过手机终端轻松控制智能车实现楼宇内定点物品投递,智能车则能够根据传感器感知和智能算法自主寻址到指定服务地点或投递地点。该系统既可以用于物流行业的末端配送,也可以运用于办公区域的自助物品投递以及特殊场景下的无接触配送等。
1 系统概述
整体系统由机器人端软硬件系统和共享服务平台软件系统组成。机器人端软硬件系统实现的功能包括基本运动控制,传感器数据处理采集,环境二维地图构建、即时定位、路径规划与自主导航、物联网通信系统、用户交互等,是整个系统的核心部分。共享服务软件系统分为后台服务系统、后台管理系统、用户端软件系统组成机器人终端通过 NBIoT 网络接入华为云 IoT 平台,与系统服务器建立连接,管理员可以通过系统管理端来对机器人设备进行管理、监控,用户可以通过移动客户端来发起投递任务。系统的总体结构如图 1 所示。
2 机器人端软硬件设计
2.1 机器人端硬件设计
结构框图如图2所示,机器人下位机选用STM32F405开发板,该开发板提供了工作频率为168MHz的ArmCortex-M4内核的性能、多达15个通信接口,可以满足实时的运动控制以及大量传感器数据的采集与处理。下位机系统的主要作用之一是采集电机编码器数据、IMU数据、超声波数据以及激光雷达的数据,并且将这些数据打包发送给上位机系统。此外还具有接收上位机的控制指令,通过PID算法,对电机速度做出调节从而使得机器人按照指令做出相应的移动和控制伺服电机转动开合储物柜。上位机采用Jetsonnano开发版,该开发版搭载ARMv8系CPU以及性能强大的GPU,可以轻松处理各种运算。此外该开发板还搭载了WiFi、蓝牙通信模块以及外接的NB-IoT通信模组,便于机器人与其他物联网设备、云服务器等进行数据传输。Jetsonnano也具有丰富的串行接口和IO口,可以方便地拓展上层组件。本系统中,上位机主要用作地图构建、路径规划、实时避障、用户交互、业务应用以及实现联网通信。机器人模型如图3所示,主要包括运动基座(含下位机硬件系统),电源、上位机硬件系统,带自动门的储物柜,深度摄像机以及激光雷达。
机器人运动底盘采用两轮差速结构,并前后配上两个万向轮,以保证机器人运动的稳定性,模型如图 4 所示。机器人左右两侧是驱动轮,分别由两个电机驱动,而前后是被动轮,采用万向轮。通过调节左右驱动的速度,控制机器人运动:若左右驱动轮的速度相同,则机器人直线运动,若左右两轮速度不同,则机器人做圆周运动。
机器人的运动模型如 5 所示,其中 CENTER 为底盘的几何中心,ICR(Instantaneous Center of Rotation)为瞬时旋转中心,rc 为旋转半径,w 为旋转角速度,dwb 为左右轮中心距离,L、R 为左右轮与地面的接触点,vl、vc、vr 分别为 L 点、CENTER 点以及 R 点的线速度。简单分析可以得出该机器人底盘正运动学模型,如公式(1)所示:
$$\begin{bmatrix}
v_c\\
w\\
\end{bmatrix} = \begin{bmatrix}
\dfrac {v_r+v_l}{2}\\
\dfrac {v_r-v_l}{d_{wb}}\\
\end{bmatrix} = \begin{bmatrix}
\dfrac 12 & \dfrac 12 \\
1/d_{wb}&-1/d_{wb}\\
\end{bmatrix} \begin{bmatrix}
v_r \\
v_l\\
\end{bmatrix} \tag{1}$$
该模型是基于左右驱动轮的速度来计算几何中心点CENTER 的速度。在机器人两个驱动轮上安装编码器便可以计算出两个驱动轮的线速度,再通过公式(1)便可以得到CENTER 的速度,并可以进一步被用于计算机器人的里程计数据,作用于后面的地图构建和定位功能中。
由公式(1)变换可以表示出逆运动学模型,如公式(2)所示:
$$\begin{bmatrix}
v_r\\
v_l\\
\end{bmatrix} = \begin{bmatrix}
v_c + \dfrac {d_{wb}}{2}w\\
v_c – \dfrac {d_{wb}}{2}w\\
\end{bmatrix} = \begin{bmatrix}
1 & \dfrac {d_{wb}}2 \\
1 & -\dfrac {d_{wb}}2 \\
\end{bmatrix} \begin{bmatrix}
v_c \\
w\\
\end{bmatrix} \tag{2}$$
该模型是基于几何中心点 CENTER 的速度分解出左右驱动轮的速度。这里的逆运动学模型用于对上位机下发的机器人移动速度控制数据的解算,并通过 PID 算法进一步控制两个驱动轮的精准转动。
2.2 机器人端软件设计
机器人终端的建图及自主导航功能主要由上位机ROS系统上实现,下位机主要用于采集传感器数据、控制电机的转动。软件系统基于ROS进行开发,在ROS生态中,有着成熟的SLAM应用栈以及Navigation应用栈,在数据融合良好的情况下,能够达到优秀的自动导航效果。图6为配送机器人的软件系统设计,软件分为五大部分,分别是数据采集处理模块,运动控制模块,SLAM模块,Navigation模块,交互模块。
2.2.1 数据采集与处理
机器人对环境数据的采集由下位机来完成。下位机软件根据运动模型将编码器数据转换为里程计数据,包括机器人旋转的角度、在右手笛卡尔坐标系下x方向运动的距离以及y轴运动的距离三个数据,并于通过卡尔曼滤波器的IMU数据进行融合,得到底盘位姿数据。雷达数据通过对坏点过滤后于底盘位姿数据打包经过串口发送给上位机。上位机得到数据后通过ROS的发布订阅机制,将这些数据发布出去,供给其他模块使用。
2.2.2 多传感器融合 SLAM
SLAM算法有许多种类型,常见的有Gmapping、Hector_slam、Karto、Cartographer。经过反复测试,发现在室内环境中Gmapping算法在建图效果以及性能上,是优于其他几种的。Gmapping是ROS开源社区中比较成熟的SLAM算法,能够绘制二维的栅格地图。建图采用里程计和IMU数据,通过扩展卡尔曼滤波得到位姿提交到Gmapping里面,建图的效果优异,而且还可以建立大型地图,对于移动时的加减速考虑的也相对较少,建图效果如图7所示,其中黑色表示该位置占用,白色表示自由空间。
2.2.3 自动导航
机器人的自动导航功能主要通过aROS的Navigation导航框架来实现,其作用简单来讲就是根据输入的传感器信息流和机器人的全局位置,通过路径规划算法,计算得出安全可靠的机器人速度控制指令。在本设计中,机器人的自动导航的实现主要是通过该框架的map_server、move_base、acml以及nav_core。其中map_server是地图服务器,用于保存地图和载入地图,并且可以结合costmap_2d功能模块来生成代价地图,实现机器人的动态避障。move_base实现对整个导航流程的控制,包括对全局、局部路径规划的选择以及在机器人丢失位置时执行恢复操作。nav_core中实现了move_base需要的功能,即全局规划器、局部规划器和行为恢复。本设计中机器人采用两轮差速结构,运动较为灵活,因而规划器采用DWA算法,在能快速规划路径的同时,达到较好的行进效果,路径规划示意图如图8所示,其中红色表示全局路径,绿色表示局部路径。acml是用于导航过程中的定位,是蒙特卡洛定位方法的一种升级版,基于粒子滤波的方法来进行定位的,并使用自适应的KLD方法来更新粒子。
2.2.4 辅助避障
由于导航过程中的动态避障功能依赖于单线激光雷达,其对黑色物体的感知较差,从而导致在导航过程中与动态出现在机器人形式路径上着黑色衣物的行人发生碰撞,此外,在有玻璃的环境下,激光雷达也不能很好的工作,从而使得机器人终端位置的丢失。针对这类问题,该系统在雷达扫描的基础上,增加了三个超声波传感器,扫描小车中轴线左右各 60 度夹角的区域,并且将数据添加到代价地图与雷达数据进行融合,对雷达不能感知到的环境信息进行补充。
2.2.5 自动搭乘梯
对于跨楼层的投递任务,机器人借助电梯来实现楼层切换。目前很多大楼的电梯都配备了物联网通信接口,只需将机器人接入该电梯的通信接口,便可以自动实现对电梯的呼叫以及获取电梯的状态。在机器人导航进入电梯后,会根据目标楼层自动切当前的导航地图,并以进入的位置初始化导航,从而在到达目标楼层时能够无差别地继续执行配送任务。此外,还有另一种通用的方案,即通过计算机视觉技术识别出电梯控制面板以及各功能键的位置,通过机械臂去模拟人的点击动作,并通过相机检测电梯楼层显示面板的状态来判断当前楼层位置。
2.2.6 自动回冲
机器人电量低于阈值时会自动到充电点进行充电。由于该机器人导航部分依赖于里程计,在长时间的运动下会累计误差,从而使得定位产生偏差。自动充电系统采用有线充电,对于机器人触头的位置要求比较高。为此,在导航到充电桩的附近时,还需要辅助定位系统来矫正机器人感知的位置,从而较为精准的接触充电桩,进行充电。这里采用红外引导的方式,在充电桩上成角度安装四个红外发射管,使其覆盖充电桩正前方区域。相应的,在机器人上安装红外接收器,在机器人导航到充电附近后,通过红外信号的位置以及强弱,不断调节自己的位置,直到接触到充电桩开始充电。
3 共享服务软件系统设计
本系统中,共享服务软件系统包括三大部分,即服务器端,管理系统以及客户端APP。应用服务器到机器人终端采用了华为云IoT平台,该平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入。机器人端通过NB-IoT模块接入网络然后通过LWM2M/CoAP协议接入到华为云IoT平台,将IP地址、当前位置、使用状态、电量情况等设备状态信息按周期上传。IoT平台则根据收到的应用服务请求,解析指令下发给机器人端。此外,华为云IoT平台也提供了API,系统的应用服务器通过该API来实现对设备数据采集、命令下发、设备管理等操作。服务器上运行的应用服务程序和管理系统后端采用比较流行的JavaSpring框架开发,采用MongoDB数据库存储用户信息及设备信息,通过Http协议于IoT平台进行数据交互。管理系统具有数据管理、设备部署以及信息监控的功能,方便管理人员对系统的控制。用户App是基于Vue.js开发的,实现简单的用户注册登录界面,发起投递任务以及显示投递任务进行的状态等信息。
4 结论
在当前物联网技术和机器人技术快速发展的大背景下,室内配送无人化可以极大地提高配送效率以及方便用户。本系统机器人能够在室内环境中长期稳定可靠的运行,执行配送任务和自主充电,配合上远程管理系统和用户App,使得该系统能满足多种服务场景,在物流末端配送、一些特殊场合的无接触配送、写字楼文件投递等等可以发挥出很大的作用,助力智慧城市、智慧楼宇的建设。
参考文献
[1] 阮志虎 .两轮差速驱动移动机器人的运动模型与控制研究 [D].重庆大学 ,2015.
[2] 周阳 . 基于多传感器融合的移动机器人 SLAM 算法研究 [D].北京邮电大学 ,2019.
[3] 武玫 . 基于分布式粒子滤波的 SLAM 算法研究 [D]. 北京工业大学 ,2013.
[4] 张文 . 基于多传感器融合的室内机器人自主导航方法研究 [D].中国科学技术大学 ,2017.
[5] 许玉龙 . 基于 ROS 的移动机器人建图导航技术研究 [D]. 哈尔滨工业大学 ,2017.
暂无评论内容