APP下载

基于MQTT的机器人集群控制系统设计与实现

2021-06-30张开宇高国伟毛浩龙

计算机测量与控制 2021年6期
关键词:伺服电机舵机上位

张开宇,高国伟,2,毛浩龙

(1.北京信息科技大学 传感器重点实验室,北京 100101;2.北京信息科技大学 现代测控技术教育部重点实验室,北京 100192;3.北京信息科技大学 自动化学院,北京 100096)

0 引言

随着机器人技术的发展,机器人在越来越多的领域中发挥着重要作用[1-2]。单独的机器人工作能力有限,而复合功能机器人价格高昂,制造和维护成本都高于数个功能单一的机器人[3]。在军事方面,机器人群体可以轻松地完成多方位侦查,排雷,打击目标等复杂任务,在工业方面,可以完成焊接、组装、车床冲压等,在民用方面如智能喷洒,智能除草等方面[4-5]。

机器人集群控制是为了使多个机器人统一由单独的控制系统来进行控制,从而形成高度协调的控制系统,从而可以使机器人集群高效协调工作完成单个机器人无法胜任的复杂工作。针对自主机器人群体的控制方式主要有:领航员-跟随法[6-7]、基于行为法[8]、虚拟结构法[9]以及近年来学者提出的距离测量法[10]等。这些方法适用性较低,无法在现场灵活地改变动作,或者在编程的时候无法直观地看到机器人的动作而导致编程困难,调试繁琐。通过改进的领航跟随型迭代学习法[11]等算法可实现机器人的接收自适应动作指令,但这些方法对机器人的硬件要求很高,形成机器人编队时成本昂贵。

在进行多个自主机器人编队算法设计时需要考虑如何通过简单的相互作用,使控制大量的机器人等诸多问题。

该系统采用MQTT协议通信,记忆储存模块储存动作代码,使得机器人可以实时地同上位机相互传输信号,操作人员可以及时地做出更改指令,纠正错误,规范动作,切换和终止任务等操作,有效的解决了无法及时纠正错误动作,更改提前编写的动作程序等问题。可以完成信息共享,直接消除了机器人个体之间的动作冲突,形成了由统一控制中心进行的多个机器人协调工作的控制系统,是实现多个机器人协调工作的有效技术途径。并且因为具有储存模块,即使与上位机断开链接,也可以根据提前编好的指令进行运转。通过对三台机器人的控制测试,该系统满足对机器人编队控制的要求,成本低廉,对机器人硬件要求不高,易于广泛推广。

1 系统架构

1.1 MQTT协议

IBM公司于1988年发布MQTT协议,将其构建在TCP/IP上,,它主要面向通信资源受限且通信任务比较轻的局域网中[12]。因为MQTT带宽极低、成本低廉、易于实现所以经常被使用在寒旱地区以及野外进行环境监测。采用四足机器人对该系统进行测试,其每个机器人具有12个灵活度,控制难度超过一般的轮式或者履带式机器人。但是,其具有优秀的适应能力,可以实现翻越障碍物,进行跳跃,上阶梯等动作。动力强,稳定性良好等特性使得其具有十分高的研究价值。因此选择对四足机器人进行控制既可以检验该控制方案是否具有可行性,也可以检测其在实际应用中是否具有较高的使用价值。

1.2 MQTT通信

MQTT传输的消息分为:主题(topic)和负载(payload)两个部分,topic部分包含消息名,payload是实际要传输的内容。因为每个消息都会有一个主题,所以MQTT可以根据主题来区分消息来发送到哪个客户端。同时MQTT具有以下特点:

1)使用的发布/订阅消息模式后,MQTT提供多消息分发实现与应用程序解耦。

2)具有对负载信息屏蔽的消息传输机制。

3)可以设置消息服务质量等级(QoS):当QoS=0时,无论接受方是否接受到了消息,最多发送一次消息;当QoS=1时,为了确保消息确实到达,至少发送一次。当QoS=2时,消息发送一次,是最高等级,不允许消息丢失。

1.3 系统软件设计

系统由三部分组成:机器人终端,服务器,人机交互平台。其中服务器和人机交互平台可以在同一PC端实现。在机器人连接到服务器后,人机交互平台即可发送各项参数和信息给机器人,同时机器人可以反馈运动信息给平台。

