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

一种基于后台代理的人机命令交互方法与流程

2022-04-14 00:51:39 来源:中国专利 TAG:


1.本发明涉及人机交互技术领域,具体是涉及一种基于后台代理的人机命令交互方法。


背景技术:

2.随着机器人控制器的硬件性能日趋提高,机器人控制器集成越来越多的由不同厂商开发的功能应用软件,但是用户需要利用不同的专用工具才可以使用这些功能应用软件,这并不利于对机器人控制器的使用、维护与性能扩展。
3.在此基础上,已有学者提出通过统一协议方式(即传输媒介类型、响应方式、数据格式等方面的统一),由各个厂商对各自开发的功能应用软件进行协议适配,但这也面临两大缺陷:其一,现有的统一协议方式采用专用化设计,只能兼容有限的传输媒介类型和响应方式,适用范围较窄,可能存在部分厂商原本可用的功能应用软件无法适配,不利于机器人控制器的性能扩展;其二,现有的统一协议方式采用通用化设计,能够支持多种传输媒介类型和响应方式,然而该协议本身需要持续保持更新状态,且该协议在运行时可能存在无法规避的内容冲突,使得各个厂商不容易进行协议适配与性能测试,这也不利于机器人控制器的性能扩展。


技术实现要素:

4.本发明提供一种基于后台代理的人机命令交互方法,以解决现有技术中所存在的一个或多个技术问题,至少提供一种有益的选择或创造条件。
5.本发明实施例提供一种基于后台代理的人机命令交互方法,用于实现终端设备与机器人控制器之间的命令交互,所述终端设备内部装载有供用户操作的终端软件,所述机器人控制器内部装载有后台代理软件和若干个功能应用软件;所述人机命令交互方法包括:所述终端软件将以消息类型封装的用户命令包通过预先创建的第一消息通信协议转换为以消息片段形式输出的用户命令数据后发送至所述后台代理软件,其中所述第一消息通信协议用于实现跨设备间的通信连接;所述后台代理软件从所述用户命令数据中解析获取用户指定的一个功能应用软件,再创建与该功能应用软件对接的第二消息通信协议,其中所述第二消息通信协议用于实现进程间的通信连接;所述后台代理软件生成以消息类型封装的连接应答数据包并将其通过所述第一消息通信协议转换为以消息片段形式输出的连接应答数据后反馈至所述终端软件。
6.进一步地,所述人机命令交互方法还包括:所述终端软件将以消息类型封装的待转交数据包通过所述第一消息通信协议转换为以消息片段形式输出的待转交数据后发送至所述后台代理软件;所述后台代理软件将所述待转交数据更新为以消息类型封装的运行指令包并将
其通过所述第二消息通信协议转换为以消息片段形式输出的运行指令后发送至该功能应用软件;该功能应用软件在接收到所述运行指令时开始启用运行,同时生成以消息类型封装的运行响应数据包并将其通过所述第二消息通信协议转换为以消息片段形式输出的运行响应数据后反馈至所述后台代理软件;所述后台代理软件将所述运行响应数据整理为以消息类型封装的响应转达数据包,再将其通过所述第一消息通信协议转换为以消息片段形式输出的响应转达数据后反馈至所述终端软件。
7.进一步地,所述第一消息通信协议配置有消息序列化协议和消息反序列化协议,所述第二消息通信协议配置有消息序列化协议和消息反序列化协议,其中所述消息序列化协议用于将消息转换为消息片段数据帧,所述消息反序列化协议用于将字节流转换为消息片段。
8.进一步地,消息的结构包括意图类型、消息序列号和消息数据。
9.进一步地,所述消息序列化协议用于将消息转换为消息片段数据帧包括:将消息内部包含的消息数据按照设定字节数切分成m个消息片段数据,其中m为正整数,m≥1,再将m个消息片段数据按序封装为对应的m个消息片段,其中每一个消息片段的结构包括意图类型、消息序列号、片段总数、片段编号和消息片段数据;将m个消息片段按序转换为对应的m个消息片段数据帧,其中每一个消息片段数据帧的结构包括帧头、版本号、意图类型、消息序列号、片段总数、片段编号、消息片段数据的字节数、头部校验码、消息片段数据和数据校验码。
10.进一步地,每一个消息片段数据帧内部包含的帧头、版本号、意图类型、消息序列号、片段总数、片段编号、消息片段数据的字节数和头部校验码共占据20个字节,每一个消息片段数据帧内部包含的消息片段数据和数据校验码共占据n 2个字节,其中n为消息片段数据的字节数。
11.进一步地,所述消息反序列化协议用于将字节流转换为消息片段包括:步骤1、获取字节流的前20个字节并对其进行头部crc校验,且在头部校验通过时获取字节流的前20 n 2个字节;步骤2、对其中还未被执行校验的n 2个字节进行数据crc校验,且在数据校验通过时将字节流的前20 n 2个字节直接切分出来得到一个消息片段数据帧,同时得到更新后的字节流;循环执行上述步骤1和步骤2直至获取所有消息片段数据帧,再将所有消息片段数据帧按序进行内容提取以得到对应的所有消息片段。
12.进一步地,在头部校验不通过时,删除字节流的第一个字节以得到更新后的字节流,再返回对更新后的字节流重新执行头部crc校验工作。
13.进一步地,在数据校验不通过时,删除字节流的前20 n 2个字节以得到更新后的字节流,再返回对更新后的字节流重新执行头部crc校验工作。
14.本发明至少具有以下有益效果:通过在机器人控制器内部额外装载后台代理软件,当终端软件与该后台代理软件之间进行跨设备通信时依赖于终端设备与机器人控制器之间的固定传输媒介上,而当该后台代理软件与任意一个功能应用软件之间进行进程间通
信时无需依赖于任何传输媒介,将有利于各个厂商对各自开发的功能应用软件进行协议适配与性能测试。通过将终端软件与各个功能应用软件之间的数据交互功能均由该后台代理软件进行统一管控,将有利于机器人控制器的功能扩展。在终端软件、该后台代理软件和任意一个功能应用软件中均是发送以消息类型封装的交互数据以及接收以消息片段形式输出的交互数据,所采用的消息、消息片段的数据传输格式更为简单化,为各个厂商对各自开发的功能应用软件定义数据传输格式保留较高的自由度。
附图说明
15.附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
16.图1是本发明实施例中的一种基于后台代理的人机命令交互方法的流程示意图;图2是本发明实施例中的终端软件与后台代理软件之间的数据交互示意图;图3是本发明实施例中的后台代理软件与功能应用软件之间的数据交互示意图;图4是本发明实施例中的消息片段数据帧的结构示意图。
具体实施方式
17.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
18.需要说明的是,虽然在系统示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
19.请参考图1,图1是本发明实施例提供的一种基于后台代理的人机命令交互方法的流程示意图,所述方法用于实现终端设备与机器人控制器之间的命令交互,其中所述终端设备内部装载有供用户操作的终端软件,所述机器人控制器内部装载有后台代理软件和若干个功能应用软件,且每一个功能应用软件具有唯一标记。
20.具体的,所述人机命令交互方法包括如下步骤:s101、所述终端软件将以消息类型封装的用户命令包通过预先创建的第一消息通信协议转换为以消息片段形式输出的用户命令数据后发送至所述后台代理软件,其中所述第一消息通信协议用于实现跨设备间的通信连接。
21.在执行步骤s101之前,由用户首先在所述终端软件提供的操作界面上输入软件选择命令,再由所述终端软件将该软件选择命令转换为以消息类型封装的用户命令包。此外,在所述终端软件将所述用户命令包发送出去之后,将生成“命令已发送”的信息并显示在其操作界面上。
22.s102、所述后台代理软件从所述用户命令数据中解析获取用户指定的一个功能应用软件,再创建与该功能应用软件对接的第二消息通信协议,其中所述第二消息通信协议用于实现进程间的通信连接。
23.在实施过程中,所述后台代理软件主要是从所述用户命令数据中解析获取到其所
携带的标记信息,进而通过该标记信息得到用户所指定的功能应用软件。
24.s103、所述后台代理软件生成以消息类型封装的连接应答数据包并将其通过所述第一消息通信协议转换为以消息片段形式输出的连接应答数据后反馈至所述终端软件。
25.在执行步骤s103之后,所述终端软件将根据接收到的所述连接应答数据生成“应答已接收”的信息并显示在其操作界面上,以告知用户可输入新的命令。
26.在此基础上,由用户在所述终端软件的操作界面上继续输入运行控制指令,再由所述终端软件将该运行控制指令转换为以消息类型封装的待转交数据包,进而继续执行步骤s104。
27.s104、所述终端软件将以消息类型封装的待转交数据包通过所述第一消息通信协议转换为以消息片段形式输出的待转交数据后发送至所述后台代理软件。
28.同理,所述终端软件在执行完步骤s104之后,将生成“命令已发送”的信息并显示在其操作界面上。
29.s105、所述后台代理软件将所述待转交数据更新为以消息类型封装的运行指令包并将其通过所述第二消息通信协议转换为以消息片段形式输出的运行指令后发送至该功能应用软件。
30.s106、该功能应用软件在接收到所述运行指令时开始启用运行,同时生成以消息类型封装的运行响应数据包并将其通过所述第二消息通信协议转换为以消息片段形式输出的运行响应数据后反馈至所述后台代理软件。
31.s107、所述后台代理软件将所述运行响应数据整理为以消息类型封装的响应转达数据包,再将其通过所述第一消息通信协议转换为以消息片段形式输出的响应转达数据后反馈至所述终端软件。
32.在执行步骤s107之后,所述终端软件将根据接收到的所述响应转达数据生成“应答已接收”的信息并显示在其操作界面上,以告知用户可输入新的命令。
33.在本发明实施例中,所述终端软件通过所述第一消息通信协议与所述后台代理软件进行交互,如图2所示,所述第一消息通信协议是采用客户端/服务端模式的通信协议,其配置有消息序列化协议和消息反序列化协议,所述消息序列化协议用于将消息转换为消息片段数据帧,所述消息反序列化协议用于将字节流转换为消息片段;更为具体的,第一消息通信协议客户端实际配置有客户端交互接口a1,所述客户端交互接口a1可以执行所述消息序列化协议和所述消息反序列化协议,第一消息通信协议服务端实际配置有服务端交互接口a2,所述服务端交互接口a2可以执行所述消息序列化协议和所述消息反序列化协议,并且所述客户端交互接口a1与所述服务端交互接口a2之间基于跨设备通信协议进行通信连接。
34.其中,跨设备通信协议采用客户端/服务端模式的通信协议,用于为所述客户端交互接口a1和所述服务端交互接口a2提供字节流的发送和接收服务,可以选用tcp/ip通信协议、rs232串口通信协议和rs485串口通信协议中的任意一种,具体视所述机器人控制器提供的硬件基础而定。
35.如图2所示,当所述终端软件向所述后台代理软件进行命令数据交互时,涉及以下两个交互过程:(1)所述终端软件发送消息给所述客户端交互接口a1,使其执行所述消息序列化协议将消息转换为多个消息片段数据帧(其中的每一个消息片段数据帧本质上也是一
段字节流),再由跨设备通信协议客户端将多个消息片段数据帧按序拼接形成字节流后发送出去;(2)跨设备通信协议服务端通知所述服务端交互接口a2接收到字节流,使其执行所述消息反序列化协议将字节流转换为多个消息片段传输至所述后台代理软件。
36.同理,当所述后台代理软件向所述终端软件进行应答数据交互时,涉及以下两个交互过程:(1)所述后台代理软件发送消息给所述服务端交互接口a2,使其执行所述消息序列化协议将消息转换为多个消息片段数据帧,再由跨设备通信协议服务端将多个消息片段数据帧按序拼接形成字节流后发送出去;(2)跨设备通信协议客户端通知所述客户端交互接口a1接收到字节流,使其执行所述消息反序列化协议将字节流转换为多个消息片段传输至所述终端软件。
37.需要说明的是,当所述终端软件与所述后台代理软件之间在执行上述两类数据交互时,首先应当建立彼此之间的通信连接关系,具体实施过程包括如下:(1)所述后台代理软件向所述服务端交互接口a2发出“公开服务端交互接口a2服务”的请求,进而由所述服务端交互接口a2向跨设备通信协议服务端发出“公开跨设备通信协议服务”的请求;(2)所述终端软件向所述客户端交互接口a1发出“连接服务端交互接口a2”的请求,进而由所述客户端交互接口a1向跨设备通信协议客户端发出“连接跨设备通信协议服务端”的请求;(3)跨设备通信协议客户端与跨设备通信协议服务端主动建立连接;(4)跨设备通信协议客户端通知所述客户端交互接口a1接收到“跨设备通信协议服务端已连接”,进而由所述客户端交互接口a1通知所述终端软件接收到“服务端交互接口a2已连接”;(5)跨设备通信协议服务端通知所述服务端交互接口a2接收到“跨设备通信协议客户端已连接”,进而由所述服务端交互接口a2通知所述后台代理软件接收到“客户端交互接口a1已连接”。
38.在本发明实施例中,所述后台代理软件通过所述第二消息通信协议与用户指定的该功能应用软件进行交互,如图3所示,所述第二消息通信协议是采用客户端/服务端模式的通信协议,其配置有消息序列化协议和消息反序列化协议,所述消息序列化协议用于将消息转换为消息片段数据帧,所述消息反序列化协议用于将字节流转换为消息片段;更为具体的,第二消息通信协议客户端实际配置有客户端交互接口b1,所述客户端交互接口b1可以执行所述消息序列化协议和所述消息反序列化协议,第二消息通信协议服务端实际配置有服务端交互接口b2,所述服务端交互接口b2可以执行所述消息序列化协议和所述消息反序列化协议,并且所述客户端交互接口b1与所述服务端交互接口b2之间基于进程间通信协议进行通信连接。
39.其中,进程间通信协议采用客户端/服务端模式的通信协议,用于为所述客户端交互接口b1和所述服务端交互接口b2提供字节流的发送和接收服务,可以选用基于套接字的进程间通信方式或者基于共享内存的进程间通信方式,具体视所述机器人控制器的内置操作系统提供的用户编程接口而定。
40.如图3所示,当所述后台代理软件向该功能应用软件进行命令数据交互时,涉及以下两个交互过程:(1)所述后台代理软件发送消息给所述客户端交互接口b1,使其执行所述消息序列化协议将消息转换为多个消息片段数据帧(其中的每一个消息片段数据帧本质上也是一段字节流),再由进程间通信协议客户端将多个消息片段数据帧按序拼接形成字节流后发送出去;(2)进程间通信协议服务端通知所述服务端交互接口b2接收到字节流,使其执行所述消息反序列化协议将字节流转换为多个消息片段传输至该功能应用软件。
check,循环冗余校验),在头部校验通过时,获取字节流的前20 n 2个字节,执行步骤(2);在头部校验不通过时,删除字节流的第一个字节以得到更新后的字节流,返回重新执行步骤(1),当字节流无法更新时,跳转执行步骤(3)。
47.在执行上述步骤(1)时,实际隐含有两个操作步骤,分别为:在对字节流的前20个字节进行头部crc校验时,也将同步对字节流的前4个字节(即帧头)进行匹配;在获取字节流的前20 n 2个字节之前,将优先通过查询字节流的第17个字节和第18个字节以获取到n的取值。
48.(2)对其中还未被执行校验的n 2个字节进行数据crc校验,在数据校验通过时,将字节流的前20 n 2个字节直接切分出来得到一个消息片段数据帧,同时得到更新后的字节流并返回重新执行步骤(1),当字节流无法更新时,跳转执行步骤(3);在数据校验不通过时,删除字节流的前20 n 2个字节后得到更新后的字节流,返回重新执行步骤(1),当字节流无法更新时,跳转执行步骤(3)。
49.(3)获取所有消息片段数据帧,再将所有消息片段数据帧按序进行内容提取以得到对应的所有消息片段。
50.本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,如本领域普通技术人员公知的,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
51.以上对本发明的较佳实施进行具体说明,但本发明并不局限于上述实施方式,熟悉本领域的技术人员在不违背本发明精神的前提下还可作出种种的等同变形或替换,这些等同的变形或替换均包含在本发明权利要求所限定的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献