朱将勇,王国庆,卢化龙,梁思瑞,王驰凯
(长安大学 工程机械学院,西安 710064)
随着社会老龄化问题日趋加剧,在服务行业普遍面临着招工难的问题。为了解决劳动力短缺的问题,企业开始引进服务机器人[1],为了实现各种复杂的功能,则对服务机器人控制器有了更高的要求。因此,研究服务机器人控制器具有广泛的市场价值,目前国内外也有许多关于服务机器人控制器方面的研究,机器人理论及其关键技术研究是我国工程领域长期面临的科学挑战[2-4]。文献[5]进行了移动服务机器人基于任务分配模式的集成控制器研究,在一定程度上提高控制器的实时性。文献[6]研究一种基于语音识别控制模式的医用服务机器人,提高机器人语音识别方面的性能。文献[7]采用基于非完全轮式移动机器人的混合控制器,对机器人轨迹在不确定干扰的情况下进行研究。文献[8]设计一种应用在浅水域的水下机器人,通过将各类传感器数据融合作为做控制算法输入,在一定程度上提高机器人的平稳性。文献[9]设计了双轮平衡机器人的控制系统方案,从改进控制算法的角度来优化电机的控制,提高机器人的抗干扰能力。文献[10-11]提出多核异构的控制器,也在一定程度上提高控制器的性能,但很难有效地提取人类控制机器人的规律。
由此可以看出,上述研究更多的只是在某些方面对服务机器人控制器的性能进行改善,但依旧无法满足人们对控制器的高要求,因此,本文提出通用型服务机器人控制器开发平台,从软件和硬件的方面进行综合考虑。目前我们的平台还在试验阶段,平台不仅实现了运动控制功能,而且还使Android移动设备集多媒体UI交互、图像及数据的传输与处理、传感器信号采集等功能为一体;现在的Android移动设备技术成熟,价格较便宜,利用其进行控制器的开发,不仅满足复杂的控制系统要求,而且有效降低开发成本,精简结构设计,节约控制器开发时间,迎合市场需求,可实现广泛推广。
本文研究的服务机器人控制器开发平台主要对服务机器人通用控制器进行整体开发,实现控制器的低成本和易开发。其分为硬件子系统和软件子系统,软件子系统包含了支持服务机器人开发的语言——EngineerC语言,它是一种跨平台图形化开发环境。它也包含人类智慧采集系统HIA,用于快速生成控制归律来实现智能化控制机器人。自主开发的EngineerC语言是以C语言为基础,结合C++/C#的特点,简化语法规定。在跨平台图形化开发环境中实现图形拖拽,并提高编程的易用性,可完成对Android系统、Windowsphone系统和MCU的程序开发。通过用户在服务机器人上放置的各种传感器,人类智慧采集系统HIA可以获得机器人的移动轨迹和各种传感器数据,以此得到运动控制算法,最终获得人类控制机器人的规律。通过Socket通讯,把控制规律传送到交互层控制器中,实现对机器人的控制。硬件子系统是由基于Android的中央调度与交互层控制器和面向服务的多核异构行为层控制器组成。中央调度与交互层控制器主要是负责人机交互。面向服务的行为层控制器,主要是基于自主知识产权的多核异构控制器,采取前后台分工模式,提高控制系统的实时性和稳定性。该平台系统架构如图1所示。
图1 系统整体架构图Fig.1 System overall architecture
为了任务的管理与分配,多核异构控制器采用主从控制模式。主控制器向从控制器发送控制指令,一个从控制器完成特定类型的任务,根据性能不同将任务划分到主控制器、从控制器中,从而使每个控制器控制不同的模块。控制器硬件采取模块化设计,可实现独立调试与多任务同步运行。通过这种方式可以极大地提高控制器的可靠性和实时性。控制器由驱动模块,控制模块,可扩展I/O模块,传感器数据采集模块、电源模块、反馈模块等组成,本文控制器包含较多模块,此处仅以传感器数据采集模块为例说明运动控制过程。如图2所示,主控制器通过SPI把超声波传感器获取数据的指令传给从控制器1,从控制器1发送一个Trig触发信号给超声波传感器,超声波传感器把得到的电信号ECHO返回给从控制器1,从控制器把相应的电信号再发送给主控制器,主控制器就可得到超声波传感器采集到的数据。
图2 超声波传感器获取数据流程Fig.2 Ultrasonic sensor to obtain data flow chart
本文采用常见的HC-SRO4超声波测距模块,其可提供2 cm~400 ccm的非接触式距离感测功能,测距精度可达3 cmm;其与从MCU的连接则根据外接的 4路插针,VCC(直流 5 cV)、GND(实现模块间共地)、信号的输入(Trig)引脚、输出(Echo)引脚,硬件连接原理图如图3所示。Trig引脚与Echo引脚需要与MCU的两个具有定时器功能的引脚相连接,MCU发送的控制信号,经过SN74LVC4245A电压转换芯片,进行电压的拉高,对其Trig管脚输入一个10US以上的高电平,HC-SRO4便可发出超声波脉冲,当检测到回波反馈信号时,其Echo引脚将输出一个持续的高电平,电平宽度为超声波往返时间之和。主MCU根据高电平持续的时间计算与分析得到与障碍物之间的距离,通过SPI通讯将任务发送给相应的从MCU,进而控制机器人的移动,规避障碍物。多核异构控制器实物如图4所示。
图3 超声波传感器部分原理图Fig.3 Partial schematic of ultrasonic sensor
图4 多核异构控制器硬件实物图Fig.4 Physical figure of service-oriented multi-core heterogeneous hardware
中央调度与交互层控制器通过OTG通讯与行为层控制器进行实时数据交互,并通过Android设备进行人机交互。中央调度与交互层控制器分为APP底层与用户端两部分。APP底层由四部分组成,分别是基本功能、中间数据库、系统异常和用户代码异常处理、功能函数库。基本功能部分主要包括对事件的监听和广播的收发等;中间数据库用于存储中间数据,如传感器数据等;系统异常和用户代码异常处理机制,用于异常的处理,避免APP运行出错而造成死机或闪退的现象,能够让用户清晰地看到出错位置和错误的原因,方便用户对代码的修改,保证了APP的正常运行;功能函数库包含用户编程所需要的一些功能函数,如WiFi连接函数、语音识别函数、传感器数据获取函数等。其中传感器数据获取函数尤为重要,现在Android移动设备一般都会内置一些常用传感器,例如加速度传感器、距离传感器、磁场传感器等。通过传感器数据获取函数,我们可以获取很多相关的数据,这些数据在一定程度上降低用户编程难度,提高编程效率。
面向EngineerC的图形化开发环境可用于跨平台的开发,其实现了常用语句的半结构化自然语言编程。在编程环境的主页面中,用户通过图形拖拽可完成工程建立与函数添加,并实现交互式的代码自动生成功能。该系统在编辑过程中,开发环境后台可自动生成可编译的EngineerC语言代码。
在EngineerC图形化开发环境中,图形化语句都来自于系统自带的语句控件图形库。用户可添加自定义的变量和动作,并可调用已重新二次封装的外部动作库。该图形化开发环境可以支持安卓系统编程,也支持ARM系列单片机编程,并形成各自的应用基础库APISDK。其整体架构图如图5所示。
图5 EngineerC图形化开发环境架构图Fig.5 EngineerC graphical development environment architecture diagram
移动端可视化UI开发环境主要针对Android系统和Windowsphone系统的应用开发,可在UI开发环境中对手机应用的界面进行可视化设计,同时在开发环境中生成手机应用的后台代码并打包发送给具体的手机用户,通过专门的应用来完成解析,最后生成对应的手机APP。对于控件及整个应用的后台程序编写是通过EngineerC来完成,应用的后台动作全部由安卓库中的二次开发函数完成。控制器可视化UI设计界面如图6所示,后台代码的自动生成界面如图7所示。
图6 控制器可视化UI设计Fig.6 Visual UI design interface of controller
图7 后台代码的自动生成Fig.7 Generating the background code
人类智慧采集系统HIA由五部分组成:用户控制模块、自定义场景搭建模块、数据采集模块、数据存储与提取模块、数据传输模块。用户控制模块由用户在顶端对虚拟样机模型进行操控。自定义场景搭建模块可让用户自定义铺设机器人行走路面,自定义添加障碍物,如墙壁。其添加障碍物界面如图8所示。
用户在机器人各个位置放置任意数量传感器,数据采集模块通过系统会自动记录任意时间下各个传感器的数值,并且记录用户的操作动作。数据存储与提取模块则将采集模块的数据存入txt文件中,其数据存储如图9所示,这是距离传感器到障碍物的距离数据。
图8 用户自定义障碍添加界面Fig.8 User defined obstacle add interface
图9 采集模块数据存储Fig.9 Data storage of acquisition module
多物料承载移动式服务机器人主要由控制系统、驱动系统、壳体内的主体机构、机械臂、头部五大部分组成。控制系统采取基于多核异构控制器和Android移动设备组成的协同式控制器。运输时将物料存储在机器人内部,根据物料大小不同,控制系统采取不同的运输模式。机器人如图10所示。
图10 多物料承载移动式服务机器人Fig.10 Multi material carrying mobile service robot
经过实验验证,通用服务机器人协同式控制器开发平台可用于机器人控制器的通用开发,实现了运动控制、多传感器数据的获取与处理、多媒体UI交互等功能。本平台利用已有的Android移动设备,降低用户的开发成本和难度,满足市场需求,具备进一步工业化的能力。