一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于IROS消息通信机制的Shell指令远程执行方法与流程

2022-10-26 07:29:53 来源:中国专利 TAG:

一种基于iros消息通信机制的shell指令远程执行方法
技术领域
1.本发明涉及一种基于iros消息通信机制的shell指令远程执行方法,属于智能机器人操作系统技术领域。


背景技术:

2.远程控制技术主要是通过本地计算机上的远程控制软件向分布在网络上的计算机或服务器发送指令,从而操纵远程计算机或服务器执行相应的任务。机器人是一个集机械、传感器、计算机及控制技术于一体的系统,特别是基于云端信息共享的云化机器人,经常需要从云端服务器往机器人本体上发送shell指令,从而达到某些特定的目的。但是当前缺少一种传输效率高,且准确的shell指令远程执行方法。


技术实现要素:

3.本发明目的是提供了一种基于iros消息通信机制的shell指令远程执行方法,利用iros的消息通信效率高实现shell指令的远程交互。
4.本发明为实现上述目的,通过以下技术方案实现:步骤一:在机器人本体上启动shellserver,shellserver订阅话题goal和话题canle,发布话题result;步骤二:在云端服务器上启动shellclient,shellclient订阅话题result,发布话题goal和cancle;步骤三:在shellclient上输入shell指令和机器人序列号指定执行机器人,shellclient生成该指令对应的uuid,并将上述信息封装成指令消息,发送到话题goal;步骤四:shellserver检测到话题goal接收到新的消息后,从消息中提取对应的uuid、原始shell命令、机器人序列号,如果该消息判定为本机执行,shellserver启动命令执行,并在命令执行完后将结果写入话题result;步骤五:shellclient从话题result中获取命令执行结果信息,并在交互终端上显示;步骤六:在shell命令执行过程中,发送stop指令到话题cancle可以结束正在执行的命令。
5.优选的,所述shellserver包括线程a和线程b,用于监视话题goal和话题cancle,当话题goal接收到新的shell指令消息时,shellserver记录该指令的uuid,通过fopen启动shell指令处理线程,处理完后将处理结果写入话题result;当话题cancle接收到新的指令消息时,shellserver从消息中获得要结束执行的shell命令的uuid,然后关闭该uuid对应的处理线程。
6.优选的,所述shellclient包括线程a和线程b,线程a负责从终端接受用户输入的shell指令,线程b用于监视话题result,当线程a接收到新的shell指令输入后,自动生成该指令对应的uuid,将该uuid、需要执行shell指令的机器人序列号和shell指令组合成指令
消息,发送到话题goal,订阅该话题的机器人终端收到该消息后,进行指令消息解析;当话题result接收到新的结果消息后,会从消息中提取出该结果对应的uuid、原始shell命令、机器人序列号和shell命令执行结果信息,并将相应信息输出到交互终端进行展示。
7.本发明的优点在于:本发明利用iros的消息通信效率高,并且支持分布式部署的特点,通过构建负责shell指令发送的客户端shellclient和负责shell命令执行的服务端shellserver,实现shell指令从云端发送到机器人本体,机器人本体执行完指令后,再将指令执行结果反馈给到云端,从而实现shell指令的远程交互。
附图说明
8.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
9.图1为本发明整体结构示意图。
10.图2为本发明数据流程示意图。
具体实施方式
11.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
12.如图1所示,本发明利用iros的部署简单,实时通信效率高,并且支持分布式部署的特点,通过构建负责shell指令发送的客户端shellclient和负责shell命令执行的服务端shellserver,实现shell指令从云端发送到机器人本体,机器人本体执行完指令后,再将指令执行结果反馈给到云端,从而实现shell指令的远程交互。
13.客户端需要建立两个话题:goal和cancle,话题goal负责发送待执行指令,话题cancle负责发送可结束指令id,服务端订阅这两个话题,从话题goal中获取待执行指令,从话题cancle中获取可结束指令id;服务端需要建立一个话题:result,负责写入指令执行结果,客户端订阅该话题,获得指令执行结果。
14.如图2所示,该方法的实现需要构建负责shell指令远程执行的服务端shellserver。shellserver发布一个话题result,订阅两个话题goal和cancle。当shellserver启动后,分别启动线程a和线程b用于监视话题goal和话题cancle,当话题goal接收到新的shell指令消息时,shellserver记录该指令的uuid,通过fopen启动shell指令处理线程,处理完后将处理结果写入话题result;当话题cancle接收到新的指令消息时,shellserver从消息中获得要结束执行的shell命令的uuid,然后关闭该uuid对应的处理线程。
15.该方法的实现需要在云端服务器上部署能够输入和发送shell指令的shellclient,通过该客户端可以将shell指令发送到指定机器人。
16.该方法的实现需要构建负责shell指令输入和发送的客户端shellclient。shellclient发布两个话题goal和cancle,订阅一个话题result。当shellclient启动后,分别启动线程a和线程b,线程a负责从终端接受用户输入的shell指令,线程b用于监视话题
result,当线程a接收到新的shell指令输入后,自动生成该指令对应的uuid,将该uuid、需要执行shell指令的机器人序列号和shell指令组合成指令消息,发送到话题goal,订阅该话题的机器人终端收到该消息后,进行指令消息解析;当话题result接收到新的结果消息后,会从消息中提取出该结果对应的uuid、原始shell命令、机器人序列号和shell命令执行结果信息,并将相应信息输出到交互终端进行展示。
17.该方法的实现需要同时启动shellclient和shellserver,其具体交互步骤如下:步骤一:在机器人本体上启动shellserver,shellserver订阅话题goal和话题canle,发布话题result;步骤二:在云端服务器上启动shellclient,shellclient订阅话题result,发布话题goal和cancle;步骤三:在shellclient上输入shell指令并指定执行机器人,shellclient会自动生成该指令对应的uuid,并将上述信息封装成指令消息,发送到话题goal;步骤四:shellserver检测到话题goal接收到新的消息后,会从消息中提取对应的uuid、原始shell命令、机器人序列号,如果该消息判定为本机执行,shellserver启动命令执行,并在命令执行完后将结果写入话题result;步骤五:shellclient从话题result中获取命令执行结果信息,并在交互终端上显示。
18.步骤六:在shell命令执行过程中,发送stop指令到话题cancle可以结束正在执行的命令。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献