为了检测该操作系统对软件以及上位机的硬件配置要求,实验选择了笔记本电脑,其配置为酷睿处理器i5-4200U(1.6~2.6 GHz),4 G内存,GT750M显卡。机器人选择了具有12个灵活度的四足机器人,其核心为ESP8266控制模块,内部集成了WiFi模块可连接到控制路由器上,在局域网内形成多个机器人信息交互网络。该系统开发采用目前流行的开源软件Arduino作Windows端开发IDE,其上位机通过LinuxQt或Android与操作员进行交互,并且显示各个机器人的状态信息。通过上位广播对各个机器人进行控制,各个机器人收到上位机的网络控制动作命令后,依次有序的执行并汇报,从而使得机器人之间协调有序的进行动作,实现机器人之间的合作完成任务。机器人采用了舵机控制模块,AD采样模块,稳压模块等。通过IIC总线通信和控制12个伺服电机实现动作。整个软件设计如图2所示。

图1 MQTT控制系统发布订阅模式

图2 软件设计框图

在无线局域网情况下,Wireshark的使用让该控制系统可以在Linux环境中抓取控制中心与外界通讯时的IEEE 802.11的抓包文件(即Pcap),筛选并获取MQTT协议的数据包。获取MQTT协议的数据包后开始进行串口调试,在串口调试完可以进行对MQTT协议的数据包的解读,串口调试见图3。

图3 串口调试

如果机器人运行过程发生异常,异常信息就会通过集成MQTT客户端发送到服务器上,人机交互平台就可以接收到异常信息,从而实施相应的对策。

1.4 人机交互平台

操作员可以通过PC端或者手机应用客户端实现随时随地地检测机器人运动状态,手机客户端(远程客户端)以“推拉”的方式接收消息,定期地向服务器询问是否有消息发出称为“拉”,服务器主动向远程客户端发送消息称为“推”。该系统考虑到手机的待机时长,采用推的方式将信息发送给客户端。

在Android客户端设计中,将MQTT集成到ServicePush模块中,连接到服务器以后便可以订阅相关主题。当有主题推送时,Android客户端便可以直接查看在线机器人的运作状态。

2 基于MQTT的机器人集群控制系统的四足机器人

四足爬行机器人是仿生机器人,其结构如蜘蛛。四足爬行机器人根据蜘蛛的生理结构,运动方式和动作行为原理设计出来,在实际中具有很强的工作能力和市场前景[13-17]。实验使用了具有12个自由度的四足仿蜘蛛机器人,其12个自由度的控制对该控制系统具有一定的考验。并且该系统是基于机器人集群控制,各种集群控制的算法可以自由选择、自行切换,方便高效。

2.1 机器人设计

四足机器人硬件电路采用主控芯片,舵机控制模块,显示模块等其部分组成。

2.1.1 主控芯片

如图4所示,主控芯片采用了ESP8266芯片,其工作温度在-20~80 ℃之间,适应各种场合,并且内置射频模块,2.5 GHz的接收发射器。其自带WIFI射频,802.11 b和802.11 g的基带。内置了TCP/IP协议等使得与上位机连接是不在依靠有线传输。

图4 主控MCU最小系统电路

2.1.2 舵机控制模块

舵机控制模块使用PCA9685将数字信号转换为伺服电机可以识别多的PWM控制信号,其电路如图5所示。使用IIC与ESP8266进行通信从而达到控制伺服电机的目的。PCA9685本身自带四个IIC地址,每个IIC最多支持四路PWM信号的输出,并且各路信号均为12位分辨率。该舵机控制模块可实现自上电复位和软件复位的功能,不必设计手动复位电路。

图5 舵机控制电路

2.1.3 显示模块

如图6所示,四足机器人采用1.3寸的OLED液晶显示,128×64点阵满足调试需求,在室内和阳光下都可以看见。在调试完程序以后,考虑到机器人功耗问题,在正常运行时将关闭OLED。

图6 OLED电路

2.2 终端与上位机连接

机器人打开电源后会直接进入调试模式,ESP8266通过集成的WIFI开始搜索服务器终端并连接,MQTT中间件便开始发送报文,报文中包括连接件的用户名(ssid)和密码(password),ssid和password正确便可以开始进行匹配。在控制中心和机器人匹配成功后,控制系统便可以直接控制机器人,匹配调试过程见图7。

图7 匹配调试图

图7中ssid是连接的WIFI名称,password是密码文件,host是tcpServer服务器的IP地址,同时也是手机在路由器上的IP。tcpPort是监控端地址。

