基于MQTT的远程人机接口

2026-05-22 18:34:4357 阅读量

用于动作识别的深度学习技术通过物联网通信实现远程控制的人机接口

摘要

尽管机器人系统近年来取得了诸多进步,使其自主性不断提高,但仍有许多任务需要人类操作员持续控制机器人的行为。主要问题在于,许多接口要求操作员执行特定且固定的控制动作,这限制了他们的移动性,甚至在极端情况下危及生命安全。一些研究已提出使用计算机视觉技术来解决这一问题,从而无需操作员操控特定设备或处于特定位置来控制机器人。然而,由于设备之间的连接类型,该方法并未消除操作员必须亲临现场的需求,限制了连接仅能在同一网络内进行。本文旨在利用MQTT协议构建一种物联网通信结构,实现运行ROS的不同网络上的处理设备之间的通信。该策略前景良好,消除了使用ROS的处理设备必须位于同一网络才能以与本地连接相同效率进行通信的需求。这种实现方式在可用性方面具有多项优势,例如操作员的安全性和便利性,使其能够从任意机器远程执行任务;设备的安全性,因为高负载的处理设备可以与在操作中面临风险的机器人分离;物流方面的便利性,只需将机器人运输至任务现场,而操作员和处理设备可位于其他位置,从而实现最低维护成本,因为唯一持续处于危险中的机器和设备仅为机器人。

相关服务:巴西VPS服务器

关键词

物联网, MQTT, ROS, OpenPose, 远程操作的, 人机接口

一、引言

机器人是能够执行重复性任务的设备,从而避免人们亲自完成这些任务。这类设备的一个例子是机械臂,广泛应用于工厂和汽车装配线中。移动机器人是另一类能够在环境中移动并执行不同类型任务的设备,例如货物运输、检查、物体操作等[1],[2],[3]。

移动机器人可以自主地、半自主地或通过远程操作执行任务。其中一些任务是在复杂环境中以复杂的方式进行的,目前仍有一些任务是移动机器人无法自主完成的,例如拆除炸弹或外科手术。在这些任务中,机器人作为工具被专业操作员远程控制。遥操作机器人经常被用于救援任务,如今甚至应用于与新冠疫情相关的任务[4],[5]。其他遥操作的应用实例包括可能危及人类生命安全的任务,或探索人类难以到达的场所[6],[7]。

因此,需要一种新的远程控制机器人的方式。为了实现这种远程控制,已经开发了许多技术,某些操作形式可能需要特定的设备,甚至由操作员携带/佩戴[8],[9]。在最近的方法中,计算机视觉技术取代了远程控制器,减少了操作员对特定和固定设备的需求,使操作员可以自由移动,甚至在危险情况下迅速逃离现场[10]。

这些技术的问题在于,所有设备都必须连接到同一个物理网络(通过电缆或Wi-Fi),以确保控制计算机(运行计算机视觉算法的设备)与机器人之间的通信快速且正常运行。这使得操作的物流变得稍微复杂,要求所有设备位于同一位置/网络中。同时,由于所有人都需要在操作现场,操作员和设备的安全也面临风险。

为了解决所有组件必须连接到同一网络的问题,本研究提出使用物联网(IoT)技术来实现操作员与机器人之间的通信。为了让操作员能够从世界任何地点进行控制——这是使用物联网的优势之一,识别手部动作的图像处理在服务器上执行。这样,操作员将图像发送到服务器,服务器对其进行处理并将其转换为指令,然后发送给机器人。因此,这三个组件中的每一个都可以连接到不同的网络,但仍能实现通信,使其非常适合操作员不希望/不需要与机器人处于同一环境的场景。

在本工作中,我们使用DigitalOcean服务器[11],因为作为使用GitHub教育包[12]的学生,每年可以在DigitalOcean获得50美元优惠券。用于通信的物联网协议是MQTT[13],[14]。MQTT是一种轻量级通信协议,通过TCP/IP网络运行。MQTT使用一个“代理”,负责在发送和接收信息的节点之间进行通信。在本工作中,使用了Mosquitto代理[15]。移动机器人远程控制包被用于通过RGB摄像头捕获并由深度学习技术[10]识别的手势来验证此项工作,并适配了物联网通信。

A. 本文概述

本文组织如下:在第二节中,详细介绍了提出的方法。在第三节中,展示了所进行的实验。最后,第四节总结了结论并讨论了可能的未来工作。

II. 提出的方法

本文提出了一种用于移动机器人远程控制的物联网通信接口。待远程控制的机器人将通过物联网通信与控制端连接,并采用MQTT协议。机器人与控制端之间的所有通信均由机器人操作系统(ROS)[16]和mosquitto代理[15]进行管理。该代理将在DigitalOcean的云服务器上创建,使得操作员、处理设备和机器人无需处于同一网络中。控制端利用操作员端摄像头获取的RGB图像,识别操作员手指的运动,并将其转换为机器人的动作指令。机器人接收来自控制端的指令,并执行角运动和线性运动。因此,系统可划分为三个通过MQTT相互通信的ROS工作节点。该策略的概览如图1所示。

示意图0

A. 操作员

第一个ROS网络负责从操作员的RGB摄像头收集数据,在该层中没有进行大量处理。摄像头数据由ros包“usb_cam”解释,并将其数据发布到ROS主题中。这些数据一旦发布,就会被创建的算法读取,该算法使用Python中的OpenCV cv2库对该图像进行处理,并将其转换为数据字符串,以便能够通过MQTT主题发送。

机器人的视觉RGB图像也会被接收,并执行相反的过程。来自机器人摄像头的数据通过MQTT主题传输,这些数据被解释并从MQTT主题转换为图像,该转换同样使用cv2库完成。随后,图像被绘制在操作员的屏幕上,使得机器人即使在远距离位置也能更方便地被操控。

示意图1

该网络的结构在图3中可以更详细地看到。我们发现使用这种结构的一个优点是,任何安装了ROS、RGB摄像头并具有互联网访问功能的机器,即使处理能力较低,也可以用于这种通信。

示意图2

捕获的操作员摄像头数据由服务器网络接收,负责图像处理和应用控制逻辑的应用,可生成用于机器人运动的线性和角值。

B. 服务器

在此策略部分,服务器执行所有繁重的处理和逻辑应用,需要具备更高计算能力的机器。例如,它可以是公司内部的服务器,通过互联网接入,以便通过物联网与其他机器通信。该结构设计的目的在于避免将高处理能力的机器(可能成本更高)置于操作员手中或机器人内部,因为在上述两种情况下都可能面临造成损坏的风险。

摄像头数据随后通过MQTT主题以字符串格式接收,并使用OpenCV库将其转换为图像,然后由创建的算法发布到ROS主题。该主题将被另一个负责应用逻辑的算法使用。该算法使用OpenPose对操作员图像应用计算机视觉技术,这是生成机器人运动所需线速度和角速度的控制逻辑的关键。这些类别被发布到一个ROS主题,再转换为MQTT主题,使机器人能够访问数据并执行期望的动作。此结构可在图4中清晰看到。

示意图3

OpenPose用于识别人类操作员手部的数据。如先前的研究[10]所示,OpenPose使用计算机视觉技术,能够从RGB图像中提取人体和手部等数据,如图5所示。

示意图4

使用OpenPose,可以识别出双手的21个不同点,如图6所示。这些数据通过ROS主题发送到策略系统,该系统利用这些点为机器人施加线速度和角速度。本文所采用的策略受一篇文章[10]的启发。

该策略是使用左手发送线速度,右手发送角速度。在这两种情况下,均读取每只手的食指,并利用这些手指上的两个点,在本研究中使用了点5和点8,相较于之前工作中使用的点6和点8,能够为操作员提供更好的性能和舒适性。当食指弯曲时,这些点之间会形成一个角度。

示意图5

并且,根据该角度定义线速度和角速度。两点之间的角度差通过atan2函数[17]计算,如公式1所示。

$$
angle = \text{atan2}((P[5]_i - p[8]_i), (P[5]_j - p[8]_j)) \tag{1}
$$

通过该函数,我们获得双手上点5和点8之间的角度。该角度被转换为线速度和角速度,范围从-1到1米每秒(m/s),90度对应零速度。然后将速度以米每秒(m/s)为单位发送给机器人。如果值为正,机器人向前(左手)和向左(右手)移动;如果值为负,机器人向后(左手)和向右(右手)移动。这使得可以同时控制机器人的角速度和线速度,或仅定义单只手的控制。图7展示了所选择的策略。

在操作员终端采集操作员图像并在服务器上应用控制逻辑后,得到的速度通过MQTT主题发送给机器人,随后到达机器人盖板,并转换为角速度和线速度指令。

C. 机器人

