CN111198770A - Ros1消息的通信方法、装置和系统、转换方法和装置 - Google Patents

Ros1消息的通信方法、装置和系统、转换方法和装置 Download PDF

Info

Publication number
CN111198770A
CN111198770A CN201811377764.7A CN201811377764A CN111198770A CN 111198770 A CN111198770 A CN 111198770A CN 201811377764 A CN201811377764 A CN 201811377764A CN 111198770 A CN111198770 A CN 111198770A
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.)
Granted
Application number
CN201811377764.7A
Other languages
English (en)
Other versions
CN111198770B (zh
Inventor
姜子悦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Tusimple Technology Co Ltd
Original Assignee
Beijing Tusimple Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Tusimple Technology Co Ltd filed Critical Beijing Tusimple Technology Co Ltd
Priority to CN201811377764.7A priority Critical patent/CN111198770B/zh
Publication of CN111198770A publication Critical patent/CN111198770A/zh
Application granted granted Critical
Publication of CN111198770B publication Critical patent/CN111198770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total 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消息的通信方法、装置和系统、转换方法和装置
技术领域
本发明涉及机器人领域,特别涉及一种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 (41)

1.一种机器人操作系统ROS1消息的通信方法,其特征在于,包括:
ROS2节点接收一个来自ROS1节点的ROS1消息;
ROS2节点调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
ROS2节点获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
2.根据权利要求1所述的方法,其特征在于,ROS2消息是转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
3.根据权利要求2所述的方法,其特征在于,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
4.根据权利要求2所述的方法,其特征在于,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
5.根据权利要求2所述的方法,其特征在于,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
6.根据权利要求2所述的方法,其特征在于,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
7.根据权利要求1所述的方法,其特征在于,转换API包括C++API或者Python API。
8.一种机器人操作系统ROS1消息的转换方法,其特征在于,包括:
转换应用程序编程接口API响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
转换API将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
9.根据权利要求8所述的方法,其特征在于,转换API将获取到的ROS1消息转换为对应的ROS2消息,包括:
转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
10.根据权利要求9所述的方法,其特征在于,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:
根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
11.根据权利要求9所述的方法,其特征在于,从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:
转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
12.根据权利要求9所述的方法,其特征在于,根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:
根据获取的ROS2消息的消息名和消息格式,转换API构建一个空的ROS2消息;
将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
13.根据权利要求8所述的方法,其特征在于,还包括:
在ROS1消息中包括嵌套的多个子消息的情况下,转换API分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
14.根据权利要求8所述的方法,其特征在于,转换API包括C++API或者Python API。
15.一种ROS1消息的通信系统,其特征在于,包括:
ROS1节点,用于向ROS2节点发送一个ROS1消息;
ROS2节点,用于接收来自ROS1节点的ROS1消息;调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;获取转换API返回的ROS2消息;
转换API,用于响应于来自ROS2节点的调用,获取来自该ROS2节点的ROS1消息;将获取到的ROS1消息转换为对应的ROS2消息;将转换得到的ROS2消息返回给ROS2节点。
16.一种机器人操作系统ROS1消息的通信装置,其特征在于,包括一个处理器和至少一个存储器,至少一个存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令以执行:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
17.根据权利要求16所述的装置,其特征在于,ROS2消息是转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
18.根据权利要求17所述的装置,其特征在于,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
19.根据权利要求17所述的装置,其特征在于,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
20.根据权利要求17所述的装置,其特征在于,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
21.根据权利要求17所述的装置,其特征在于,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
22.根据权利要求16所述的装置,其特征在于,转换API包括C++API或者Python API。
23.一种机器人操作系统ROS1消息的转换装置,其特征在于,包括一个处理器和至少一个存储器,至少一个存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令以执行:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
24.根据权利要求23所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行将获取到的ROS1消息转换为对应的ROS2消息,包括:
解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
25.根据权利要求24所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:
根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
26.根据权利要求24所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:
解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
27.根据权利要求24所述的装置,其特征在于,处理器执行至少一条机器可执行指令执行根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:
根据获取的ROS2消息的消息名和消息格式,构建一个空的ROS2消息;
将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
28.根据权利要求23所述的装置,其特征在于,处理器执行至少一条机器可执行指令还执行:
在ROS1消息中包括嵌套的多个子消息的情况下,分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
29.一种非暂态机器可读存储介质,其特征在于,存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的通信处理,其中,ROS1消息的通信处理包括:
接收一个来自ROS1节点的ROS1消息;
调用一个转换应用程序编程接口API,将接收到的ROS1消息传递给转换API;
获取转换API返回的ROS2消息;其中,该ROS2消息是转换API对来自ROS2节点的ROS1消息进行转换得到的。
30.根据权利要求29所述的存储介质,其特征在于,ROS2消息是转换API解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构,从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容,根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容构建得到的。
31.根据权利要求30所述的存储介质,其特征在于,ROS2消息名是转换API根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名确定得到的,消息名规则中包括消息路径规则和类规则。
32.根据权利要求30所述的存储介质,其特征在于,ROS1消息中的字段内容是转换API解析获取到的ROS1消息,确定得到ROS1消息的字段名称;根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,从对应的ROS1消息的字段名称所指的字段中确定得到的。
33.根据权利要求30所述的存储介质,其特征在于,ROS2消息是转换API根据ROS2消息的消息名和消息格式,构建一个空的ROS2消息;将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中得到的。
34.根据权利要求30所述的存储介质,其特征在于,在ROS1消息中包括嵌套的多个子消息的情况下,ROS2消息中包括转换得到的对应的多个子消息。
35.根据权利要求29所述的存储介质,其特征在于,转换API包括C++API或者PythonAPI。
36.一种非暂态机器可读存储介质,其特征在于,存储至少一条机器可执行指令,机器执行至少一条机器可执行指令以执行ROS1消息的转换处理,其中,ROS1消息的转换处理包括:
响应于来自一个ROS2节点的调用,获取来自该ROS2节点的ROS1消息;
将获取到的ROS1消息转换为对应的ROS2消息;
将转换得到的ROS2消息返回给ROS2节点。
37.根据权利要求36所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行将获取到的ROS1消息转换为对应的ROS2消息,包括:
解析获取到的ROS1消息确定得到ROS1消息的消息名,根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,获取与ROS2消息名对应的ROS2消息的消息结构;
从ROS1消息中解析出与ROS2消息的消息结构中的字段对应的字段内容;
根据ROS2消息的消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息。
38.根据权利要求37所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行根据预存的消息名规则确定得到与ROS1消息的消息名对应的ROS2消息名,包括:
根据预存的ROS1消息的消息名规则和ROS2消息的消息名规则的对应关系、以及解析得到的ROS1消息的消息名,确定得到对应的ROS2消息名;其中消息名规则中包括消息路径规则和类规则。
39.根据权利要求37所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行从ROS1消息中解析出与ROS2消息结构中的字段对应的字段内容,包括:
解析获取到的ROS1消息,确定得到ROS1消息的字段名称;
根据ROS2消息结构中的字段名称,确定与ROS2消息结构的字段名称对应的ROS1消息的字段名称,确定得到对应的ROS1消息字段名称所指的字段中的字段内容。
40.根据权利要求37所述的存储介质,其特征在于,机器执行至少一条机器可执行指令执行根据ROS2消息名和消息结构、以及解析得到的对应的ROS1消息的字段内容,构建得到对应的ROS2消息,包括:
根据获取的ROS2消息的消息名和消息格式,转换API构建一个空的ROS2消息;
将解析得到的对应的ROS1消息中的字段内容,填充到构建的ROS2消息中对应的字段中,得到对应的ROS2消息。
41.根据权利要求36所述的存储介质,其特征在于,机器执行至少一条机器可执行指令还执行:
在ROS1消息中包括嵌套的多个子消息的情况下,分别对每个子消息进行转换,得到对应的包括多个子消息的ROS2消息。
CN201811377764.7A 2018-11-19 2018-11-19 Ros1消息的通信方法、装置和系统、转换方法和装置 Active CN111198770B (zh)

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 true CN111198770A (zh) 2020-05-26
CN111198770B 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)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134361A (zh) * 2022-06-20 2022-09-30 中汽创智科技有限公司 一种自动驾驶软件平台的跨平台通信方法及装置
CN115473863A (zh) * 2022-07-25 2022-12-13 山东新一代信息产业技术研究院有限公司 一种ros与iros的消息桥接方法及系统
CN116431220A (zh) * 2023-06-14 2023-07-14 青岛鑫晟汇科技有限公司 一种基于数据分布式指令集的多系统架构互通系统