如果机器人在运行过程中发生异常状况如:停机或动作模式不正确等,这些异常数据会通过集成的MQTT终端发送到上位机中,操作人员便可以根据情况做出处理。同时,MQTT终端会时时地将机器人的12个舵机的运动位置发送到上位机中,当舵机的运动位置长时间不更新时便可以根据是否有连接中断信息通知来判断机器人死机或者掉线。

2.3 机器人运动模型

四足机器人爬行分解如图8所示,在该系统控制下,机器人爬行时以左前腿右后腿同时向前,并且左前腿和右后腿的膝关节微微抬起,到达指定位置后左前腿右后腿的漆关节落下支撑机器人躯体,右前腿和左后腿重复左前腿右后腿动作,完成一次前进动作。

图8 四足机器人爬行示意图

a.髋关节;b.膝关节;c.足关节。图9 四足爬行机器人侧面

机器人左前腿和右前腿的驱动函数如图10所示,其运动相位差半个运动周期,表示了这两只前腿是模仿四足动物的两条前腿进行交替运动的。

图10 左前腿和右前腿的驱动函数图

该控制系统相比于其他设计系统具有以下的优点:

1)具有可以使机器人动作复现功能。使用动作复现功能完全避开了传统边调整参数边进行动作演示的编程方法,人机交互更加容易,编程更加简单。

2)成本低廉。在实验中,只使用了配置很低的笔记本电脑,便可以完全控制3台机器人,并且实现了控制系统的全部功能,相比与其他昂贵的控制中心,该系统具有很高的性价比。

3)丰富的功能。该系统可以将一台已经设置好动作的机器人的代码同时发送到所有相同型号的机器人终端,并且可以运行各种机器人集群控制算法,在多个器人同时工作时可以针对某个机器人进行动作纠正,更改动作模式等操作。

4)该系统可在各种终端上运行。该系统可以在Linux,Windows以及具有无线传输功能的平板电脑上运行。

3 系统检测与仿真

实验采用四足爬行机器人作为控制对象,四足爬行机器人可以完成较为复杂的动作,成本相对六足机器人和仿人机器人低廉,并且设计上比较简单。

3.1 机器人动作复现

将具有12个伺服电机的四足机器人的四肢摆放成特定的动作形态,此时的伺服电机的角度如图11所示。激活机器人后,上位机同时对所有连接到服务器的机器人进行运动指令传输,分配任务。机器人接收到上位机的运动控制指令后,按序列汇报并执行动作指令。上位机进入程序端后,开始创建udpsocket文件来实现对用户IP地址,监听地址以及本地端口进行判断。

图11 运动控制应用界面

运动控制中,可以记录每个伺服电机的时时的角度位置,在恢复初始状态后进行运动播放使得每个伺服电机按照时间记录的角度进行动作重复,及实现了人“手把手教”,操作一次后机器人便可以模仿。

实验中使用了三个相同的四足爬行机器人来进行机器人集群控制实验。给三个机器人设置了电位脉冲,当机器人在工作状态时给控制终端发送的是高电位,当停止工作时发送低电位。实验使得三台机器人同时接受指令工作,并且在2.5秒时给第三台机器人发送停止工作的信号,得到的电位脉冲如图12所示。

图12 机器人运作和停止脉冲图

由图12可知,当在2.5 s发送停止工作信号给三号机器人时,三号机器人立即停止工作,在5.3 s时给与工作信号后立刻启动开始继续工作。

经过实验检测,该系统可以满足远程控制的需求,并且对在线机器人动作指令运行错误时可以及时关停机器人。

4 结束语

针对机器人集群控制存在的动作编程繁琐,单个机器人成本较高,协同工作时不易对单个机器人进行控制的问题,提出了一种新颖的集中控制技术,其优势是将单个机器人需要计算的路径,动作全部集中到控制中心去计算,在后期升级中也只需对控制中心进行升级,成本低廉,控制方便。在实验中可以同时对3个机器人进行控制,并且可以在数个机器人同时工作时对单个机器人进行精确地控制。设计的用户界面,也可以更好地实现人机互动。此外该系统的还可以使机器人复现动作,这将大大降低对机器人动作编程的难度,对具有更加复杂结构的机器人动作编程具有巨大的优势,并且为机器人动作编程提供了新的思路。

猜你喜欢

伺服电机舵机上位
人形辅助锻炼 助力机器人
一场史无前例的乐队真人秀
基于S7—200SmartPLC伺服电机位置控制系统的应用
可编程自助取物机械臂
海太克HS—1100WP数字舵机
超音速舵机保护器
基础油“上位”
菜鸟看模型
舵机的应用
基于VC的PLC数据采集管理系统