机器人是负责在环境中执行操作的设备。它必须接收来自服务器的命令,并在环境中执行相应的运动,以及同时,他必须发送来自摄像头的图像,以便操作员查看并采取相应操作。

指令通过MQTT主题在机器人端接收,然后转换为线性和角速度命令。这些值被接收并发布到负责机器人运动的ROS主题中,机器人执行操作员确定的动作。如果连接中断或操作员断开连接,机器人将立即停止,从而避免因缺少操作员指令而在环境中发生事故。

机器人上的RGB摄像头负责发送摄像头数据给操作员,从而实现对整个操作过程的观察。机器人摄像头数据发布的ROS主题被转换为MQTT主题,以便能够将数据发送给操作员。工作结构如图8所示。

示意图6

因此,无需机器人直接进行繁重的处理,使用成本更低、硬件配置较低、计算能力较弱的机器人可能会很有吸引力,这些机器人通过另一台机器运行逻辑和繁重的处理,便可获得与高端机器人相同的性能。目前有许多低成本设计的机器人[18],根据其可用性,它们可能是此结构的良好选择。

D. MQTT通信

MQTT是一种基于发布-订阅模型的轻量级通信平台的通信协议。如图1所示,数据交换通过MQTT代理进行,可以在其中发布消息并订阅发布内容以获取数据。

如果连接失败或中断,代理将保存数据包,并在通信恢复时立即传输。因此,MQTT协议通常应用于工业通信中,其中传输的安全性和保密性至关重要[19]。

为了通过MQTT实现通信,所使用的组件是Mosquitto,它作为机器和协议之间的中介。它被广泛用于实现设备之间的自动化通信。此外,它的优点在于安装简便,并且与多种机器具有良好的兼容性。

Mosquitto安装在一台私有的DigitalOcean云服务器上,该服务器使用Ubuntu 16.04版本,并采用平台提供的最基本配置之一,但该平台上还有其他选项。还有其他云服务器选项[20],[21],但选择了DigitalOcean,因为作为学生,可以使用GitHub教育包,并获得50美元用于该平台。所创建的机器每月最高费用为5美元,仅按实际使用的处理资源计费,月底时费用可能低于该总额。

云服务器上无需安装ROS包,因为只需使用MQTT协议即可通过主题进行通信。上述各节中提到的每个ROS网络都会通过基于Python Paho[22]库的发布脚本向MQTT服务器发送消息,每台机器也都有一个负责读取接收到的数据的脚本。

III. 实验结果

本节涉及本研究的验证工作。验证是通过模拟器Coppeliasim[23]进行的。该模拟器提供来自传感器的原始数据以及与执行器相同的接口,使得所开发的算法也可适用于真实机器人。验证工作重点集中在通过MQTT通信的延迟测试和数据丢失上。本节介绍了用于实验和验证的机器人、其测试性能、延迟验证和数据丢失情况,以及获得的结果。

A. 延迟和数据丢失测试

第一次测试涉及提出的方法的通信能力。对于这两次测试,分析的路径均为操作员与服务器、服务器与机器人以及机器人与操作员之间的路径。在所有情况下,都会创建一个时间计数器,并在MQTT主题上发布一个数值计数器,该计数器由相应的订阅者进行解读。

已使用Python的定时器库来测量MQTT延迟。它为我们提供以秒为单位的当前系统时间。为了确保测试的有效性,必须发送消息给订阅者,由其重新发送给信使。由于延迟是指数数据包从源设备(操作员)传输到目标设备(服务器)所需的时间,因此将获得的时间值除以二,从而记录延迟时间。这样就无需对每台机器进行时间同步。此类测试表明了将本项目应用于云计算场景的可行性。

该过程重复了1000次以提高可靠性,根据延迟时间的测量结果,计算了算术平均值,并报告了其最高值和最低值。

与延迟测试一样,数据丢失测试也重复了1000次,发送一个数值计数器并在返回时保存,过程结束后对数据进行处理,以检查发送的数据包数量与接收的数据包数量之间是否存在较大差异。

所有测试均在不同网络上进行,每台机器地理分布于巴西的两个南部州。操作员位于南里奥格兰德的一台机器上,服务器位于圣卡塔琳娜的一台机器上,Mosquitto安装在DigitalOcean上,模拟机器人位于圣卡塔琳娜的一台机器上。

对于延迟测试,可以在表I中观察到所有操作中测量值的统计参数。所得到的平均值对应于发送和接收消息之间的平均时间。