Citations (4)

* Cited by examiner, † Cited by third party
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 国立大学法人東京大学 異なるタイプのロボットミドルウェア間を連携する変換モジュールの生成方法及び装置
US20170085512A1 (en) * 2015-09-23 2017-03-23 Amazon Technologies, Inc. Generating message envelopes for heterogeneous events
US20180275978A1 (en) * 2015-09-25 2018-09-27 Intel Corporation Heterogeneous distributed runtime code that shares iot resources

Patent Citations (4)

* Cited by examiner, † Cited by third party
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 国立大学法人東京大学 異なるタイプのロボットミドルウェア間を連携する変換モジュールの生成方法及び装置
US20170085512A1 (en) * 2015-09-23 2017-03-23 Amazon Technologies, Inc. Generating message envelopes for heterogeneous events
US20180275978A1 (en) * 2015-09-25 2018-09-27 Intel Corporation Heterogeneous distributed runtime code that shares iot resources

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘凤;杨东升;廉梦佳;张展;王丽娜;: "基于ROS的智能工业机器人系统开发平台", 计算机系统应用 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134361A (zh) * 2022-06-20 2022-09-30 中汽创智科技有限公司 一种自动驾驶软件平台的跨平台通信方法及装置
CN115134361B (zh) * 2022-06-20 2024-04-26 中汽创智科技有限公司 一种自动驾驶软件平台的跨平台通信方法及装置
CN115473863A (zh) * 2022-07-25 2022-12-13 山东新一代信息产业技术研究院有限公司 一种ros与iros的消息桥接方法及系统
CN115473863B (zh) * 2022-07-25 2023-08-08 山东新一代信息产业技术研究院有限公司 一种ros与iros的消息桥接方法及系统
CN116431220A (zh) * 2023-06-14 2023-07-14 青岛鑫晟汇科技有限公司 一种基于数据分布式指令集的多系统架构互通系统
CN116431220B (zh) * 2023-06-14 2023-08-18 青岛鑫晟汇科技有限公司 一种基于数据分布式指令集的多系统架构互通系统

