CN111198770B - Ros1消息的通信方法、装置和系统、转换方法和装置 - Google Patents
Ros1消息的通信方法、装置和系统、转换方法和装置 Download PDFInfo
- Publication number
- CN111198770B CN111198770B CN201811377764.7A CN201811377764A CN111198770B CN 111198770 B CN111198770 B CN 111198770B CN 201811377764 A CN201811377764 A CN 201811377764A CN 111198770 B CN111198770 B CN 111198770B
- Authority
- CN
- China
- Prior art keywords
- message
- ros2
- ros1
- name
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Abstract
本发明公开一种ROS1消息的通信方法、装置和系统、转换方法和装置,用以解决现有技术中的ROS2系统无法兼容ROS1消息,通过桥节点将ROS1消息转换为ROS2消息导致的传输负担重、传输延迟和丢包显著的问题。通信方法包括:ROS2节点接收一个来自ROS1节点的ROS1消息;ROS2节点调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;ROS2节点获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
Description
技术领域
本发明涉及机器人领域,特别涉及一种ROS1消息的通信方法、装置和系统、转换方法和装置、存储介质。
背景技术
机器人操作系统(Robot Operating System,ROS)是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。ROS是专为机器人软件开发所设计出来的一套电脑操作系统架构。它是一个开源的元级操作系统(后操作系统),提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序。
ROS的首要设计目标是在机器人研发领域提高代码复用率。ROS是一种分布式处理框架,可执行文件能被单独设计成节点(Nodes),并且在运行时松散耦合。这些过程可以封装到数据包(Packages)和堆栈(Stacks)中,以便于共享和分发。ROS还支持代码库的联合系统,使得协作能够得到分发。这种从文件系统级别到社区一级的设计使得独立地决定发展和实施工作成为可能。上述所有功能都能由ROS的基础工具实现。
ROS发展到现在,已经推出了两个版本,即ROS1和ROS2。ROS2系统无法兼容ROS1消息。目前,ROS1系统和ROS2系统之间配置有一个桥节点(Bridge Node),该桥节点对ROS1消息进行处理转换,得到对应的ROS2消息,并将该转换得到的ROS2消息发送给相应的ROS2节点。通过上述处理ROS1消息才能被ROS2节点正确接收和使用。
如图1所示,ROS1节点向ROS2节点发送ROS1消息的处理包括:
步骤1、ROS1节点向ROS1系统中的中心节点(Core Node)请求并获取到目标ROS2节点的地址信息;
步骤2、ROS1节点根据获取到的ROS2节点的地址信息构建ROS1消息,并将构建得到的ROS1消息发送给桥节点;
步骤3、桥节点根据预置的转换规则和数据结构,将ROS1消息转换为ROS2消息;
步骤4、桥节点将转换得到的ROS2消息发送给目标ROS2节点。
从上述处理过程可看出,ROS1节点发送给ROS2节点的消息要经过两次传输才能被ROS2节点接收到,即ROS1节点将ROS1消息发送给桥节点,桥节点将转换得到的ROS2消息发送给ROS2节点。在ROS1节点和ROS2节点混合工作的环境中,当ROS1节点给ROS2节点发送大量数据的情况下,存在传输负担重、传输延迟和丢包显著的问题。
发明内容
有鉴于此,本申请提供一种ROS1消息的通信方法、装置和系统、转换方法和装置、存储介质,用以解决现有技术中的ROS2系统无法兼容ROS1消息,通过桥节点将ROS1消息转换为ROS2消息导致的传输负担重、传输延迟和丢包显著的问题。
根据本申请的一个方面,提供了一种ROS1消息的通信方法,包括:
ROS2节点接收一个来自ROS1节点的ROS1消息;
ROS2节点调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
ROS2节点获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
根据本申请的一个方面,提供了一种ROS1消息的转换方法,包括:
转换应用程序编程接口API响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
转换API将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
根据本申请的一个方面,提供了一种ROS1消息的通信系统,包括:
ROS1节点,用于向ROS2节点发送一个ROS1消息;
ROS2节点,用于接收来自ROS1节点的ROS1消息;调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;获取转换API返回的ROS2消息;
转换API,用于响应于来自ROS2节点的调用,获取来自该ROS2节点的ROS1消息;将获取到的ROS1消息转换为对应的ROS2消息;将转换得到的ROS2消息返回给ROS2节点。
根据本申请的一个方面,提供了一种ROS1消息的通信装置,包括一个处理器和至少一个存储器,至少一个存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令以执行:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
根据本申请的一个方面,提供了一种ROS1消息的转换装置,包括一个处理器和至少一个存储器,至少一个存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令以执行:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
根据本申请的一个方面,提供了一种非暂态机器可读存储介质,存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的通信处理,其中,ROS1消息的通信处理包括:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
根据本申请的一个方面,提供了一种非暂态机器可读存储介质,存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的转换处理,其中,ROS1消息的转换处理包括:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1为现有技术中ROS1节点和ROS2节点通信的流程图;
图2为本申请实施例提供的ROS1消息的通信系统的结构框图;
图3为本申请实施例提供的ROS1消息的通信方法的处理流程图;
图4为本申请实施例提供的ROS1消息转换方法的处理流程图;
图5为图4中步骤202的转换处理的处理流程图;
图6为图5中确定得到ROS1消息的字段名称的处理的流程图;
图7为图5中构建对应的ROS2消息的处理流程图;
图8为本申请实施例提供的一种ROS1消息的通信装置的结构框图;
图9为本申请实施例提供的ROS1消息的转换装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
目前,在ROS2系统中不能兼容ROS1消息,也即ROS2节点不能识别解析ROS1消息。ROS2系统中配置有一个桥节点(Bridge Node),ROS1节点向目的ROS2节点发送ROS1消息时,该ROS1消息会先被发送到该桥节点;桥节点根据预置的转换规则和消息结构,对接收到的ROS1消息进行转换得到对应的ROS2消息,将转换得到的ROS2消息返回给目的ROS2节点。在上述方式中,ROS1节点发送给ROS2节点的ROS1消息要经过两次传输才能被ROS2节点接收到。在ROS1节点向ROS2节点发送大量数据的情况下,大量的ROS1消息需要经过两次传输,这样会导致传输负担重、延迟和丢包显著的问题。
针对上述问题,本申请实施例提供了一种ROS1消息的通信方案、转换处理方案。在本申请提供的技术方案中,ROS2节点在接收到一条ROS1消息后,调用一个转换应用程序编程接口(Application Programming Interface,API),将接收到的ROS1消息传递给该转换API;转换API响应于来自一个ROS2节点的调用,将获取到的ROS1消息转换为对应的ROS2消息,将转换得到的ROS2消息返回给ROS2节点;ROS2节点获取与ROS1消息对应的ROS2消息。在本申请实施例提供的方案中,ROS1节点直接将ROS1消息发送给ROS2节点,ROS2节点调用一个转换API将ROS1消息转换为ROS2消息,ROS1消息不再经过两次传输才能被ROS2节点接收到,也即能够实现ROS1节点和ROS2节点之间端对端的ROS1消息传输,能够显著地降低传输量、消除消息延迟和丢包现象。
以上是本发明的核心思想,为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
本申请实施例提供了一种ROS1消息的通信系统,如图2所示,该系统包括:ROS1节点21、ROS2节点22和一个转换API 23。
ROS1节点21,用于向ROS2节点22发送一个ROS1消息;
ROS2节点22,用于接收来自ROS1节点21的ROS1消息;调用转换API23,将接收到的ROS1消息传递给转换API 23;获取转换API 23返回的ROS2消息;
转换API 23,用于响应于来自ROS2节点22的调用,获取来自该ROS2节点22的ROS1消息;将获取到的ROS1消息转换为对应的ROS2消息;将转换得到的ROS2消息返回给ROS2节点22。
在图2所示的系统中,ROS1节点直接将ROS1消息发送给ROS2节点,ROS2节点调用转换API,转换API将ROS2节点接收到的ROS1消息转换为ROS2消息,ROS1消息不再经过两次传输才能被ROS2节点接收到,也即能够实现ROS1节点和ROS2节点之间端对端的ROS1消息传输,能够显著地降低传输量、消除消息延迟和丢包现象。
图3中示出了本申请实施例提供的ROS1消息的通信方法的处理流程,也即ROS2节点的工作流程,包括:
步骤101、ROS2节点接收一个来自ROS1节点的ROS1消息;
其中,ROS1节点直接将ROS1消息发送给ROS2节点,而不是如现有技术中,ROS1节点将ROS1消息发送给ROS2系统中的桥节点;
步骤102、ROS2节点调用一个转换API,将接收到的ROS1消息传递给转换API;
步骤103、ROS2节点获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
图4示出了转换API将ROS1消息转换为ROS2消息的处理流程,也即本申请实施例提供的ROS1消息转换方法的处理流程,包括:
步骤201、转换API响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
步骤202、转换API将获取到的ROS1消息转换为对应的ROS2消息;
步骤203、转换API将转换得到的ROS2消息返回给ROS2节点。
如图5所示,上述步骤202中的转换处理可以包括如下过程:
步骤2021、解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
其中,确定对应的ROS2消息名的操作可以包括:根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则;
在转换API解析得到ROS2消息的路径名和类名后,可以加载该类,获取对应的ROS2消息的消息格式;
步骤2022、从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
如图6所示,确定得到ROS1消息的字段名称的处理可以包括:
步骤X1、转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
例如,可以解析ROS1消息得到字符串,根据解析得到的字符串以及预存的字符串与字段名称的对应关系,确定得到字段名称;
步骤X2、根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
在现有的桥节点中,需要预先定义ROS1消息转换为ROS2消息的转换规则,以及配置相关的ROS1消息的相关定义信息或者资源、ROS2消息的相关定义信息或者资源,桥节点才能够将ROS1消息转换为ROS2消息。在本申请实施例中,转换API对对象型的ROS1消息进行动态解析处理,得到消息中的字段名,并根据字段名称就可以确定得到字段内容,不需要获取或者加载ROS1消息的相关定义信息。从而对于ROS2的使用者例如开发人员,不需要了解ROS1消息的具体消息格式,只需要了解ROS2消息的消息格式即可,并在转换API中配置ROS2消息的相关资源,例如预定义的ROS2消息的包名和类名,不需要配置ROS1消息的相关定义或者资源,可以减少开发人员的工作量,提供了一种友好便捷的使用或者开发方式。
步骤2023、根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
如图7所示,构建处理可以包括:
步骤S1、根据获取的ROS2消息的消息名和消息格式,转换API构建一个空的ROS2消息;
步骤S2、将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
通过上述步骤202,转换API能够对一个ROS1消息进行解析,并根据解析结果构建得到一个对应的ROS2消息。
在另外一些实施例中,一个ROS1消息可能包括嵌套的多个子消息,在这种情况下,转换API分别对每个子消息进行转换处理,将转换后的子消息依次填充到ROS1的消息中,得到对应的包括多个子消息的ROS2消息。转换的处理如上所述,这里不再赘述。
在本申请实施例提供的技术方案中,ROS2节点直接接收来自ROS1节点的ROS1消息,ROS2节点调用一个转换API,该转换API响应于该ROS2节点的调用、将ROS2节点接收到的ROS1消息转换为ROS2消息,并将转换得到的ROS2消息返回给ROS2节点。本申请实施例的技术方案省去了现有技术中的桥节点的配置,使得ROS1节点发送给ROS2节点的ROS1消息不再通过桥节点进行二次传输,能够实现ROS1消息从ROS1节点到ROS2节点的端到端传输;在ROS1节点发送给ROS2节点的数据量非常大的情况下,能够显著地节省传输资源,消除传输延时和丢包现象。
在本申请实施例中,转换API可以是一个C++的API,也可以是一个Python的API,能够满足ROS2系统中C++节点或者Python节点的调用需求。
在另一方面,现有技术中通过桥节点进行转换ROS1消息以及消息转发,当需要对桥节点中的内容进行修改时,例如新增需要转换的ROS1消息类型,需要对修改后的桥节点进行重新编译;而本申请中只需要在转换API中直接进行修改即可,不需要进行反复编译,能够提供一种更友好和便捷的开发方式。
基于相同的发明构思,本申请实施例还提供了一种ROS1消息的通信装置。
图8示出了本申请实施例提供的一种ROS1消息的通信装置的结构,该装置包括一个处理器81和至少一个存储器82,至少一个存储器82中存储有至少一条机器可执行指令,处理器81执行至少一条机器可执行指令以执行:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
在一些实施例中,ROS2消息是转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
在一些实施例中,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
在一些实施例中,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
在一些实施例中,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
在一些实施例中,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
在一些实施例中,转换API包括C++API或者Python API。
通过图8所示的装置,能够直接接收来自ROS1节点的ROS1消息,并且通过调用一个转换API,将接收到的ROS1消息转换为ROS2消息。
基于相同的发明构思,本申请实施例还提供了一种ROS1消息的转换装置。
图9示出了本申请实施例提供的ROS1消息的转换装置的结构,该装置包括一个处理器91和至少一个存储器92,至少一个存储器92中存储有至少一条机器可执行指令,处理器91执行至少一条机器可执行指令以执行:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
在一些实施例中,处理器91执行至少一条机器可执行指令执行将获取到的ROS1消息转换为对应的ROS2消息,包括:解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
在一些实施例中,处理器91执行至少一条机器可执行指令执行根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
在一些实施例中,处理器91执行至少一条机器可执行指令执行从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
在一些实施例中,处理器91执行至少一条机器可执行指令执行根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:根据获取的ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
在一些实施例中,处理器91执行至少一条机器可执行指令还执行:在ROS1消息中包括嵌套的多个子消息的情况下,分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
根据图9所示的装置,可以根据来自ROS2节点的调用,将一个ROS1消息转换为ROS2消息,并将转换得到的ROS2消息发送给ROS2节点。
基于相同的发明构思,本申请实施例还提供了一种非暂态机器可读存储介质,该存储介质中存储有至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的通信处理,其中,ROS1消息的通信处理包括:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
在一些实施例中,ROS2消息是转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
在一些实施例中,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
在一些实施例中,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
在一些实施例中,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
在一些实施例中,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
在一些实施例中,转换API包括C++API或者Python API。
基于相同的发明构思,本申请实施例还提供了一种非暂态机器可读存储介质,该存储介质中存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的转换处理,其中,ROS1消息的转换处理包括:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
在一些实施例中,机器执行至少一条机器可执行指令执行将获取到的ROS1消息转换为对应的ROS2消息,包括:解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
在一些实施例中,机器执行至少一条机器可执行指令执行根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
在一些实施例中,机器执行至少一条机器可执行指令执行从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
在一些实施例中,机器执行至少一条机器可执行指令执行根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:根据获取的ROS2消息的消息名和消息格式,转换API构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
在一些实施例中,机器执行至少一条机器可执行指令还执行:在ROS1消息中包括嵌套的多个子消息的情况下,分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (35)
1.一种机器人操作系统ROS1消息的通信方法,其特征在于,包括:
ROS2节点接收一个来自ROS1节点的ROS1消息;
ROS2节点调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
ROS2节点获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的,转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,ROS2消息是根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
2.根据权利要求1所述的方法,其特征在于,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
3.根据权利要求1所述的方法,其特征在于,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
4.根据权利要求1所述的方法,其特征在于,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
5.根据权利要求1所述的方法,其特征在于,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
6.根据权利要求1所述的方法,其特征在于,转换API包括C++API或者Python API。
7.一种机器人操作系统ROS1消息的转换方法,其特征在于,包括:
转换应用程序编程接口API响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
转换API将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点;
其中,转换API将获取到的ROS1消息转换为对应的ROS2消息,包括:
转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
8.根据权利要求7所述的方法,其特征在于,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:
根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
9.根据权利要求7所述的方法,其特征在于,从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:
转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
10.根据权利要求7所述的方法,其特征在于,根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:
根据获取的ROS2消息的消息名和消息格式,转换API构建一个空的ROS2消息;
将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
11.根据权利要求7所述的方法,其特征在于,还包括:
在ROS1消息中包括嵌套的多个子消息的情况下,转换API分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
12.根据权利要求7所述的方法,其特征在于,转换API包括C++API或者Python API。
13.一种ROS1消息的通信系统,其特征在于,包括:
ROS1节点,用于向ROS2节点发送一个ROS1消息;
ROS2节点,用于接收来自ROS1节点的ROS1消息;调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;获取转换API返回的ROS2消息;
转换API,用于响应于来自ROS2节点的调用,获取来自该ROS2节点的ROS1消息;将获取到的ROS1消息转换为对应的ROS2消息;将转换得到的ROS2消息返回给ROS2节点;
其中,转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,ROS2消息是根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
14.一种机器人操作系统ROS1消息的通信装置,其特征在于,包括一个处理器和至少一个存储器,至少一个存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令以执行:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的,转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,ROS2消息是根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
15.根据权利要求14所述的装置,其特征在于,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
16.根据权利要求14所述的装置,其特征在于,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
17.根据权利要求14所述的装置,其特征在于,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
18.根据权利要求14所述的装置,其特征在于,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
19.根据权利要求14所述的装置,其特征在于,转换API包括C++API或者Python API。
20.一种机器人操作系统ROS1消息的转换装置,其特征在于,包括一个处理器和至少一个存储器,至少一个存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令以执行:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点;
其中,处理器执行至少一条机器可执行指令执行将获取到的ROS1消息转换为对应的ROS2消息,包括:
解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
21.根据权利要求20所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:
根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
22.根据权利要求20所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:
解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
23.根据权利要求20所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:
根据获取的ROS2消息的消息名和消息格式,构建一个空的ROS2消息;
将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
24.根据权利要求20所述的装置,其特征在于,处理器执行至少一条机器可执行指令还执行:
在ROS1消息中包括嵌套的多个子消息的情况下,分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
25.一种非暂态机器可读存储介质,其特征在于,存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的通信处理,其中,ROS1消息的通信处理包括:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的,转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,ROS2消息是根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
26.根据权利要求25所述的存储介质,其特征在于,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
27.根据权利要求25所述的存储介质,其特征在于,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
28.根据权利要求25所述的存储介质,其特征在于,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
29.根据权利要求25所述的存储介质,其特征在于,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
30.根据权利要求25所述的存储介质,其特征在于,转换API包括C++API或者PythonAPI。
31.一种非暂态机器可读存储介质,其特征在于,存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的转换处理,其中,ROS1消息的转换处理包括:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点;
其中,机器执行至少一条机器可执行指令执行将获取到的ROS1消息转换为对应的ROS2消息,包括:
解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
32.根据权利要求31所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:
根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
33.根据权利要求31所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:
解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
34.根据权利要求31所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:
根据获取的ROS2消息的消息名和消息格式,转换API构建一个空的ROS2消息;
将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
35.根据权利要求31所述的存储介质,其特征在于,机器执行至少一条机器可执行指令还执行:
在ROS1消息中包括嵌套的多个子消息的情况下,分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811377764.7A CN111198770B (zh) | 2018-11-19 | 2018-11-19 | Ros1消息的通信方法、装置和系统、转换方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811377764.7A CN111198770B (zh) | 2018-11-19 | 2018-11-19 | Ros1消息的通信方法、装置和系统、转换方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111198770A CN111198770A (zh) | 2020-05-26 |
CN111198770B true CN111198770B (zh) | 2023-06-20 |
Family
ID=70743799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811377764.7A Active CN111198770B (zh) | 2018-11-19 | 2018-11-19 | Ros1消息的通信方法、装置和系统、转换方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111198770B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134361B (zh) * | 2022-06-20 | 2024-04-26 | 中汽创智科技有限公司 | 一种自动驾驶软件平台的跨平台通信方法及装置 |
CN115473863B (zh) * | 2022-07-25 | 2023-08-08 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及系统 |
CN116431220B (zh) * | 2023-06-14 | 2023-08-18 | 青岛鑫晟汇科技有限公司 | 一种基于数据分布式指令集的多系统架构互通系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1414211A1 (en) * | 2002-10-23 | 2004-04-28 | Sony International (Europe) GmbH | Software architecture for capability and quality-of-service negotiations and session establishment for distributed multimedia applications |
WO2014061516A1 (ja) * | 2012-10-19 | 2014-04-24 | 国立大学法人東京大学 | 異なるタイプのロボットミドルウェア間を連携する変換モジュールの生成方法及び装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10505881B2 (en) * | 2015-09-23 | 2019-12-10 | Amazon Technologies, Inc. | Generating message envelopes for heterogeneous events |
CN108027739A (zh) * | 2015-09-25 | 2018-05-11 | 英特尔公司 | 共享iot资源的异构分布式运行时代码 |
-
2018
- 2018-11-19 CN CN201811377764.7A patent/CN111198770B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1414211A1 (en) * | 2002-10-23 | 2004-04-28 | Sony International (Europe) GmbH | Software architecture for capability and quality-of-service negotiations and session establishment for distributed multimedia applications |
WO2014061516A1 (ja) * | 2012-10-19 | 2014-04-24 | 国立大学法人東京大学 | 異なるタイプのロボットミドルウェア間を連携する変換モジュールの生成方法及び装置 |
Non-Patent Citations (1)
Title |
---|
基于ROS的智能工业机器人系统开发平台;刘凤;杨东升;廉梦佳;张展;王丽娜;;计算机系统应用(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111198770A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111198770B (zh) | Ros1消息的通信方法、装置和系统、转换方法和装置 | |
US7237230B2 (en) | System and method for generating data sets for testing embedded systems | |
CN110187912B (zh) | 一种节点选择方法和装置 | |
CN102810069A (zh) | 一种java对象的请求和响应方法、装置、系统和终端 | |
CN103747004A (zh) | 物联网平台通信协议的实现方法 | |
CN107818023B (zh) | 基于线程的消息处理方法、智能设备及存储介质 | |
CN111026634A (zh) | 一种接口自动化测试系统、方法、装置及存储介质 | |
US10715628B2 (en) | Attribute operating method and device | |
CN113626225B (zh) | 程序调用方法、终端设备及介质 | |
KR102123750B1 (ko) | 네트워크 서비스 요청 | |
CN105516322A (zh) | 一种基于http协议的接口测试方法及装置 | |
WO2023083071A1 (zh) | 视图交互方法、装置、电子设备及计算机可读介质 | |
CN114500510B (zh) | 请求信息响应方法、装置、通信设备及存储介质 | |
WO2021057351A1 (zh) | 在glibc环境下控制安卓蓝牙的装置、方法及终端设备 | |
CN112925658A (zh) | 一种桥接方法及装置 | |
CN115134361B (zh) | 一种自动驾驶软件平台的跨平台通信方法及装置 | |
KR100716169B1 (ko) | 네트워크 관리 시스템에서의 메시지 처리 장치 및 방법 | |
CN111078571A (zh) | 模拟响应的测试方法、终端设备及计算机可读存储介质 | |
US20040088395A1 (en) | Method for probing a server | |
CN110569069A (zh) | 一种配置管理方法、配置管理系统及具有存储功能的装置 | |
CN112732677B (zh) | 区块链节点部署方法、装置、设备及存储介质 | |
CN111711660B (zh) | 电子设备间通信的方法、装置、设备及存储介质 | |
CN116483366A (zh) | 业务数据的传输方法和装置、存储介质及电子设备 | |
CN113032010B (zh) | 命令的传输控制方法、终端及计算机可读存储介质 | |
KR101398959B1 (ko) | 플러그인을 이용한 인터페이스 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |