掌桥专利:专业的专利平台
掌桥专利
首页

一种动态控制机器人终端网络通讯的系统和实现方法

文献发布时间:2024-04-18 20:02:18


一种动态控制机器人终端网络通讯的系统和实现方法

技术领域

本发明涉及终端机器人领域,具体地说是一种动态控制机器人终端网络通讯的系统和实现方法。

背景技术

在终端机器人领域,目前由于终端的计算资源能力不足,终端设备不能较好的完成计算任务,且多个机器人设备上的传感器(相机,激光雷达等)需要相互通讯,且随着机器人数量的增多,多个机器人会处于不同的局域网中。急需要一种能够支持边缘和服务器之间相互通讯,且能支持多个边缘机器人设备自由组网。

在业务逐渐迭代的过程中,发现机器人还需要和外界的各种终端通讯,两两之间的通讯协议都不相通,且无法保证他们之间的稳定性。且后续动态增加协议的过程无法实现,不能有效的进行功能迭代升级。

为了减少延迟、网络利用率和成本,许多机器人的通讯中心节点部署在边缘节点附近的存储节点中,但当涉及到数据贡献和分布式的时候,很多信息都被困在固定的网络的孤岛上。则就意味着机器人终端必须支持多个链接堆栈,以便以性能、资源和延迟敏感的方式分发和检索数据

现有技术中机器人系统大多数是基于DDS作为通讯中间件,DDS做网络隔离的策略是通过设置不同的domain id来区分不同的网络,因此不能设置多个domain,这样就不能保证多个设备在不同网络中的相互通讯;不能动态切换,设置后就在固定的domain中,不利于后续业务拓展;同一个domain中,存在非常多的设备,可能造成消息的相互干扰(不干扰就可能造成topic的数量居多),不利于后续维护;网络利用率低,成本高和数据孤岛,不能实现分布式扩展的问题。

同时通讯节点协议多样性,稳定性,以及机器人终端和边端设备通讯多样性也导致了无法同时支撑多种通讯协议;多种协议之间不能相互发现,通讯;无法做到动态切换通讯协议和无法做到去中心化设计的问题出现。

发明内容

本发明的目的在于提出一种动态控制机器人终端网络通讯的系统和实现方法,以解决现有技术中机器人系统大多数是基于DDS作为通讯中间件,DDS做网络隔离的策略是通过设置不同的domain id来区分不同的网络,因此不能设置多个domain,这样就不能保证多个设备在不同网络中的相互通讯;不能动态切换,设置后就在固定的domain中,不利于后续业务拓展;同一个domain中,存在非常多的设备,可能造成消息的相互干扰(不干扰就可能造成topic的数量居多),不利于后续维护;网络利用率低,成本高和数据孤岛,不能实现分布式扩展;同时通讯节点协议多样性,稳定性,以及机器人终端和边端设备通讯多样性也导致了无法同时支撑多种通讯协议;多种协议之间不能相互发现,通讯;无法做到动态切换通讯协议和无法做到去中心化设计的问题。

为实现上述目的,本发明提供以下技术方案:

一种动态控制机器人终端网络通讯的系统,包括核心功能层(core)、会话层(session)、服务发现层(discovery)、路由层(router)、代理层(proxy)、网络层(net)、和存储层(store),其中所述核心功能层提供核心功能和基本数据结构,实现核心协议和算法,包括但不限于数据存储和订阅发布机制;同时还提供api,供程序调用;所述会话层负责管理节点之间的会话,建立和维护节点之间的链接并处理会话级别的状态管理和消息处理;所述服务发现层负责节点之间的发现和服务发现,提供节点之间自动发现和加入的功能且支持多种发现协议和机制;所述路由层提供节点之间的路由功能,还能根据数据的目标地址,将消息转发到正确的节点,且支持路由表的动态维护和路由算法的动态更新;所述代理层提供节点之间的代理功能,允许跨网络或者安全隔离的节点之间进行通信,且支持代理节点之间的消息路由和转发,支持各种协议;所述网络层负责处理节点之间网络通信,管理节点之间的链接和消息传递,同时也能提供网络层面的可靠性保证和传输协议支持;所述存储层能够提供持久化存储功能,同时管理数据在节点上的存储和检索,还提供高性能和可扩展的存储引擎。

所述系统采用云原生架构,通过容器部署屏蔽软硬件平台,具体表现为:

系统和运行是环境一起打包,通过容器的形式进行部署,使用容器编排工具,保证系统的高可用性,可以满足水平扩展和负载均衡,通过云原生服务,动态提供各种硬件资源,完善的监控和日志体系,可以实时监控系统的运行状况和性能指标。

所述体统基于ICN(Information-Centric Networking)区别于当前互联网端到端的通信机制,把内容与终端位置剥离)思想,采用Publish/Subscribe模型,将数据视为网络中的第一类公民;具体表现为:

将数据视为网络中的第一类公民,它采用了面向内容的路由和命名机制,使数据能够直接从感兴趣的地方获取,而不需要依赖固定的地址,实现自适应路由和数据聚合的能力;使用发布/订阅模型作为主要的通信模型,适用于异步通信和实时数据传输,并能够支持大规模分布式系统中的事件驱动应用。

所述系统采用zero-sharing/zero-copy(零共享:多个进程或设备可以同时访问和共享,零复制:数据传输过程中避免不必要的数据复制操此处作),提高数据传输的效率和性能。

所述系统的所述路由层针对分布式环境中的节点故障和网络分区设计弹性和容错机制,具体包括以下内容:

使用多路径路由和数据冗余来实现数据的可靠传输和复原能力;当节点故障或网络分区发生时,能够自动重新路由数据,并确保数据的可用性和一致性,核心算法为一致性hash算法。

所述系统利用虚拟网络技术,将分布式环境中的设备和节点组织为一个逻辑网络;这使得用户可以以透明和统一的方式访问网络中的数据,并利用分布式计算能力进行数据处理和分析。

所述系统可适配多种数据传输协议,可扩展性和性能优化,具体表现为:

支持多种数据传输协议,包括TCP/IP、UDP、WebSocket、DDS等,这样,系统可以适应不同的网络环境和应用需求,并提供灵活的数据传输方式,提供可扩展性和高性能的数据共享和通信,它使用了一些性能优化技术,如数据压缩、并行传输和批处理等,以最大程度地提高数据传输和处理的效率。

一种动态控制机器人终端网络通讯系统实现方法,包括客户端流程和服务端流程,其中所述客户端流程包括:初始化、加载需要的类库和依赖项目、创建proxy和proxy建立和服务端链接;所述服务端流程包括:配置阶段和运行阶段。

所述客户端流程中,

初始化具体包括:创建链接实例,设置必要的配置参数,设置自己的clientId;

加载需要的类库和依赖项目具体包括:根据服务端下发的配置以及下发的环境依赖包,加载需要的类库和依赖项目(包括实际通讯的节点信息以及需要转发的消息类型);

创建proxy主要实现消息的接受和发送,proxy建立和服务端链接可以做到定时上报心跳信息。

所述服务端流程中所述配置阶段包括:

①初始化配置信息(加载路由配置,各客户端配置信息);

②链接各客户端,根据客户端配置信息下发对应的类库和依赖项目;

③根据系统所有的路由配置信息,创建多个路由配置表,负责所有消息的路由和转发;

④根据消息类型创建对应的转发消息processor,用于转发不同协议的消息;

所述运行阶段包括:

①将数据发布到网络中的特定主题,发布数据是通过调用相应的API方法,将数据和主题进行关联,并指定数据的发布策略,如数据持久性、传输优先级等;

②根据客户端对象订阅感兴趣的主题,通过指定订阅主题和相应的回调函数,系统可以在数据可用时接收通知并调用对应的processor进行处理;

③根据系统配置的路由信息表,或者使用自适应的数据传输和路由机制,再根据数据的订阅和发布关系,动态选择最佳的路径进行数据传输,利用多路径路由、数据冗余和流量控制等技术,以适应不同的网络条件和数据流量;

④将对应消息的转发记录对应写入检索库,确保数据一致性;

⑤检索库进行二次检查,针对策略进行消息的二次处理(重发,丢弃,忽略)。

与现有技术相比,本发明有益效果如下:

本发明保证多个设备在不同网络中的相互通讯,在分布式系统中,有效的建立数据管理和通信,提供了统一的数据管理和通信;动态切换路由结构,且实时生效,具有自适应的网络拓扑功能,提供了细粒度的访问控制和策略;能够有效地管理数据传输,减少不必要的网络流量,并提高网络利用率;通过优化数据传输和自适应网络环境,可以最大限度地利用可用的网络资源,从而解决网络利用率低的问题;提供了一种统一的数据管理方式,确保数据在分布式环境中的流动和访问,消除了数据孤岛的障碍;提供了一组丰富的客户端库和API,可以在不同的语言和平台上进行开发和集成,这使得开发人员可以使用自己熟悉的工具和技术来构建分布式应用程序;通过动态路由、发布/订阅模式、数据过滤与选择、访问控制和策略、数据持久化与存储/检索以及跨语言和跨平台支持等特性,使开发人员能够根据需求定制和控制数据共享方式,满足各种灵活性要求;采用了分布式哈希表和多副本数据存储机制,可以在节点之间复制和分布数据,这提高了系统的可靠性和可扩展性,并减少了对中心化服务的依赖。

附图说明

图1为本发明云原生架构图;

图2为本发明ICN架构的核心思想,把内容和终端位置隔离;

图3为本发明中采用的zero-sharing和zero-copy的基本原理图;

图4为本发明分布式环境下,通过一致性hash算法保证一致性;

图5为本发明代理架构图;

图6为本发明系统流程图;

图7为实施例中客户端proxy建立链接,发送消息代码示意图;

图8为实施例中服务端接受消息代码示意图;

图9为实施例中获取路由信息,转发给processor代码示意图;

图10为实施例中具体的processor实现代码示意图;

图11为实施例中客户端proxy接受到消息后,在实际和具体的终端进行交互代码示意图。

具体实施方式

为阐明技术问题、技术方案、实施过程及性能展示,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释。本发明,并不用于限定本发明。以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

实施例1

一种动态控制机器人终端网络通讯系统实现方法,包括客户端流程和服务端流程,其中所述客户端流程包括:初始化、加载需要的类库和依赖项目、创建proxy和proxy建立和服务端链接;所述服务端流程包括:配置阶段和运行阶段。

所述客户端流程中,

初始化具体包括:创建链接实例,设置必要的配置参数,设置自己的clientId;

加载需要的类库和依赖项目具体包括:根据服务端下发的配置以及下发的环境依赖包,加载需要的类库和依赖项目(包括实际通讯的节点信息以及需要转发的消息类型);

创建proxy主要实现消息的接受和发送,proxy建立和服务端链接可以做到定时上报心跳信息。

所述服务端流程中所述配置阶段包括:

①初始化配置信息(加载路由配置,各客户端配置信息);

②链接各客户端,根据客户端配置信息下发对应的类库和依赖项目;

③根据系统所有的路由配置信息,创建多个路由配置表,负责所有消息的路由和转发;

④根据消息类型创建对应的转发消息processor,用于转发不同协议的消息;

所述运行阶段包括:

①将数据发布到网络中的特定主题,发布数据是通过调用相应的API方法,将数据和主题进行关联,并指定数据的发布策略,如数据持久性、传输优先级等;

②根据客户端对象订阅感兴趣的主题,通过指定订阅主题和相应的回调函数,系统可以在数据可用时接收通知并调用对应的processor进行处理;

③根据系统配置的路由信息表,或者使用自适应的数据传输和路由机制,再根据数据的订阅和发布关系,动态选择最佳的路径进行数据传输,利用多路径路由、数据冗余和流量控制等技术,以适应不同的网络条件和数据流量;

④将对应消息的转发记录对应写入检索库,确保数据一致性;

⑤检索库进行二次检查,针对策略进行消息的二次处理(重发,丢弃,忽略)。

具体实现一条机器人消息的动态转发,主要有如下几个核心步骤(前提是客户端和服务端都已经顺利启动成功,且配置加载完成)

S1、客户端proxy将消息发送;

S2、服务端接受消息;

S3、根据缓存的配置信息(缓存策略自定义),获取路由配置,决定动态转发对象(需要接受消息的客户端),再根据客户端类型,分发给具体的processor进行消息转发;

S4、processor具体负责消息体处理,对应建立通讯通道;

S5、客户端proxy接受到消息后,在实际和具体的终端进行交互;

所述步骤S1客户端proxy建立链接,发送消息,具体实现如下:

通过invoker.open()建立与invoker服务端的会话,得到一个会话对象session。

接下来,我们使用session.create_publisher()创建一个发布者对象publisher,用于发送消息。然后,我们指定要发送消息的主题topic和消息内容message,通过publisher.write(topic,message)将消息发送到指定主题,具体代码如图7所示。

所述步骤S2服务端接受消息,具体实现如下:

我们首先定义了一个回调函数demo_message,用于处理接收到的消息。该函数接受两个参数:topic表示接收到的消息所属的主题,payload表示消息的内容。

接下来,初始化Invoker客户端对象invoker_client,然后通过invoker_client.open()建立与Invoker实例的会话,得到一个会话对象session。

使用session.declare_subscriber()创建一个订阅者对象subscriber,并通过subscriber.add_listener(process_message)将回调函数绑定到订阅者上,以处理接收到的消息,具体代码如图8所示。

所述步骤S3获取路由信息,转发给processor,具体实现如下:

首先定义了一个消息处理器类Processor,其中的process_message方法用于处理接收到的消息。

然后,定义了get_routing_config函数,用于从缓存中获取路由配置信息,并返回路由配置信息的数据结构。具体的实现方式取决于使用的缓存系统和数据结构。

接下来,定义了get_message_receivers函数,根据路由配置和客户端类型,获取要接收消息的客户端列表。该函数根据路由配置信息和客户端类型的筛选逻辑,返回符合条件的客户端列表。

然后,初始化Invoker客户端对象invoker_client,建立与Invoker实例的会话,并创建一个消息处理器对象processor。

接下来,我们调用get_routing_config获取路由配置信息,并调用get_message_receivers获取要接收消息的客户端列表,传入路由配置和客户端类型。

然后,我们使用session.subscribe订阅消息,循环遍历接收客户端列表,并将消息处理器的process_message方法绑定到每个接收客户端的订阅上,具体代码如图9所示。

所述步骤S4processor实现,此处只列举简单逻辑上的实现,具体如下:

我们定义了一个消息处理器类Processor,它的初始化方法__init__接收一个路由配置routing_config。

在generate_channels方法中,我们遍历路由配置,根据配置生成通讯通道,并将其存储在channels字典中。

在create_channel方法中,您需要根据具体的通讯通道要求和配置,实现通讯通道的创建逻辑,并返回通讯通道对象。

在process_message方法中,根据接收到的消息的主题,在路由配置中查找对应的接收者(receiver),然后从channels字典中获取对应的通讯通道,并将消息发送到该通道,具体代码如图10所示。

所述步骤S5客户端proxy接受到消息后,在实际和具体的终端进行交互具体包括以下内容:

定义一个客户端代理类ClientProxy,它接收一个终端ID作为参数。

在interact_with_terminal方法中,您可以实现与实际终端进行交互的逻辑。示例中的逻辑是建立与终端的连接,发送消息,并接收终端的响应。具体的实现将根据您使用的通信协议和终端类型而有所不同。

在connect_to_terminal方法中,您需要实现与终端建立连接的逻辑,并返回终端连接对象。

在订阅消息时,我们定义了一个process_message函数作为回调函数,它接收消息的主题和载荷,并将消息传递给客户端代理的interact_with_terminal方法进行交互。

上述示例代码只提供了一个基本框架,您需要根据具体需求实现interact_with_terminal方法中与终端进行交互的逻辑。具体的交互方式和操作将取决于终端类型和通信协议,具体代码如图11所示。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

相关技术
  • 一种复合金属氧化物电极及其制备方法和一种电吸附去除氟离子的方法
  • 一种稳定的多孔钴配合物及其制备方法和在吸附、分离气体小分子中的应用
  • 一种相变改性多孔聚乙烯醇颗粒填料及其制备方法和在低温环境污水脱氮中的应用
  • 一种木质素多孔碳纳米片及其制备方法和在超级电容器电极材料中的应用
  • 一种巴比妥酸衍生物及其制备和在荧光识别铁离子和汞离子中的应用
  • 一种多孔陶瓷材料及其制备方法和在氟离子去除中的应用
  • 一种树脂基镧-铈双金属纳米氧化物复合材料、其制备方法和在去除水中氟离子的应用
技术分类

06120116576163