时间:2024-07-28
王博玮,陆中成
(华东理工大学信息科学与工程学院,上海 200237)
随着社会的发展,老龄化人口比例不断提升。一方面,老年人在日常活动中需要某些帮助;另一方面,劳动力的减少也使许多行业迫切找到能代替人力的自动化方案。因此,开发、研究服务机器人具有重要的社会意义和广泛的经济价值。近年来,服务型机器人的广泛需求引起研究者的极大关注,包括用于人群引导的服务机器人[1]、能和老年人沟通交流的智能机器人[2]以及家庭服务机器人[3]。在餐饮业,智能服务机器人有着更广泛的需求空间。人力成本的不断上升,促使许多餐厅都寻求服务机器人的替代方案。随着传感器技术、云技术以及人工智能的高速发展,智能餐厅服务机器人已经涌现出许多具有代表性的应用。2016年,新加坡已开发机器人送餐服务,但还需要使用固定轨道以及人类辅助,自动化程度不高。Cheong等[4]提出了基于模块化的餐厅服务机器人设计方法,提高了自动化系统的效率。蔡俊杰等[5]设计了以微控制器MSP430F543为核心的餐厅服务机器人控制系统。然而,截至目前,国内外研发的服务型机器人总体自动化程度不高。此外,本地资源的局限性以及导航算法的弱迁移性,限制了机器人技术的发展。
云技术的发展给智能机器人的研究提供了更多的思路和方法。云技术是指通过网络,弹性、动态地分配相应资源,以支持本地难以完成的作业。这类资源包括计算资源、储存资源以及软件服务。使用云框架搭建机器人系统,扩展了资源的利用度,丰富了本地的功能,也为设计更复杂的机器人系统提供了可能。另外,人工智能的发展也给服务机器人领域带来了更多的驱动力。Mohammadi等[6]使用基于对抗生成式网络(generative adversarial networks,GAN)完成机器人的路径规划任务,其生成的路径达到了89%的平均主观意见分(mean opinion scores,MOS)。Maiettini等[7]提出将快速区域卷积神经网络(region-convolutional neural network,R-CNN)和FALKON结合的方法完成机器人目标识别任务,加快机器人适应环境的过程。显然,为更好地提高服务机器人的智能化程度,结合云和人工智能的优势设计餐厅服务机器人系统是非常有必要的。
图1 系统结构图Fig.1 System structure
机器人群由一组智能送餐机器人构成,负责餐厅的送餐任务。其主要工作过程如下:首先,机器人通过通信模块,将由传感器模块采集到的感知信息上传到云端;接着,由云端计算模型结果并返回;最后,机器人核心板根据返回的动作控制马达,以完成运动。
云端为上层用户,主要由数据库、Web服务器和TensorFlow Serving[8]组成。其采用Linux系统下的Python语言开发,便于系统的移植和功能扩展。云端通过网络接收来自餐厅的实时数据和机器人的感知数据,并据此实现机器人的路径规划,以控制机器人完成送餐作业;同时,通过Web服务对远程用户提供餐厅管理和点餐服务功能。
远程用户又称远程单元,由客户端和管理端构成。客户端通过移动终端完成点餐、评价等功能,数据通过云端返回到餐厅。管理端授权用户可通过浏览器登录系统,分析实时数据或远程操控服务机器人。
为使系统各部分能够协调正常运行,需要选择合适的计算资源和组网方式。由本地处理器实现服务机器人的计算功能,会使得计算能力受到限制,无法完成计算密集型任务[9]。在此,基于TCP/IP的HTTP传输协议,构建以云为中心的统一系统,将计算、储存功能置于云上,使得最小系统能够完成后续的复杂计算任务,解决了同步定位与地图构建(simultaneous localization and mapping,SLAM)、深度Q网络(deep Q-network,DQN)计算复杂性和机器人系统资源有限性之间的矛盾,同时可对外提供Web服务。
机器人的总体设计遵循模块化设计的原则,整机主要由核心控制板、马达及码盘、充电电池、传感器模块和通信芯片构成。送餐机器人以Arduino Mega 2560作为核心控制板。马达用于在核心指令控制下实现机器人的运动。充电电池为其他模块提供电能。红外传感器模块用于机器人对障碍物的识别。Rplidar A1激光雷达用于生成动态地图。ESP8266EX WiFi通信芯片用于实现基于TCP/IP的通信。机器人硬件结构如图2所示。
为了确保作者的合法权益不受侵害,请广大读作者注意辨明真伪,谨防上当受骗。《中国矫形外科杂志》编辑部将依法追究冒充编辑部开设网站、征集稿件、乱收费的相关机构和个人。
图2 硬件结构图Fig.2 Hardware structure
控制板是机器人的核心部分,其实现了对传感器、运动模块以及数据传输的统一调度和控制。选用Arduino Mega 2560作为微控制板。其使用ATmega2560处理器,包含54个数字输入/输出口、16个模拟输入口、4个UARTS、256 kB的闪存。同时,系统还使用功能扩展板。功能扩展板实现了对主控制板接口和功能的扩展。扩展后还包括2个总线扩展接口(即地址总线和数据总线)、1路RS-232串口、1个全功能扩展口和IIS、I2C、SPI、A/D、GPIO、串口2、外部中断等外部接口。
①红外传感器。
机器人配置有一组红外传感器,安装在机器人的前部,选用优创电子科技有限公司生产的TCRT5000型红外避障模块。该模块有一对红外发射和接收装置,具有成本低、稳定性好等优点。
红外传感器的红外发射二极管不断发射红外线,反射的红外线由接收管接收。若反射较少或没有反射,光敏三极管一直处于关断状态,模块的输出端为低电平。当障碍物出现在检测范围内时,红外线被反射且强度足够大,光敏三极管饱和。此时,模块的输出端为高电平,可完成障碍物的识别。核心控制板的模拟口与避障模块的信号口相连,在检测到高电平时,核心板将马达控制数字口电平置低,机器人停止运动。
②Rplidar A1激光雷达。
机器人配置一个Rplidar A1型号激光雷达,安装在机器人的上部。其有效探测距离约为12 m,扫描速度为2 000次/s。运行过程中,激光雷达不断发射激光信号,反射信号由其视觉采集系统接收,经过内置信号处理器计算得到距离值以及夹角,并通过3.3 V电平串口将数据回传至核心板。Rplidar上的连接器有5个引脚,分别是电源、地线、RX、TX以及控制扫描速度的脉冲宽度调制(pulse width modulation,PWM)。其中,PWM要求提供足够的电流以驱动雷达电机。激光雷达在Arduino核心板控制下进行环境扫描,以获得感知信息。系统使用外部电源为Rplidar供电。
机器人使用的ESP8266EX是常用的集成WiFi芯片之一。其在外部电路上集成了标准的数字外围接口、天线开关、功率放大器、低噪声接收放大器以及电源管理模块。同时,该芯片可在主动模式、睡眠模式和深度睡眠模式下工作。仅在需要时将其唤醒,以达到能耗控制的目的。核心板通过串行接口,将激光雷达数据发送至通信模块,由通信模块将编码好的HTTP POST请求通过TCP/IP发送至云端。同时,通信模块接收云端返回的结果,将其解码为串行数据并回传至核心板。
云端主要用于路径规划中的计算任务,同时也为管理者和用户提供Web服务。其主要由TensorFlow Serving、Web服务器和数据库三部分构成。云端逻辑结构如图3所示。
图3 云端逻辑结构图Fig.3 Logical structure on cloud
由图3可知:TensorFlow Serving接收机器人上传的感知数据,并返回深度Q网络的输出以完成导航;Web服务器将数据库中的机器人信息和餐厅交易信息以图形的方式实时显示,同时对TensorFlow Serving进行版本控制;数据库则记录了机器人的参数信息、日志以及交易记录。该设计采用了客户端/服务器的架构,为用户提供Web访问功能。
3.1.1 TensorFlow Serving
TensorFlow Serving是一种用于部署机器学习模型的框架。该框架具有较高的灵活性,提供模型在线迭代、热部署以及更新功能。在此,将训练完成的深度Q网络部署到TensorFlow Serving上,以实现机器人路径规划。TensorFlow Serving使用RESTful API接收外部调用,由机器人以JSON对象形式向云端发送HTTP POST请求,预处理其发送的数据后,由TensorFlow Serving端以JSON对象形式返回深度Q网络的结果。
3.1.2 Web服务器
Web服务器采用基于Laravel框架的服务器,使用PHP语言开发。客户端通过HTTP请求从数据库中读取信息,生成动态PHP页面并返回给客户端。客户端数据通过Web API写入数据库。Web界面包括点餐界面、管理界面以及控制中心。点餐界面为客户提供菜品选择及结账服务;管理界面和控制中心为餐厅运营者提供了可视化的运营状态、数据分析以及对历史数据的查询和导出功能。
3.1.3 数据库
数据库是云端的核心部分,其关系到TensorFlow Serving和Web服务的正常工作以及机器人的正常运行。在此,采用基于MySQL的结构化语言查询数据库系统,数据的读取和写入由统一的应用程序编程接口(application programming interface,API)进行调度。数据库中保存着许多重要的信息,如深度Q网络的版本信息、机器人的位置信息、客户交易信息以及内置地图等。
机器人启动后,初始化各模块并与云端建立TCP/IP连接,在接收到指令后开始送餐。核心算法如下。首先,机器人通过激光雷达采集环境感知信息,并将数据发送到云端;接着,云端使用SLAM算法对感知数据进行地图重建并预处理;最后,云端通过深度Q网络返回机器人下一步动作。循环此过程,直到机器人到达终点。云端控制流程如图4所示。
图4 云端控制流程图Fig.4 Flowchart of cloud control
为使机器人能够准确地将食品送到指定餐桌,需要实现导航和移动定位功能。在环境中如何找出一条合理路线是机器人导航的核心问题。于清晓等提出使用射频识别(ridio frequency identification,RFID)的方式进行导航,但其精度不高且部署复杂[10];也有人提出基于改进遗传算法的导航,但其不适用于餐厅复杂多变的环境[11]。服务机器人使用低成本的激光雷达SLAM算法进行地图重建,并配合DQN[12]完成导航。
使用二维平面栅格对餐厅实际环境建模。实际环境中的障碍物和可移动空间分别用栅格中的1和0代替,给定起点和终点e,算法能够找到一条路径p完成导航。为了简化模型,考虑障碍物的高度、大小以及位置不变,同时考虑机器人可视区域为方形。可视区域通过SLAM地图重建并网格化为二值图像的方式获得。在进行强化学习的过程中,机器人采用一走一停的方式,在上一步执行前进动作(前进、后退、左转、右转)a后,会收到来自环境的奖惩函数,将其作为反馈再进行下一步动作。转移规则如式(1)所示。
(1)
Q(s,a)使用了回放记忆单元,以避免学习过程中的顺序对神经网络的训练造成影响。学习过程包括两个阶段:执行动作和学习。在执行动作阶段,仅记忆并更新所做出的动作;在学习阶段,从记忆中随机选择动作,并以当前Q值和目标值差的平方作为损失函数进行训练。同时,为确保训练能使机器人能到达终点,使用了如式(2)所示的及时奖励。
(2)
式中:pt为t时刻的机器人位置。
神经网络的输入是机器人目前的状态(机器人可视范围的栅格地图),输出为在该状态下四种行为(前进,后退,左转,右转)对应的预测Q值。
网络具体结构如下:第一层卷积层包括16个(3×3)的卷积核,采用SAME的补零方式,步长为1;第二层卷积层包括32个(2×2)的卷积核,步长为1。卷积层后为激活函数层,均选用线性整流函数(rectified linear unit,ReLu)为激活函数;最后一层是节点个数为4、包含60个神经元的全连接层。网络参数使用随机梯度下降(stochastic gradient descent,SGD)进行优化和更新。
本文采用Arduino 1.8.5编译器、MySQL 5.7.17数据库服务器、Python 3.6.4 编译器、Laravel 5.1 Web服务器构架的开发环境和平台。
为测试系统的性能,在仿真环境和实际网络场景下进行路径规划及流程测试。测试环境为实际餐厅环境抽象的正方形栅格地图模型。整体大小为9×9,单个栅栏大小为1×1。在栅格地图上进行餐厅机器人从起点到终点的仿真路径规划。目标是图中的三角形区域,机器人路径用圆形表示,障碍物为黑色填充的栅栏。在学习过程中,为解决探索-利用难题,使用ε-贪心算法进行行为选择:以概率ε随机选择行为并以1-ε选择预测行为。试验过程中,初始ε=1.0,后期ε=0.1。
学习过程如下。首先,获得目前状态(二值化的栅格地图);接着,通过贪心算法选择下一步动作,在获得下一时刻状态的同时得到立即奖赏;最后,根据转移规则更新Q值并更新DQN参数。循环此过程至结束。为了观察机器人在不同复杂度的障碍物设置情况下的完成情况,设置了多种地图。测试结果表明,模型能够通过学习规划出合适的路径,并且在未知地图和较为复杂地图上仍有较好的表现。模型生成的路径规划仿真如图5所示。
图5 路径规划仿真示意图Fig.5 Path planning simulation
同时,系统基于云的智能餐厅服务系统,网络的随机性时延对系统各部分均有一定的影响。选择往返时延(round-trip time,RTT)值作为系统实时控制性能的指标。其计算从云端发送到机器人端,再由机器人端返回云端的时间。云端在发出指令前记录本地时间,收到机器人端确认时再次记录本地时间,两者作差得到整个系统的RRT。80次平均RRT时间为89 ms,最大为170 ms,满足系统的实时性要求。
将云计算与深度强化学习相结合,设计基于云的餐厅服务机器人系统。通过训练深度强化学习模型,机器人能够在未知环境中选择合适的路径自主完成下一步动作,并完成送餐任务。通过构建基于云的Web服务器、数据库和TensorFlow Serving,管理端可以实时监控机器人的运行状态并且进行远程操控。仿真试验表明,机器人能够在模环境中自主完成送餐任务,为进一步完善和开发机器人技术奠定基础。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!