操作员 服务器 机器人
算术平均值 494毫秒 380毫秒 469毫秒
最大值 992毫秒 912毫秒 970毫秒
最小值 227毫秒 238毫秒 266毫秒

注:表中分别表示“操作员→服务器”、“服务器→机器人”、“机器人→操作员”的延迟。

根据所获得的结果,可以看出延迟时间达到了相当高的平均值。由于代理的位置以及所采用的签约方案是平台提供的最基本方案,服务可用性为最低,因此该结果是可预期的。可以发现其他研究在使用MQTT测试时也达到了类似的平均延迟。因此可以看出,在云平台上,MQTT的实现会受到此类规模的延迟影响[24]。

在数据丢失的验证中,发送的1000个数据包全部到达目的地,所有测试中均无丢失,丢失率为0%。

B. 模拟实验

所提出的策略在模拟机器人上进行了测试,以更好地比较在“使用RGB摄像头捕获并由深度学习技术识别手势实现移动机器人远程控制”[10]中获得的结果,其中将他所提出的控制方法与另一种控制方法进行了比较——一种称为rqt的方法。总共进行了8次实验,其中4次使用rqt工具控制机器人,另外4次使用该论文提出的控制方法。计算了操作员将机器人从起点移动到指定到达点所用的平均时间。通过这一数据,可以分析rqt与提出的方法在执行任务时的时间优势。将本论文中计算机视觉控制的结果[10]与本项目开发的控制方法进行比较,目标是达到相近的平均值,因为两种控制之间的差异在于采用了物联网通信,从而证明任务执行时间不会出现问题。

所使用的模拟器是CoppeliaSim模拟器[23],即Virtual Robot Experimentation Platform(V-REP)[25]的更新版本。由于该模拟器具有ROS接口,因此在其模拟的所有内容均使用与真实机器人相同的代码。

进行了四项实验,使用了本文所提出的技术。采用所提出的技术执行的路径平均耗时63.5秒,最长为65.23秒,最短为62.05秒。所提出的技术与用于比较的文章中的实验具有相似性,后者平均耗时63.25秒。

示意图7

(a) 轨迹 with 手势控制[10]
(b) 轨迹 with 手势使用MQTT进行控制

可以注意到,在这两种情况下,机器人的运动都很平稳,执行路径时没有出现重大问题,且时间非常接近,尽管在测试中显示延迟时间略高。

IV. 结论

本研究将物联网通信和计算机视觉技术应用于移动机器人研究,重点关注用于远程控制的人机接口。

在本论文中,选择了一种将用户界面、处理接口和物理机器人分离的架构。这种格式的选择是合理的,因为这种格式便于各个模块之间不同组件的集成。每个接口都可以轻松地与未来实现的其他模块进行通信。

如今,所有设备必须集中在一起并连接到同一网络和环境的需求已成为一种可选且不必要的条件。通过使用物联网通信,可以实现整个控制过程,且不会出现明显的损失和通信延迟。

测试旨在验证提出的方法的有效性。尽管乍一看延迟略高,但在文献中可以找到类似实现所达到的相同平均延迟值。因此表明,由于使用了云服务器,此类实现会受到该平均延迟的影响。

数据丢失测试以及延迟测试也证明了使用该协议的高效性,数据丢失率为0%。

最后一次验证使用了模拟机器人,一名位于南里奥格兰德的操作员引导位于Santa Catarina的模拟机器人到达特定位置。共进行了四次测试,获得的平均值为65.5秒,因此表明,与另一项研究中未使用物联网通信的技术相比,在相同情况下获得65.25秒的平均值,两者之间没有显著差异。在导航时间和导航体验方面,增益或损失均表现出同样舒适和轻松的特点。然而,本方法的优势在于整个过程通过物联网通信完成,从而验证了本文所提出的策略。

因此,使用MQTT协议将物联网与ROS结合实施的优势显而易见。通过该方案,在外部作业中运输设备的物流方面获得了更大的优势,减少了设备数量。同时也有财务优势,因为无需特定设备(如控制器)来实施此策略,并且可以将高负载处理设备放置在远离操作现场的位置。在安全性方面,操作员无需前往操作现场,只要能够接入互联网,即可在任何地方进行控制。在通信方面,延迟总体处于可接受范围,平均达到500毫秒。

本文地址:https://www.limyvps.com/news/26_66597.html