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

一种机器人操作系统的节点查询方法、装置和设备与流程

2022-11-12 11:29:40 来源:中国专利 TAG:


1.本发明涉及机器人操作系统领域,具体涉及一种机器人操作系统的节点查询方法、装置和设备。


背景技术:

2.机器人操作系统(robotics operating system,ros)是目前广泛使用于人工智能开发的软件框架,集通讯机制、开发工具、应用功能和生态系统于一体,主要用于提高各种功能、各种软件的重复利用率。目前,机器人操作系统主要包括两类版本,一种是类似于ros1的中心化版本,另一种是类似于ros2的去中心化版本。ros1的通信机制在于中心化,对于安装了ros1的一个或多个主机,需要在某一个主机上部署一个主节点程序,用于管控其他节点程序,例如:某台主机中部署了一个用于实现图像处理功能的节点程序,并且在当前主机或者其他主机中部署了一个用于实现图像采集功能的节点程序,图像处理节点需要从图像采集节点处获取图像数据,那么这两个节点均需要到主节点进行注册,使主节点为图像处理节点和图像采集节点搭建通信通道,图像处理节点和图像采集节点才能进行数据传输。但是这种通信机制导致ros1的鲁棒性较差,一旦主节点程序崩溃,则所有从节点都不能进行通信。后来,ros2的问世,解决了这一问题,ros2基于数据分发服务(data distribution service,dds)实现节点间的通信,并且达到了去中心化的目的。例如:一个或者多个主机安装了ros2,在某台主机中部署了一个用于实现图像处理功能的节点程序,在当前主机或者其他主机中部署了一个用于实现图像采集功能的节点程序,图像处理节点和图像采集节点会在当前局域网中周期性地发布广播消息,告知其他所有节点自身已经上线,而图像处理节点和图像采集节点则基于对方广播的消息发现对方,从而建立联系并进行数据传输。
3.当用户仅需要简单查询局域网内包含哪些节点时,在ros1中由于所有节点均需要在主节点中注册,使得用户查询节点拓扑信息的速度非常快。但是这一点在ros2中行不通,ros2还需要新建一个节点或者利用已有的某个节点,重新进行广播,然后发现当前局域网内的节点拓扑信息。这个过程一般需要0.5~2.0秒的时延代价,对于某些想立即获取机器人操作系统的节点拓扑信息的场合来说代价较高。基于此,如何在去中心化的机器人操作系统中,实现快速查询节点信息的功能是亟待解决的问题。


技术实现要素:

