移动机器人远程人机交互软件平台设计与实现
2017-05-10黎振胜王恒升
黎振胜,王恒升,2
(1.中南大学 机电工程学院,长沙 410083; 2.高性能复杂制造国家重点实验室,长沙 410083 )
移动机器人远程人机交互软件平台设计与实现
黎振胜1,王恒升1,2
(1.中南大学 机电工程学院,长沙 410083; 2.高性能复杂制造国家重点实验室,长沙 410083 )
基于移动机器人代替人去危险场合执行探测和救援任务的应用背景,设计了一个人机交互的软件平台;采用UML对设计过程进行建模,基于组件对系统进行模块化设计;各组件并行运行,通过消息队列与消息响应的机制实现组件之间的并发式通信;软件平台基于LabVIEW的Actor框架实现,核心Actor组件基于状态机设计,协调其它组件之间的通信;设计了一个远程Actor代理,实现与基于ROS的远程机器人的本地控制系统通信,将人的指令传输给机器人并将机器人的传感信息传回给人机界面;实验系统部署在两台计算机上,一台运行基于LabVIEW的人机界面,另一台运行基于ROS的P3AT控制仿真系统;实验表明,设计的软件平台各部分能够协同工作,人机交互自然顺畅,满足预期要求。
移动机器人;人机交互;UML;LabVIEW;ROS
0 引言
智能移动机器人正在以惊人的关注度走进人类生产生活的各个方面,这已成为学界和工业界的共识。人们对机器人抱有极大的热情和期待,例如期待机器人能够代替人类去危险、有毒、有害的场所实施灾害救援任务,能够进入太空或其它星球完成太空探索任务等等。由于复杂的人类环境和任务要求,目前的科学技术水平距离人们对机器人能够独立完成任务的期待还有很长的路要走。移动机器人应用的可行方式是通过人机交互来实现。
移动机器人与人的交互模型主要有4种。第一种是遥操作或者叫直接控制,即人与机器人为主从关系,机器人实际上是人的工具,人是控制器。这种交互方式的不足在于:1)如果工作人员离岗,机器人就停止工作,即人需要长时间在线;2)由于人控制的精确性和稳定性远远不如机器,机器人的工作能力被人所弱化;3)如果系统延时较大,如发生紧急事故,人不能立即操作机器人解除危险。第二种交互模型为监督控制,即人传递给机器人一个简单具体的指令清单,机器人按照指令清单执行动作,人主要进行机器人监控和流程控制。这种交互模型的不足在于;1)由于机器人及所处环境未知且复杂,机器人指令清单设计困难;2)非结构环境下难以保证机器人动作执行正确。第3种交互模型为全自主控制,人只需传递机器人一个抽象的任务目标,机器人借助人工智能技术自主感知环境,进行任务规划和执行。这是人类的终极期望,目前的技术水平还远不能达到。第4种是人机协作的交互方式,这种方式处在监督控制和全自主控制之间。在这种模式下,人与机器人合作完成工作任务,机器人并不是人类的工具而是伙伴,能够跟人进行沟通,将人类作为外接的智能源。随着机器智能的不断提高,人机协作的最高阶段为对等协作[1]。
以危险场合的救援为背景,提出了一种远程人机交互的系统方案[2],意欲通过人机协作的方式,实现操作人员对处于危险场合的救援机器人的远程控制。系统的结构如图2所示,机器人由基于ROS的嵌入式控制器进行自律控制,通过无线网络接受来自人的控制指令,人机协作的平台软件提供人机交互的接口。本文针对这一方案,设计了一套人机协作的软件平台。该平台具有以下特点:1)提供3种人与机器人交互的接口并可在3种方式下自由切换:自然语言交互接口,手柄遥操作接口和地图导引接口;2)提供与基于ROS的远程机器人自律控制的命令交互及传感信息接口;3)提供其它的智能计算模块接口,如用于上层逻辑推演的计算模块、用于视觉图像识别的计算模块等;4)提供机器人位置的实时地图显示功能;5)基于组件的软件系统设计和基于操作者框架的LabVIEW程序实现;6)各模块组件之间是基于消息传递的并发式运行机制,运行效率高。
图1 人机协作总体方案
1 总体方案
人机协作软件平台的总体设计如图 3所示,系统包含7个并发工作的组件,各个组件独立运行,通过消息机制相互通信。其中协调者为核心组件,负责各组件通信和状态协调;通过人机界面组件对人的指令进行解析,如果需要进行路径规划,则启动路径规划功能,并通过“远程”组件将规划的路径或人的指令发送给机器人;协调者组件还通过“远程”组件接收机器人的传感器信号,将里程信息发送给地图显示组件,显示机器人在地图中的位置,其它信息可以通过人机界面组件显示。
考虑到计算性能问题,每一个组件可以单独部署在一个物理计算机节点上,节点与节点之间通过局域网通信;考虑到每一个组件都可以单独运行,为了避免同步问题,组件间通信机制主要为不带回复的异步通信模式。
2 系统设计
2.1 用例设计
根据图2的软件框架和人机交互的要求,设计如图 3所示的UML用例图。
图3 人机协作平台软件用例图
共有4个核心的用例,分别为“语音协作控制”、“手动协作控制”、“与控制面板交互”和“与机器人通讯”。核心用例的实现依赖其它子用例,根据关注点分离原则,将子用例分为以下5类:感知、交互、配置、计算及协调。这样通过子用例实现核心用例的设计有助于软件模块的扩展和实现[3-4]。
图3中用例之间的关系有3种:包含,扩展和依赖。例如执行“语音协作控制”用例时,1)一定会执行“监测手机”和“语音信息验证”子用例,此为包括关系,使用虚箭头线加<
下面以“语音协作控制”用例为例展示部分用例文档。
用例名:语音协作控制
概述:人在本地输入语音信号,对机器人进行远程控制。
前置条件:平台软件启动完成,机器人初始定位成功。
主序列:
步骤1:人通过控制面板要求进行语音协作控制。
步骤2:人输入语音信号。
步骤3:结合机器人状态数据,对命令进行初步分析,验证命令的合法性。
步骤4:将合法语音命令解释成机器人能够直接执行的指令,在需要的情形(如“去A513”指令)使用全局路径规划;不需要的情形全局路径规划的指令(如“往前走五米”指令)则直接发出指令。
步骤5:将解释好的指令传递给远程机器人。
步骤6:远程机器人对指令进行执行,平台在人机交互界面显示命令执行情况。
2.2 消息通信设计
对图2所示的软件体系结构的七个软件组件之间的消息通信进行设计。每个组件通过暴露消息接口来实现特定功能,宏观上同时接收来自外界(机器人和人)的消息并进行响应。如“地图显示”软件组件根据所收到的机器人状态及环境消息更新地图,“控制面板”软件组件响应人的标准操作,向“协调者”组件发送消息以调整行为。协作平台软件之间的消息接口使用UML组件图表达如图 4所示。
本软件的消息使用不带回复的异步通信机制。按照活动范围,将消息分为两类:内部消息和外部消息。外部消息指的是与外部实体沟通的消息,如人、机器人 、手柄等。内部消息是指内部组件间交换的信息,如经过自然语言处理模块生成的语义信息等。按照功能划分,消息可以分为三类:周期性消息、按需消息和启停消息。周期性消息为设备的轮询消息,如手柄的控制杆数据、机器人实时坐标数据等。按需消息是改变组件行为的事件消息,如控制面板消息、状态改变消息等。启停消息是一种特殊消息,专门用于软件组件的启动和停止。
图4 人机协作平台软件体系结构
为了降低设计复杂性和提高体系结构容错率,组件采用分层设计的集中控制模式。体系结构分三层,由“协调者”组件负责各组件通信和状态协调,各二级控制组件再与下一级组件通信,完成整个系统的行为控制。本系统目前的软件规模不大,二级控制组件只有一个“操作面板”组件。这种控制模式对进一步扩展系统功能具有显著优势[5]。
每一个用例的实现,都是软件组件间交互的结果,组件图给出了各组件之间的高层通信,但并没有给明组件间通信的顺序,下面使用UML顺序图对体系结构的这一特征进行描述。
图 5为“语音协作控制”用例的组件间通信交互顺序图。顺序图由外部参与者和参与到用例中的组件构成,组件间通过消息(在LabVIEW中是一个Message类)进行通信,组件收到消息后的响应用矩形块包裹的文字注释表示,由于组件间通信模式为不带回复的异步通信,所以组件并不回传消息,直接执行响应动作。
图5 “语音协作控制”用例的顺序图
图5的顺序图可解释为:人输入的声音信息经过语音识别模块转化为字符串,传递到“声音”组件;声音组件对其进行自然语义理解,生成语义指令,传递给“操控面板”组件;“操控面板”组件结合用户输入等对语义指令信息进行合法性检查,无误后转发给“协调者”组件;“协调者”组件根据需要协调系统的整体行为,并将消息发送给“路径规划”组件;由该组件生成机器人能直接执行的局部目标消息,经由“协调者”组件转发给“远程机器人代理”组件,最终发送给移动机器人。
以上只是简化的组件通信流程,1)一个消息在组件间的传递往往服务于多个用例,如“路径规划”组件需要机器人当前位置数据,而这一数据在“查看地图”用例中进行采集,由“远程代理”组件从移动机器人处采集,将消息传递给“协调者”组件,再由“协调者”组件对其进行分发;(2)在分布式组件结构下,很多消息都需要周期性发送,如随着机器人的移动,可能需要重新进行路径规划,这就需要“路径规划”组件的周期性工作。
2.3 组件设计
在图4的基于组件的系统结构中,每一个组件作为一个独立运行的个体,其行为根据外界消息或事件而变化。由于篇幅所限,这里仅给出核心组件“协调者”的设计。“协调者”组件同时处理多个输入和输出,如需要同时处理手柄数据指令和运行中的语音指令,需要在适当的时候对一些发生冲突的指令进行取舍,这种基于外部消息反应的动态行为非常适合使用状态图来设计。图 6为 “协调者”组件的状态图。根据当前协作平台软件功能,“协调者”组件内部具有3个状态:就绪(Ready),手动(Manual),导航(Guiding)。协调者对指令的取舍,就通过打开或关闭某一类型消息的接口来实现。在每一个状态下,组件选择开放不同的消息接口,设置不同的消息处理行为。实际上,关闭和开放某个接口就是通过改变对消息的处理来实现的,当对某一消息的处理为空,则该组件对该消息无响应,即可看作该组件关闭了此接口。
图6 “协调者”组件的内部运行逻辑
图7 “协调者”Actor结构
“协调者”组件包含三类消息接口:手柄指令消息接口,语音指令消息接口、配置和状态消息接口。机器人启动后,该组件进入默认的“就绪”状态,该状态意味着关闭对手柄和语音指令消息的处理(该消息由操控面板组件发送而来)。在“就绪”状态,人无法通过手柄和语音控制机器人,可以使用操控面板进行机器人参数配置,可以查看机器人当前状态(这两个功能靠周期性发送机器人传感器消息等来实现)。
人在操控面板上通过按钮可使机器人进入“导航”状态。此时人可以通过语音与机器人进行交互,平台软件识别语音指令后发送给机器人,在机器人执行过程中,组件如果收到机器人返回的错误状态信息或者程序内部错误,则组件返回“就绪”状态。
人也可以对机器人的任务执行进行强制介入(例如机器人无法利用自身智能越过障碍时),使用手柄进行强制操作。使用手柄操作后,操控面板将自动发送一个转换指令,组件进入“手动”状态,此时手动操作机器人。人也可以随时对机器人的任务执行进行恢复,机器人再次进入“导航”状态,继续之前的任务。
3 系统实现
本文用LabVIEW实现了上述人机协作软件平台。鉴于篇幅限制,仅以“协调者”组件为例,介绍面向对象的机器人协作平台软件组件级开发与实现。
软件平台总体上采用LabVIEW Actor Framework框架实现。这是一个基于面向对象的程序模板,实现了Actor编程模型,提供了多进程通信的框架[6]。LabVIEW Actor Framework的类组织见图 7右上部的虚线方框,在这个框架中,所有任务都由某个Actor完成,每个Actor都拥有一个主线程,维护一个自己的消息队列。Actor通过将消息压入其它Actor的队列的方式来传递消息,接收到消息的Actor针对特定消息类型,启动自定义的消息处理函数。Actor之间通过这种方式向外界暴露接口。本系统的软件组件使用Actor来实现正好满足要求的并发工作的设计需求。
根据图 4描述的组件接口, “协调者”组件的内部设计如图 8所示,使用UML类图描述。使用继承的方式对预先提供的程序框架进行扩展,并应用相关设计模式:(1)在Message.lvclass的基础上对每一个消息接收接口设计一个类,并向其他Actor提供压入自身消息队列的方法(如Send Go to Manual.vi)和调用消息处理函数的方法(如Do.vi);(2)在Actor.lvclass的基础上设计StateActor.lvclass和CoordinatorState.lvclass,针对各个消息接收接口设计消息处理函数,并重写Actor Core.vi;(3)使用状态设计模式(State Design Pattern),设计3个状态子类,每个子类执行在这一状态内的消息处理函数,这样就把Actor的功能委托到3个状态域中,降低了设计难度。
4 仿真实验
本文通过控制搭载机器人操作系统ROS的P3AT移动机器人来验证人机协作平台软件的有效性。ROS是当前流行的机器人软件开发中间件,不仅提供了一整套基于xml-rpc的数据通信协议,还提供对各种常用机器人硬件的驱动支持[7]。经过数年的发展,ROS逐渐成熟,能够提供优质的支撑软件,包括机器人仿真器,可视化工具。在实际进行机器人实体控制实验之前,先在ROS上搭建P3AT的仿真环境,在仿真环境下调试系统,可以大大提高系统调试的工作效率;ROS上不仅可以建立P3AT的仿真模型,还能仿真其所带的传感器,如声呐、激光雷达等,这对系统调试后部署到实体机器人上是非常有帮助的。本文将机器人协作平台软件部署在运行LabVIEW软件的Windows计算机上,并搭建了基于ROS的P3AT移动机器人仿真系统,人通过手机进行声音识别与指令输入。
与图 2相对应,搭建的实验系统如图 8所示。ROS系统由包组成,包括自己设计的ROS包zsProxy(负责协作平台软件与ROS之间的消息解析、捆绑与传递)、经过改造后使用的ROS软件包move_base(负责局部避障),和可免费使用的开源包amr-ros-config(提供机器人模型供可视化)、rosaria(P3AT机器人驱动)、rosaria_client(调试组件),使用的支撑软件包括P3AT机器人仿真器MobileSim(模拟机器人本体及传感器)、ROS可视化软件RViz(监测整个实验情况)。ROS实验系统部署在运行Ubuntu 14.04的另一台计算机上人通过如图 9所示的操控面板和机器人交互,当前实现的功能主要有:机器人移动和转动速度配置;机器人初始定位;Actor重启;机器人工作模式切换;机器人电压等传感数据显示;操作日志显示;查看地图和机器人在地图中的位置等。
图9 人机交互界面
具体实验流程为:人启动ROS系统和协作平台程序,输入机器人的初始坐标,将软件切换至导航模式,拿起手机,录入声音,如“往前走一米”,此时机器人会以实时避障的模式到达期望地点,机器人在执行任务过程中,人可以通过手柄更改软件工作模式到手动,此时机器人会停止任务执行,人现在可以用手柄对机器人进行遥操作。
图 14是机器人执行“往右走二米”时RViz的监测情况,机器人起始位置如图 10所示,机器人接收到指令后其move_base包会进行局部路径规划,在RViz中可以看到机器人的当前目标姿态(红色粗实线箭头)和规划出的轨迹(绿色细实线)。需要说明的是,目标姿态的角度值为0,是因为传递的指令没有对机器人姿态进行约束。
图10 机器人的运动响应
5 结论
将移动机器人用于人无法到达的遥远或危险场合,实施探索或救援任务,是人类对机器人的期望。在此背景下,本文设计了一套人与远程机器人交互的软件平台,人与机器人通过此平台进行交互与协作,实现预期的任务要求。本文工作具有以下特点:1)设计过程基于UML对软件及软件模块进行建模,方便方案的讨论与设计文档的形成;2)软件平台是基于组件的模块化设计,便于软件复用、软件维护与功能扩展;3)组件是并行独立工作,通过串行无返回的消息传输机制,实现并发式组件运行模式;4)软件系统基于LabVIEW Actor Framework开发和实现,复杂组件应用了状态设计模式,远程组件基于以太网通信,系统调试方便,开发效率高;5)远程的机器人本地控制基于ROS操作系统实现,在部署到实物机器人前,先建立仿真环境,进行系统调试;由于仿真环境的机器人模型、传感器模型、环境模型均与实际一致,通过仿真测试后,系统可无缝部署到实物机器人上,大大提高了调试效率。本文系统实现的人与机器人的交互方式有自然语言交互、手柄直接操纵、地图目标导引3种模式;实现了与其它智能模块的接口,如语义识别、路径规划等;实现了与远程ROS系统的接口。本文系统在实验室调试通过,仿真环境下机器人的人机交互与运行顺畅,满足设计预期。
[1] Goodrich M A, Schultz A C. Human-robot interaction: a survey[J]. Foundations and Trends in Human-Computer Interaction. 2007, 1(3): 203-275.
[2] Wang H, Ren J, Li X. Natural spoken instructions understanding for rescue robot navigation based on cascaded Conditional Random Fields[A]. IEEE[C]. 2016.
[3] Pfeifer R, Iida F, Bongard J. New robotics: Design principles for intelligent systems[J]. Artificial life, 2005, 11(1-2): 99-120.
[4] Bruyninckx H, Klotzbücher M, Hochgeschwender N, et al. The BRICS component model: a model-based development paradigm for complex robotics software systems[A].Proceedings of the 28th Annual ACM Symposium on Applied Computing[C]. ACM, 2013: 1758-1764.
[5] Gomaa H. Software modeling and design: UML, use cases, patterns, and software architectures[M]. Cambridge University Press, 2011.
[6] Sumathi S, Surekha P. LabVIEW based advanced instrumentation systems[M]. Springer Science & Business Media, 2007.
[7] Brugali D, Shakhimardanov A. Component-based robotic engineering (part ii)[J]. IEEE Robotics & Automation Magazine, 2010, 17(1): 100-112.
Design and Implementation of a Software Platform for Interaction Between Human and Remote Mobile Robots
Li Zhensheng, Wang Hengsheng
(1.College of Mechanical and Electrical Engineering, Central South University, Changsha 410083, China;2.State Key Laboratory for High Performance Complex Manufacturing, Changsha 410083, China)
A software platform for Human Robot Interaction (HRI) is designed and implemented based on the application background of mobile robot for inspection and rescue tasks, replacing human beings in hazardous areas. The design process of the software is modeled with UML and the design is based on modular components; the components work in parallel and communicate concurrently through queued message-response mechanism. The software platform is implemented with LabVIEW Actor Framework, in which the main Actor is designed with state machine in order to coordinate communication among components; a remote proxy Actor is designed to bridge the communication of ROS-based control system of the remote robot with the software platform, that is to send instructions from human to robot and to receive data back from sensors. The experimental system is deployed on two computers: one running the LabVIEW-based HRI software, and the other running the ROS-based simulation software of P3AT control system. Experiments show that the components of the software platform work together properly, and the interaction is natural and smooth between the human operator and the remote robot. The result meets the expectations.
mobile robot;human-robot interaction; UML; LabVIEW; ROS
2016-11-02;
2016-11-29。
国家“973”重点基础研究发展计划(2013CB035504)。
黎振胜(1993-),男,湖南华容人,硕士研究生,主要从事机器人控制系统软件设计方向的研究。
王恒升(1963-),男,陕西合阳人,博士,教授,博士研究生导师,主要从事智能机器人方向的研究。
1671-4598(2017)04-0121-05
10.16526/j.cnki.11-4762/tp.2017.04.034
TP242;TP311
A