Also Published As

Publication number Publication date
CN111198770B (zh) 2023-06-20

Similar Documents

Publication Publication Date Title
US7171672B2 (en) Distributed application proxy generator
CN110365751B (zh) 网关系统的业务处理方法、装置及设备
CN111198770B (zh) Ros1消息的通信方法、装置和系统、转换方法和装置
CN110187912B (zh) 一种节点选择方法和装置
US20020002605A1 (en) Server/client system and program for implementing application distribution in this server/client system
US20110238851A1 (en) Soap Client Protocol Encapsulation Based on TCP
US20070106998A1 (en) Mobility system and method for messaging and inter-process communication
CN102810069A (zh) 一种java对象的请求和响应方法、装置、系统和终端
CN110806945B (zh) 接口对接方法、装置和计算机可读介质
CN111026634A (zh) 一种接口自动化测试系统、方法、装置及存储介质
US11915034B2 (en) Sidecar-based integration capabilities for containerized applications
CN114416075A (zh) 业务处理方法及装置
CN113626225B (zh) 程序调用方法、终端设备及介质
US20070106722A1 (en) Non-persistent and persistent information setting method and system for inter-process communication
CN105516322A (zh) 一种基于http协议的接口测试方法及装置
CN113179269A (zh) 基于物联网的协议数据解析方法、系统、介质及程序产品
US10268496B2 (en) System and method for supporting object notation variables in a process defined by a process execution language for execution in a SOA middleware environment
WO2023083071A1 (zh) 视图交互方法、装置、电子设备及计算机可读介质
CN112035270A (zh) 接口适配方法、系统、装置、计算机可读介质及电子设备
CN115756899A (zh) 一种支持IROS自定义消息类型的irosBridge实现方法
CN115629976A (zh) 一种内核测试方法、装置和存储介质
CN112905273A (zh) 一种服务调用方法和装置
CN112925658A (zh) 一种桥接方法及装置
CN115134361B (zh) 一种自动驾驶软件平台的跨平台通信方法及装置
CN112559199A (zh) 在glibc环境下控制安卓蓝牙的装置、方法及终端设备

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