4.有鉴于此,本发明实施方式提供了一种机器人操作系统的节点查询方法、装置和设备,从而在去中心化的机器人操作系统中提高了节点查询效率。
5.根据第一方面,本发明实施例提供了一种机器人操作系统的节点查询方法,所述方法包括:在当前主机的机器人操作系统中创建信息管理节点,并将所述信息管理节点的信息广播在机器人操作系统所在的局域网中,以使所述局域网中的其他节点发现所述信息管理节点;通过所述信息管理节点收集响应消息,所述响应消息是其他节点在发现了所述
信息管理节点之后发出的;通过所述信息管理节点利用所述响应消息生成节点拓扑信息,并保存所述节点拓扑信息;通过所述信息管理节点接收查询请求,并响应于所述查询请求反馈所述节点拓扑信息。
6.可选地,所述通过所述信息管理节点接收查询请求,并响应于所述查询请求反馈所述节点拓扑信息,包括:对所述查询请求进行解析,确定所述查询请求的发送对象;按照所述查询请求的发送对象的类型,反馈所述节点拓扑信息。
7.可选地,所述按照所述查询请求的发送对象的类型,反馈所述节点拓扑信息,包括:若所述查询请求的发送对象为当前主机中的进程,则使所述信息管理节点通过共享内存将所述节点拓扑信息反馈至所述当前主机;若所述查询请求的发送对象为其他主机的进程,则使所述信息管理节点通过网络接口将所述节点拓扑信息反馈至所述其他主机;若所述查询请求的发送对象为所述局域网中的其他节点,则通过所述信息管理节点将所述节点拓扑信息发布到目标话题,以使来源于所述局域网中的其他节点从所述目标话题中获取所述节点拓扑信息。
8.可选地,所述方法还包括:通过当前主机的信息管理节点发布信息同步话题,以使其他主机中的信息管理节点订阅所述信息同步话题,并通过所述信息同步话题接收所述当前主机的信息管理节点发送的节点拓扑信息。
9.可选地,所述方法还包括:创建守护节点,并通过所述守护节点监控所述信息管理节点的运行状态,以在所述信息管理节点的运行状态发生异常时,重启所述信息管理节点。
10.可选地,在通过所述信息管理节点收集响应消息之前,所述方法还包括:判断所述机器人操作系统是否通信正常,若所述机器人操作系统通信正常则执行所述通过所述信息管理节点收集响应消息的步骤。
11.可选地,所述保存所述节点拓扑信息,包括:
12.通过哈希表结构或数据缓存中间件保存所述节点拓扑信息。
13.根据第二方面,本发明实施例提供了一种机器人操作系统的节点查询装置,所述装置包括:信息管理节点初始化单元,用于在当前主机的机器人操作系统中创建信息管理节点,并将所述信息管理节点的信息广播在机器人操作系统所在的局域网中,以使所述局域网中的其他节点发现所述信息管理节点;响应消息收集单元,用于通过所述信息管理节点收集响应消息,所述响应消息是其他节点在发现了所述信息管理节点之后发出的;节点拓扑信息缓存单元,用于通过所述信息管理节点利用所述响应消息生成节点拓扑信息,并保存所述节点拓扑信息;查询单元,用于通过所述信息管理节点接收查询请求,并响应于所述查询请求反馈所述节点拓扑信息。
14.根据第三方面,本发明实施例提供了一种机器人操作系统的节点快速查询设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
15.根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机从而执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
16.本技术提供的技术方案,具有如下优点:
17.本技术提供的技术方案,对于去中心化的机器人操作系统,在各个主机内均创建一个信息管理节点。在信息管理节点第一次创建时,基于服务发现功能,各个主机会将信息管理节点广播到机器人操作系统所在的局域网中,从而使得信息管理节点和其他所有节点互相发现,这个过程通常需要0.5~2.0秒左右,同时信息管理节点基于其他节点反馈的响应消息生成节点拓扑信息,并将生成的节点拓扑信息缓存在主机内部。用户在后续进行节点查询时,无需创建新的节点或使用旧节点重复发现过程,只需通过信息管理节点读取缓存的节点拓扑信息,即可实现快速的节点信息查询。信息管理节点对去中心化的机器人操作系统的网络结构没有造成改变,在保持高鲁棒性的基础上,还实现了快速查询节点信息的功能,显著提高了机器人操作系统节点信息查询的效率。
18.此外,在一个实施例中,针对用户的查询请求还分析其发动对象的类型,并根据不同的发送对象设置不同的反馈机制,进一步提高节点查询的效率。具体包括:当查询请求的发送对象为当前主机中的某一个进程,则使信息管理节点通过共享内存将节点拓扑信息反馈至当前主机,因为共享内存是同一主机不同进程间进行ipc通信最快的方式,从而进一步提高查询效率。而对于不同主机用户的节点则可以提供常见的网络服务如http、udp、tcp;而对于机器人操作系统其它节点(包括同一主机上以及不同主机上的节点)发出的查询请求也可以通过话题的形式反馈节点拓扑信息,从而使得节点查询方式具有多种途径,提高查询节点信息的可靠性。
附图说明
19.通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
20.图1示出了本发明一个实施方式中一种机器人操作系统的节点查询方法的步骤示意图;
21.图2示出了本发明一个实施方式中一种机器人操作系统的节点查询方法的流程示意图;
22.图3示出了本发明一个实施方式中一种机器人操作系统的节点查询装置的结构示意图;
23.图4示出了本发明一个实施方式中一种机器人操作系统的节点查询设备的结构示意图。
具体实施方式
24.为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
25.请参阅图1,在一个实施方式中,一种机器人操作系统的节点查询方法,具体包括以下步骤:
26.步骤s101:在当前主机的机器人操作系统中创建信息管理节点,并将信息管理节
点的信息广播在机器人操作系统所在的局域网中,以使局域网中的其他节点发现信息管理节点。
27.步骤s102:通过信息管理节点收集响应消息,响应消息是其他节点在发现了信息管理节点之后发出的。
28.步骤s103:通过信息管理节点利用响应消息生成节点拓扑信息,并保存节点拓扑信息。
29.步骤s104:通过信息管理节点接收查询请求,并响应于查询请求反馈节点拓扑信息。
30.具体地,去中心化的机器人操作系统可以安装在一台主机上也可以在多台主机上分别安装,从而实现主机内部和主机之间的节点进行通信。本实施例在各个主机上安装的机器人操作系统中均创建一个节点程序,即信息管理节点。信息管理节点在创建时即是首次加入机器人操作系统的网络,节点内部通过拓扑管理器进行广播,通知整个网络中的其他节点,并根据其他节点的响应消息同步其他节点的信息,该过程即拓扑发现的过程,一般需要0.5~2.0秒左右,换言之,如果查询网络拓扑信息的查询操作通过新创建的信息管理节点进行,节点在查询网络拓扑信息前需要执行等待,以确保信息的可靠性,则依然存在0.5~2.0秒左右的时间延迟,该拓扑发现延时代价,任何节点首次加入网络时均需要承担,信息管理节点也不例外。但是,如果信息管理节点已经启动,信息管理节点会基于其他节点反馈的响应消息生成节点拓扑信息,并将生成的节点拓扑信息缓存在主机内部。当用户后续需要查询节点信息时,不论用户使用哪一台主机,只需要直接通过当前主机上的信息管理节点查询节点拓扑信息,无需创建新的中间节点,信息管理节点会将内部缓存的节点拓扑信息直接反馈给对应的查询进程,使得查询进程立刻获得节点拓扑信息,从而避免拓扑发现延时等待,同时减少节点创建,降低机器人操作系统的压力。
31.具体地,在一实施例中,信息管理节点还设置了策略性的发现服务,信息管理节点在首次创建之后,后续进行广播的动作不受用户的查询请求控制,而是自发地向机器人操作系统局域网中广播节点信息,广播时间间隔可以是实时、定时或者按照一定的策略。从而重新收集其他节点反馈的响应消息,并生成新的节点拓扑信息,以按照一定的时间间隔对缓存的节点拓扑信息进行更新,提高当前主机缓存的节点拓扑信息准确性。
32.具体地,在本实施例中,缓存节点拓扑信息可以采用哈希表结构或主流高性能数据缓存中间件,例如redis。从而加速信息的增删改查速度,进一步提高节点信息查询的效率。
33.具体地,在一实施例中,上述步骤s104,具体包括如下步骤:
34.步骤一:对查询请求进行解析,确定查询请求的发送对象。
35.步骤二:按照查询请求的发送对象的类型,反馈节点拓扑信息。
36.具体地,在本实施例中,考虑到用户可能从当前主机进行节点拓扑信息查询,也可能通过一些客户端设备(例如手机、平板等设备)远程查询节点拓扑信息,还有可能查询节点拓扑信息的操作是机器人操作系统中某些功能节点发出的。为了使得节点拓扑信息能够稳定可靠的反馈给各种查询进程,且尽量保持最快的反馈速度,本发明实施例按照查询请求的发送对象的类型,预置不同的反馈途径,进行节点拓扑信息的反馈,从而进一步提高节点拓扑信息的查询效率和查询可靠性。
37.具体地,在本实施例中,上述步骤二,具体包括如下步骤:
38.1.若查询请求的发送对象为当前主机中的进程,则使信息管理节点通过共享内存将节点拓扑信息反馈至当前主机。
39.2.若查询请求的发送对象为其他主机的进程,则使信息管理节点通过网络接口将节点拓扑信息反馈至其他主机。
40.3.若查询请求的发送对象为局域网中的其他节点,则通过信息管理节点将节点拓扑信息发布到目标话题,以使来源于局域网中的其他节点从目标话题中获取节点拓扑信息。
41.具体地,在本实施例中,若信息管理节点分析到查询请求是来自于当前主机内的其他进程(例如当前主机内某个应用程序),则通过共享内存的方式进行通信,使信息管理节点将节点拓扑信息反馈至当前主机对应的进程,从而以同一主机不同进程间进行ipc通信的方式,以最快的速度反馈节点拓扑信息,进一步提高了查询节点的效率。若查询请求的发送对象为其他主机的进程,则可以使信息管理节点通过网络接口将节点拓扑信息反馈至其他主机,可使用的网络服务包括但不限于http、udp、tcp。此外,针对同一主机上的其他节点或者不同主机上的其他节点所发动的查询请求,还可以通过信息管理节点将节点拓扑信息发布到一个特定的目标话题,对于机器人操作系统的其他节点也可以通过订阅话题的形式获取节点拓扑信息(还可以通过节点间服务的通信形式实现)。从而实现多种查询途径,提高节点查询的可靠性。
42.具体地,在一实施例中,本发明实施例提供的机器人操作系统的节点查询方法,还包括如下步骤:
43.步骤三:通过当前主机的信息管理节点发布信息同步话题,以使其他主机中的信息管理节点订阅信息同步话题,并通过信息同步话题接收当前主机的信息管理节点发送的节点拓扑信息。
44.具体地,由于各个主机的信息管理节点在局域网中周期性发布自身信息,获取节点拓扑信息的时机并不能保证完全一致,如果在这个过程中,某些节点离线或者新建某些节点,则各个主机缓存的节点拓扑信息会出现差异,虽然各个主机缓存的节点拓扑信息差异性通常微小,也会对用户管理节点造成一定影响。在本实施例中,各个主机的信息管理节点还在局域网中发布信息同步话题,从而使除自身之外的其他主机中的信息管理节点订阅自身发布的信息同步话题。各个主机之间则通过发布/订阅信息同步话题的消息,使各个主机缓存的节点拓扑信息互相同步,进一步降低各个主机内缓存的节点拓扑信息的差异,从而提高了用户查询节点的可靠性。
45.具体地,在一实施例中,本发明实施例提供的机器人操作系统的节点查询方法,还包括如下步骤:
46.步骤四:创建守护节点,并通过守护节点监控信息管理节点的运行状态,以在信息管理节点的运行状态发生异常时,重启信息管理节点。
47.具体地,在本实施例中,将信息管理节点作为后台进程,并额外部署守护节点,启动守护节点用于监控信息管理节点的运行状态,当信息管理节点发生异常时(例如无法发布话题、无法订阅话题和未知的异常导致进程运行卡死),则通过守护节点重新启动信息管理节点进程,确保信息管理节点一直稳定运行,进一步提高了节点查询的可靠性。
48.具体地,如图2所示,在一实施例中,在上述步骤s102之前,还包括如下步骤:
49.步骤五:判断机器人操作系统是否通信正常,若机器人操作系统通信正常则执行通过信息管理节点收集响应消息的步骤。
50.具体地,在本实施例中,当前主机将收集其他节点响应消息之前,还需判断整体机器人操作系统的通信是否正常,例如:根据自身主机ip地址和对方主机的ip地址与主机名,进行ping测试,判断通信是否正常。如果通信异常则需要及时通知技术人员进行调试,避免广播信息管理节点的操作属于无用操作、避免浪费查询时间,从而进一步提高用户查询节点的效率。同理,本实施例在发布信息同步话题以及每次响应查询请求进行查询操作之前,也对整体机器人操作系统的通信是否正常进行判断。
51.通过上述步骤,本技术提供的技术方案,对于去中心化的机器人操作系统,在各个主机内均创建一个信息管理节点。在信息管理节点第一次创建时,基于服务发现功能,各个主机会将信息管理节点广播到机器人操作系统所在的局域网中,从而使得信息管理节点和其他所有节点互相发现,这个过程通常需要0.5~2.0秒左右,同时信息管理节点基于其他节点反馈的响应消息生成节点拓扑信息,并将生成的节点拓扑信息缓存在主机内部。用户在后续进行节点查询时,无需创建新的节点或使用旧节点重复发现过程,只需通过信息管理节点读取缓存的节点拓扑信息,即可实现快速的节点信息查询。信息管理节点对去中心化的机器人操作系统的网络结构没有造成改变,在保持高鲁棒性的基础上,还实现了快速查询节点信息的功能,显著提高了机器人操作系统节点信息查询的效率。
52.此外,在一个实施例中,针对用户的查询请求还分析其发动对象的类型,并根据不同的发送对象设置不同的反馈机制,进一步提高节点查询的效率。具体包括:当查询请求的发送对象为当前主机中的某一个进程,则使信息管理节点通过共享内存将节点拓扑信息反馈至当前主机,因为共享内存是同一主机不同进程间进行ipc通信最快的方式,从而进一步提高查询效率。而对于不同主机用户的节点则可以提供常见的网络服务如http、udp、tcp均可;而对于机器人操作系统其它节点(包括同一主机上以及不同主机上的节点)发出的查询请求也可以通过话题的形式反馈节点拓扑信息,从而使得节点查询方式具有多种途径,提高查询节点信息的可靠性。
53.如图3所示,本实施例还提供了一种机器人操作系统的节点查询装置,该装置包括:
54.信息管理节点初始化单元101,用于在当前主机的机器人操作系统中创建信息管理节点,并将信息管理节点的信息广播在机器人操作系统所在的局域网中,以使局域网中的其他节点发现信息管理节点。详细内容参见上述方法实施例中步骤s101的相关描述,在此不再进行赘述。
55.响应消息收集单元102,用于通过信息管理节点收集响应消息,响应消息是其他节点在发现了信息管理节点之后发出的。详细内容参见上述方法实施例中步骤s102的相关描述,在此不再进行赘述。
56.节点拓扑信息缓存单元103,用于通过信息管理节点利用响应消息生成节点拓扑信息,并保存节点拓扑信息。详细内容参见上述方法实施例中步骤s103的相关描述,在此不再进行赘述。
57.查询单元104,用于通过信息管理节点接收查询请求,并响应于查询请求反馈节点
拓扑信息。详细内容参见上述方法实施例中步骤s104的相关描述,在此不再进行赘述。
58.本发明实施例提供的机器人操作系统的节点查询装置,用于执行上述实施例提供的机器人操作系统的节点查询方法,其实现方式与原理相同,详细内容参见上述方法实施例的相关描述,不再赘述。
59.通过上述各个组成部分的协同合作,本技术提供的技术方案,对于去中心化的机器人操作系统,在各个主机内均创建一个信息管理节点。在信息管理节点第一次创建时,基于服务发现功能,各个主机会将信息管理节点广播到机器人操作系统所在的局域网中,从而使得信息管理节点和其他所有节点互相发现,这个过程通常需要0.5~2.0秒左右,同时信息管理节点基于其他节点反馈的响应消息生成节点拓扑信息,并将生成的节点拓扑信息缓存在主机内部。用户在后续进行节点查询时,无需创建新的节点或使用旧节点重复发现过程,只需通过信息管理节点读取缓存的节点拓扑信息,即可实现快速的节点信息查询。信息管理节点对去中心化的机器人操作系统的网络结构没有造成改变,在保持高鲁棒性的基础上,还实现了快速查询节点信息的功能,显著提高了机器人操作系统节点信息查询的效率。
60.此外,在一个实施例中,针对用户的查询请求还分析其发动对象的类型,并根据不同的发送对象设置不同的反馈机制,进一步提高节点查询的效率。具体包括:当查询请求的发送对象为当前主机中的某一个进程,则使信息管理节点通过共享内存将节点拓扑信息反馈至当前主机,因为共享内存是同一主机不同进程间进行ipc通信最快的方式,从而进一步提高查询效率。而对于不同主机用户的节点则可以提供常见的网络服务如http、udp、tcp均可;而对于机器人操作系统其它节点(包括同一主机上以及不同主机上的节点)发出的查询请求也可以通过话题的形式反馈节点拓扑信息,从而使得节点查询方式具有多种途径,提高查询节点信息的可靠性。
61.图4示出了本发明实施例的一种机器人操作系统的节点查询设备,该设备包括处理器901和存储器902,可以通过总线或者其他方式连接,图4中以通过总线连接为例。
62.处理器901可以为中央处理器(central processing unit,cpu)。处理器901还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
63.存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如上述方法实施例中的方法所对应的程序指令/模块。处理器901通过运行存储在存储器902中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。
64.存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
65.一个或者多个模块存储在存储器902中,当被处理器901执行时,执行上述方法实施例中的方法。
66.上述机器人操作系统的节点查询设备具体细节可以对应参阅上述方法实施例中对应的相关描述和效果进行理解,此处不再赘述。
67.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,实现的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;存储介质还可以包括上述种类的存储器的组合。
68.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
再多了解一些

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

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

相关文献