孙楠钱 程王颖 柴文君 李淑敬
摘 要:文章针对服务机器人遥控软件难以跨平台的问题,设计和开发了一种基于B/S架构的远程操控系统。针对通信协议的差异导致通信障碍问题,文章引入网关程序进行协议转换,从而实现网页前端与机载程序之间的通信,并将网页前端的部分业务逻辑交由网关程序实现,使得操控性能得以优化。测试结果表明:该方案实现了PC端和手机端用网页对服务机器人进行可视化操控,基于B/S的远程操控系统对于其他机器人相关程序的设计和开发具有重要的借鉴意义。
关键词:远程操控;服务型机器人;浏览器和服务器架构
随着计算机科学、人工智能和智能感知等技术的迅速发展,服务型机器人不再局限于实验室,而不断地出现在企业中、社会中和家庭生活的方方面面,为人类的工作和生活提供了更为全面和便捷的服务[1],比如餐厅中会按照设定好的路线行走的送餐[2]机器人[3],在疾病监测、辅助康复等领域有重要辅助作用的智能助老服务机器人[4]等。
1 系统介绍
本系统计划通过浏览器和服务器(Browser/Server,B/S)架构实现了利用网页对服务型机器人的远程控制。首先,用户在网页前端通过点击按钮向网关程序发送控制命令;其次,网关程序接收并处理控制命令,同时发送给网页前端一个回令,并且对机器人服务程序发送控制指令;最后,机器人服务程序接收控制指令后调用底层驱动应用程序编程接口(Application Programming Interface,API)来驱动机器人做出相应动作。以此完成网页对服务型机器人的远程控制。
2 对服务型机器人进行方案选择
2.1 基于C/S架构的命令控制方案
首先,用户利用网络调试程序与机器人机载程序建立网络连接;其次,通过其发送命令给机器人机载程序。机器人机载程序对接收到的命令进行解析、执行,并做出一系列的动作。这种方法可以不需要单独开发客户端软件,但是对于无基础的用户而言操作较难,不便于用户的使用和市场的推广,所以本系统不采用此方案。
2.2 基于C/S架构的图形界面控制方案
用户使用图形化的客户端软件,通过点击界面上的操控按钮对服务型机器人进行操控。这种面向大众用户的图形界面程序简单、易用,更加有利于无基础用户的操作,但是由于软件在不同设备、不同操作系统下不兼容,导致客户端软件对运行平台有一定限制。若想解除这种限制,就要为每个平台单独开发客户端软件,导致开发难度增加,所以本系统不采用此方案。
2.3 基于B/S架构的网页控制方案
用户通过网页浏览器打开前端网页,点击网页中的控制按钮,前端就会发送命令给机器人机载程序,进而控制机器人做出相应动作。这种方案既易于操作,又没有运行平台的限制,PC端和移动端都能使用。所以本系统采用此方案进行开发设计。
3 服务型机器人整体介绍
3.1 服务型机器人实验平台
3.1.1 启明1服务机器人
启明1服务机器人是一款面向服务型应用的机器人平台,其从上到下分别是Kinect立体相机、可以升降的脊柱、二自由度的机械臂和一个机械爪、UST-20LX激光雷达、3个万向轮组成的移动底盘。
3.1.2 机器人软件平台
机器人实验平台的框架如图1(a)所示。机器人内部有一个Windows8操作系統的电脑作为机器人软件的运行环境,名为WPRobotServer.exe的机器人服务程序是用来控制机器人的1个开源程序,可以调用机器人底层驱动API。控制电路能够接收并解析主控电脑发来的指令,并控制硬件进行各种动作。
3.2 对服务型机器人远程界面化操控功能的分析
本文对实现服务型机器人远程界面化操控分为浏览器和机载电脑两大部分。其中,机载电脑软件部分由网关程序和机器人服务程序两大部分组成,用于解析命令传达控制指令,如图1(b)所示。具体流程如下:
(1)在浏览器的网页前端界面中点击操作按钮,会通过WebSocket协议向机载电脑的网关程序发送控制命令。
(2)网关程序接收到控制命令后,会通过WebSocket协议向网页前端发送回令。
(3)网关程序会解析控制命令,然后将解析后的控制指令通过用户数据报协议(User Datagram Protocol,UDP)发送给机器人服务程序,同时机器人服务程序实时向网关程序发送机器人状态信息。
(4)机器人服务程序实现对服务型机器人远程界面化的操控。
(a)机器人的软硬件框架
(b)服务型机器人远程界面化操控流程
3.3 服务型机器人中Web浏览器的界面设计
本系统对服务型机器人远程操控界面的设置,采用HTML+CSS+JS搭建一个网页,其网页操控界面如图2所示。服务型机器人操作按钮放在相关的位置,点击操控按钮来控制机器人,当点击Web服务端命令按钮时,会将网页前端程序以用户控制信息形式发送给网关程序,再由网关程序将确认接收到以用户控制信息的状态发送给Web前端,最后由网页前端在文本框中显示。
3.4 网关程序对用户控制信息的处理
3.4.1 对用户控制信息进行解析
网关程序接收到网页前端发送的命令,按照图3机器人控制命令格式匹配表,将用户控制命令按空格拆分,拆分出的第一个单词为命令,其余的单词即为参数,按参数个数分为无参数命令、单参数命令、双参数和多参数命令。无参数命令与无参数命令表匹配,单参数命令与单参数命令表匹配,双参数命令和多参数命令同理。如果匹配成功,则解析成功,相反则解析失败。
3.4.2 执行解析后的命令
将命令和参数如表1—2所示,封装成指令通过UDP协议发送给机器人服务程序。同时,网关程序会将命令执行情况汇报给Web前端。
3.5 机器人服务程序识别控制指令
机器人服务程序接收到网关程序发送而来的指令,然后按照表1—2中的指令格式,对数据报进行处理:首先,根据用户数据报信息,对机器人服务程序指令进行解析;其次,根据解析结果调用机器人底层驱动来控制机器人实现相应动作。
3.6 对服务型机器人远程界面化操控功能的测试测试人员对项目进行功能测试,时序如图4所示。
3.6.1 点击“前进”按钮
(1)测试人员通过电脑PC端打开网页前端后,再点击“前进”命令按钮。
(2)网页前端会将控制命令以用户控制信息({“notice”:“go forward 500”})通过WebSocket协议发送给网关程序。
(3)当网关程序接收到用户控制信息时,会通过WebSocket协议发送给网页前端一个回令({“respond”:“直走 500”})到网页前端显示,同时,网关程序会对控制指令按照机器人服务程序指令格式进行封装,封装后的控制指令(0x55aa000703000001f40000fe00)通过UDP协议发送给机器人服务程序。
(4)机器人服务程序通过调用底层驱动API来控制机器人向前前进500个单位距离。
3.6.2 点击“停止”按钮
(1)测试人员通过电脑PC端打开网页前端后,再点击“停止”命令按钮。
(2)网页前端会将控制命令以用户控制信息({“notice”:“stop”})通过WebSocket协议发送给网关程序。
(3)当网关程序接收到用户控制信息时,会通过WebSocket协议发送给网页前端一个回令 ({“stop”:“停止了”})到网页前端显示。同时,网关程序会对控制命令按照机器人服务程序指令格式进行封装,封装后的控制指令(0x55aa0007030000000000000900)通过UDP协议发送给机器人服务程序。
(4)机器人服务程序调用底层驱动API来控制机器人,机器人正在进行的所有动作将停止运动。
至此,以go forward 500和stop控制命令为例的来测试服务型机器人远程界面化操控成功实现。
4 结语
本系统通过B/S架构实现网页对服务型机器人的远程界面化控制,用户通过点击界面的控制按钮向网关程序发送控制命令。网关程序接收并处理控制信息,对机器人服务程序发送控制指令,并且同时向Web浏览器端发送一个回令。机器人服务程序接收控制指令,调用底层驱动API来控制机器人,驱动机器人做出相应动作。利用网页对服务型机器人运动底盘模块、机械臂模块、语音模块进行相关操控,从而控制机器人实现移动、语音、站立以及播放音乐等应用功能。
本系统的创新性在于将基于统一局域网内客户端操控转变为基于网页端操控,使得原本只能在某一平台上才能对服务型机器人进行操控转换为可在多个操作系统上对服务型机器人进行操控,既保留了程序客户端的远程操控界面可视化,又减少了程序对其所搭载的平台的依赖性,节约了跨平台开发的成本。
[参考文献]
[1]于海旭.服务机器人的发展动态与趋势分析[J].机械设计与制造工程,2016(5):68-70.
[2]李泽琛,石付才.基于STC89C52单片机的智能送餐机器人设计与实现[J].电子技术与工程,2016(18):264.
[3]天津商业大学.循迹送餐机器人,中国:201510296464.6[P].2015.
[4]金開军,尚厚玉.人工智能技术在助老服务机器人中的应用研究[J].山东工业技术,2019(19):140.