CN115134361B - 一种自动驾驶软件平台的跨平台通信方法及装置 - Google Patents
一种自动驾驶软件平台的跨平台通信方法及装置 Download PDFInfo
- Publication number
- CN115134361B CN115134361B CN202210697726.XA CN202210697726A CN115134361B CN 115134361 B CN115134361 B CN 115134361B CN 202210697726 A CN202210697726 A CN 202210697726A CN 115134361 B CN115134361 B CN 115134361B
- Authority
- CN
- China
- Prior art keywords
- message
- communication middleware
- communication
- topic
- middleware
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013507 mapping Methods 0.000 claims abstract description 88
- 230000006870 function Effects 0.000 claims description 14
- 238000000354 decomposition reaction Methods 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/06—Message adaptation to terminal or network requirements
- H04L51/066—Format adaptation, e.g. format conversion or compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种自动驾驶软件平台的跨平台通信方法及装置,涉及自动驾驶技术领域。具体方案包括:接收第一通信中间件的发送端发送的第一数据格式的第一消息;解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端;将解析后的第一消息封装为第二数据格式的第二消息;根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端;通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。本发明实现了不同自动驾驶软件平台之间的实时通信,实现方式简单,易于扩展且成本较低。
Description
技术领域
本发明涉及自动驾驶技术领域,尤其涉及一种自动驾驶软件平台的跨平台通信方法及装置。
背景技术
在自动驾驶技术领域中,主流的开源自动驾驶软件平台有Autoware平台和阿波罗(Apollo)平台。Autoware平台和Apollo平台均提供了大量的与自动驾驶相关的算法。其中,Autoware平台采用机器人操作系统(Robot Operating System,ROS)平台作为其内部的分布式通信的通信中间件,Apollo平台则采用CyberRt平台作为其内部的分布式通信的通信中间件。由于这两种自动驾驶软件平台采用的通信中间件不同,使得两者之间无法实现实时通信,无法共享各自的算法给对方。
现有技术中普遍的做法是按照Autoware平台提供的接口重写Apollo平台中的算法,或按照Apollo平台提供的接口重写Autoware平台中的算法,以使得Autoware平台和Apollo平台能够实现实时通信。但是,这种重写方式复杂,工作量大且不易扩展,导致实现Autoware平台和Apollo平台之间实时通信的成本较高。
发明内容
本发明提供一种自动驾驶软件平台的跨平台通信方法及装置,能够实现自动驾驶软件平台的跨平台通信,实现方式简单,易于扩展且成本较低。
为达到上述目的,本发明采用如下技术方案:
第一方面,本发明提供一种自动驾驶软件平台的跨平台通信方法,该方法包括:
接收第一通信中间件的发送端发送的第一数据格式的第一消息,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应;
解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端;
将解析后的第一消息封装为第二数据格式的第二消息;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应;
根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端,话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系;
通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
在一种可能的实现方式中,通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息,包括:确定第一通信中间件的接收端对应的第一回调函数;根据第一回调函数,调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
在一种可能的实现方式中,根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端,包括:根据第一通信中间件的发送端和话题映射关系,确定第一通信中间件的接收端;根据第一消息话题和话题映射关系,确定第一消息话题对应的第二消息话题对应的第二通信中间件的发送端;添加第一通信中间件的接收端,并添加第二通信中间件的发送端。
在一种可能的实现方式中,第一通信中间件为机器人操作系统,第一数据格式为msg格式,第一自动驾驶软件平台为Autoware;第二通信中间件为CyberRT,第二数据格式为协议缓冲区格式,第二自动驾驶软件平台为Apollo。
在一种可能的实现方式中,将解析后的第一消息封装为第二数据格式的第二消息,包括:对解析后的第一消息的每个字段进行分解,直至分解后的每个字段的类型均为msg格式的基础类型;根据预设的映射表,确定分解后的每个字段的msg格式的基础类型对应的protobuf格式的基础类型;将分解后的每个字段分别转化为protobuf格式的基础类型下的字段。
在一种可能的实现方式中,自动驾驶软件平台的跨平台通信方法还包括:重新编译第一通信中间件,编译后的第一通信中间件支持第二数据格式的消息传输。
在一种可能的实现方式中,自动驾驶软件平台的跨平台通信方法还包括:接收第二通信中间件的发送端发送的第二数据格式的第三消息,第三消息中包括第二消息话题;解析第三消息,得到第三消息中的第二消息话题,并确定第三消息的消息来源为第二通信中间件的发送端;根据第二通信中间件的发送端、第二消息话题和预存的话题映射关系,确定第二通信中间件的接收端和第一通信中间件的发送端;通过第二通信中间件的接收端调用第一通信中间件的发送端向第一通信中间件的接收端发送第三消息。
第二方面,本发明提供一种自动驾驶软件平台的跨平台通信装置,包括:
接收模块,用于接收第一通信中间件的发送端发送的第一数据格式的第一消息,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应;
解析模块,用于解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端;
封装模块,用于将解析后的第一消息封装为第二数据格式的第二消息;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应;
确定模块,用于根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端,话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系;
发送模块,用于通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
在一种可能的实现方式中,发送模块,具体用于:确定第一通信中间件的接收端对应的第一回调函数;根据第一回调函数,调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
在一种可能的实现方式中,确定模块,具体用于:根据第一通信中间件的发送端和话题映射关系,确定第一通信中间件的接收端;根据第一消息话题和话题映射关系,确定第一消息话题对应的第二消息话题对应的第二通信中间件的发送端;添加第一通信中间件的接收端,并添加第二通信中间件的发送端。
在一种可能的实现方式中,第一通信中间件为机器人操作系统,第一数据格式为msg格式,第一自动驾驶软件平台为Autoware;第二通信中间件为CyberRT,第二数据格式为协议缓冲区格式,第二自动驾驶软件平台为Apollo。
在一种可能的实现方式中,封装模块,具体用于:对解析后的第一消息的每个字段进行分解,直至分解后的每个字段的类型均为msg格式的基础类型;根据预设的映射表,确定分解后的每个字段的msg格式的基础类型对应的protobuf格式的基础类型;将分解后的每个字段分别转化为protobuf格式的基础类型下的字段。
在一种可能的实现方式中,自动驾驶软件平台的跨平台通信装置还包括编译模块,编译模块用于:重新编译第一通信中间件,编译后的第一通信中间件支持第二数据格式的消息传输。
在一种可能的实现方式中,接收模块,还用于接收第二通信中间件的发送端发送的第二数据格式的第三消息,第三消息中包括第二消息话题;解析模块,还用于解析第三消息,得到第三消息中的第二消息话题,并确定第三消息的消息来源为第二通信中间件的发送端;确定模块,还用于根据第二通信中间件的发送端、第二消息话题和预存的话题映射关系,确定第二通信中间件的接收端和第一通信中间件的发送端;发送模块,还用于通过第二通信中间件的接收端调用第一通信中间件的发送端向第一通信中间件的接收端发送第三消息。
第三方面,本发明提供一种计算机设备,该计算机设备包括:处理器和存储器。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处理器执行计算机指令时,计算机设备执行如第一方面及其任一种可能的实现方式的自动驾驶软件平台的跨平台通信方法。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机指令,当计算机指令在计算机设备上运行时,使得计算机设备执行如第一方面及其任一种可能的实现方式的自动驾驶软件平台的跨平台通信方法。
第五方面,本发明提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机设备上运行时,使得计算机设备执行如第一方面及其任一种可能的实现方式的自动驾驶软件平台的跨平台通信方法。
本发明实施例提供的自动驾驶软件平台的跨平台通信方法,接收第一通信中间件的发送端发送的第一数据格式的第一消息;解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端;将解析后的第一消息封装为第二数据格式的第二消息;根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端;通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。其中,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应;话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系。这样,通过配置不同自动驾驶软件平台之间的话题映射关系并统一消息格式,实现了不同自动驾驶软件平台之间的实时通信,实现方式简单,易于扩展且成本较低。
附图说明
图1为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的应用场景示意图;
图2为本发明实施例提供的ROS和CyberRT的内部消息传递示意图;
图3为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的平台交互示意图;
图4为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的流程示意图之一;
图5为本发明实施例提供的msg格式和protobuf格式的基本数据类型映射表;
图6为本发明实施例提供的话题映射关系示意图;
图7为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的流程示意图之二;
图8为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的流程示意图之三;
图9为本发明实施例提供的一种自动驾驶软件平台的跨平台通信装置的组成示意图之一;
图10为本发明实施例提供的一种自动驾驶软件平台的跨平台通信装置的组成示意图之二。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。另外,“基于”或“根据”的使用意味着开放和包容性,因为“基于”或“根据”一个或多个所述条件或值的过程、步骤、计算或其他动作在实践中可以基于额外条件或超出所述的值。
为了实现了不同自动驾驶软件平台之间的实时通信,本发明实施例提供了一种自动驾驶软件平台的跨平台通信方法及装置,接收第一通信中间件的发送端发送的第一数据格式的第一消息;解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端;将解析后的第一消息封装为第二数据格式的第二消息;根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端;通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。其中,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应;话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系。这样,通过配置不同自动驾驶软件平台之间的话题映射关系并统一消息格式,实现了不同自动驾驶软件平台之间的实时通信,实现方式简单,易于扩展且成本较低。
本发明实施例提供的自动驾驶软件平台的跨平台通信方法的执行主体为能够实现网络互联的计算机设备,该计算机设备可以是服务器或服务器集群。本发明实施例中以执行主体为服务器为例对本发明实施例中的自动驾驶软件平台的跨平台通信方法进行介绍。
图1为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的应用场景示意图。如图1所示,第一车辆01和第二车辆02可以是搭载有不同类型的自动驾驶软件平台的车辆,服务器03可以分别与第一车辆01和第二车辆02进行通信,服务器03中可以搭载有通信桥接平台,通信桥接平台在第一车辆01和第二车辆02中搭载的不同类型的自动驾驶软件平台中间起到桥接作用。
具体的,第一车辆01中可以搭载第一自动驾驶软件平台,第一自动驾驶软件平台内部可以通过开源的第一通信中间件实时通信,第一通信中间件通信时使用的消息格式为第一数据格式。
第二车辆02中可以搭载第二自动驾驶软件平台,第二自动驾驶软件平台内部可以通过开源的第二通信中间件实时通信,第二通信中间件通信时使用的消息格式为第二数据格式。
在一种可能的实现方式中,第一自动驾驶软件平台可以为Autoware,第一通信中间件为ROS,第一数据格式为msg格式;第二自动驾驶软件平台为Apollo,第二通信中间件为CyberRT,第二数据格式为protobuf。
图2为ROS和CyberRT的内部消息传递示意图,如图2所示,在ROS中,NodeA表示其内部的结点A,Node B表示其内部的结点B,Publisher表示ROS的发送端,Subscriber表示ROS的接收端,Topic X表示消息话题为X,X.msg表示消息话题为X且数据格式为msg格式的第一消息的消息文件。在CyberRT中,Node C表示其内部的结点C,Node D表示其内部的结点D,Writer表示CyberRT的发送端,Reader表示CyberRT的接收端,TopicY表示消息话题为Y,Y.protobuf表示消息话题为Y且数据格式为protobuf格式的第二消息的消息文件。可以理解的是,两个通信中间件各自实现内部结点通信都必须保证结点发送端和接收端对应的Topic一致。
基于图1和图2,图3为本发明实施例提供的一种自动驾驶软件平台的跨平台通信方法的平台交互示意图。如图3所示,CyberRT_ROS_Bridge表示CyberRT和ROS之间的通信桥接平台,CyberRT_Reader表示通信桥接平台中添加的CyberRT的接收端Reader,ROS_Publisher表示通信桥接平台中添加的ROS的发送端Publisher,CyberRT_Writer表示通信桥接平台中添加的CyberRT的发送端Writer,ROS_Subscriber表示通信桥接平台中添加的ROS的接受端Subscriber,callback表示回调函数。
在具体的消息传递过程中,当ROS向CyberRT发送消息时,CyberRT和ROS之间的通信桥接平台可以接收ROS的发送端发送的msg格式的第一消息,解析第一消息后,得到第一消息中的第一消息话题,并确定ROS的发送端Publisher,而后将解析后的第一消息封装为protobuf格式的第二消息,并根据ROS的发送端Publisher、第一消息话题和预存的话题映射关系,确定并添加ROS的接收端Subscriber和CyberRT的发送端Writer,最后通过ROS的接收端Subscriber调用CyberRT的发送端Writer向CyberRT的接收端Reader发送第二消息。当CyberRT向ROS发送消息时,消息传递的过程与上述过程同理,在此不作赘述。
基于图1、图2和图3,图4示出了一种自动驾驶软件平台的跨平台通信方法的流程示意图之一。如图4所示,该方法可以包括以下步骤S401-步骤S405。
S401、服务器接收第一通信中间件的发送端发送的第一数据格式的第一消息,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应。
其中,消息话题可以用于指示消息的种类,在一个通信中间件中,同一种类型的消息归为同一消息话题。
可以理解的是,第一自动驾驶软件平台内部节点可以通过第一通信中间件来进行实时通信,第一通信中间件使用的消息格式为第一数据格式。
具体的,服务器可以接收第一通信中间件的发送端发送的第一数据格式的第一消息,其中,第一消息中包括第一消息话题,第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应。
S402、服务器解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端。
可以理解的是,服务器可以通过对第一消息进行解析,得到第一消息对应的消息内容和消息来源。
具体的,服务器在接收到第一消息后,可以解析第一消息,得到第一消息中的第一消息话题,并确定第一消息的消息来源为第一通信中间件的发送端。
S403、服务器将解析后的第一消息封装为第二数据格式的第二消息;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应。
可以理解的是,第二自动驾驶软件平台内部节点可以通过第二通信中间件来进行实时通信,第二通信中间件使用的消息格式为第二数据格式。
具体的,服务器可以将解析后的第一消息重新封装为第二数据格式的第二消息,以支持与第二通信中间件进行消息传递。其中,第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应。
在一种可能的实现方式中,当第一数据格式为msg格式,第二数据格式为protobuf时,服务器可以对解析后的第一消息的每个字段进行分解,直至分解后的每个字段的类型均为msg格式的基础类型,而后根据预设的映射表,确定分解后的每个字段的msg格式的基础类型对应的protobuf格式的基础类型,并将分解后的每个字段分别转化为protobuf格式的基础类型下的字段。示例性的,预设的映射表可以是如图5所示的msg格式和protobuf格式的基本数据类型映射表。
进一步地,第一通信中间件可以是重新编译过的,编译后的第一通信中间件支持第二数据格式的消息传输。
示例性的,重写ROS平台的CMakeLists.txt文件,使ROS平台的消息传递基于protobuf文件。
S404、服务器根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端,话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系。
可以理解的是,话题映射关系可以指示在同一种类型的消息话题下,第一通信中间件和第二通信中间件之间的消息转换关系,具体可以包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系。
为了便于理解,基于图2,现通过图6对本发明实施例中的话题映射关系进行说明。图6为话题映射关系示意图,如图6所示,在一种通信中间件中,同一种类型的消息归为同一消息话题。也就是说,在不同通信中间件中,同一种类型的消息会被归为两种不同的消息话题,如第一消息话题Topic X与第一消息话题TopicY。在此基础上,通过构建Topic X与TopicY之间的映射关系,可以构建出第一通信中间件的发送端、第一通信中间件的接受端、第一消息话题、第二通信中间件的发送端、第二通信中间件的接受端以及第二消息话题之间的映射关系,使得服务器能够根据消息的来源和消息话题,确定出所需要添加的接收端和发送端的类型,从而实现消息的跨平台转发。
在一种可能的实现方式中,可以通过创建topics.xml文件,定义Apollo平台和Autoware平台间需要转换的话题映射关系,格式如下:
其中,<Apollo>节点下每个<Map>元素表示了一组Apollo平台为发送端和Autoware平台为接收端的消息转换对,<OutputTopic>表示发送的消息话题,<InputTopic>为接收的消息话题,<Output_Topic_Name>和<msg_type>分别表示消息话题的名称和对应的消息类型。<Autoware>节点同理。
具体的,服务器可以根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端。其中,话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系。
S405、服务器通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
可以理解的是,在通信桥接平台中,第一通信中间件的接收端的回调函数中调用第二通信中间件的发送方法;第二通信中间件的接收端的回调函数中调用第一通信中间件的发送方法。
具体的,服务器可以通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
在一种可能的实现方式中,服务器可以确定第一通信中间件的接收端对应的第一回调函数,并根据第一回调函数,调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
本实施例中,服务器接收第一通信中间件的发送端发送的第一数据格式的第一消息,解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端,而后将解析后的第一消息封装为第二数据格式的第二消息,并根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端,且通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。其中,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应;话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系。这样,通过配置不同自动驾驶软件平台之间的话题映射关系并统一消息格式,实现了不同自动驾驶软件平台之间的实时通信,实现方式简单,易于扩展且成本较低。
可选的,基于图4,图7示出了一种自动驾驶软件平台的跨平台通信方法的流程示意图之二。如图7所示,上述步骤S404,包括:
S701、服务器根据第一通信中间件的发送端和话题映射关系,确定第一通信中间件的接收端。
可以理解的是,第一通信中间件的发送端和第一通信中间件的接收端均与话题映射关系中的第一消息话题关联。
具体的,服务器可以根据第一通信中间件的发送端和话题映射关系,确定第一通信中间件的接收端。
S702、服务器根据第一消息话题和话题映射关系,确定第一消息话题对应的第二消息话题对应的第二通信中间件的发送端。
可以理解的是,在话题映射关系中,第一消息话题与第二消息话题关联,且第二通信中间件的发送端与第二消息话题关联。
具体的,服务器可以根据第一消息话题和话题映射关系,确定第一消息话题对应的第二消息话题对应的第二通信中间件的发送端。
S703、服务器添加第一通信中间件的接收端,并添加第二通信中间件的发送端。
具体的,服务器可以添加第一通信中间件的接收端,用于接收第一通信中间件的发送端发出的第一消息,还可以添加第二通信中间件的发送端,用于向第二通信中间件的接收端发送第一消息。
本实施例中,服务器根据第一通信中间件的发送端和话题映射关系,确定第一通信中间件的接收端,并根据第一消息话题和话题映射关系,确定第一消息话题对应的第二消息话题对应的第二通信中间件的发送端,且添加第一通信中间件的接收端,并添加第二通信中间件的发送端,实现了不同自动驾驶软件平台之间的实时通信,实现方式简单,易于扩展且成本较低。
可以理解的是,以上实施例以第一通信中间件向第二通信中间件发送第一消息为例,对本发明的自动驾驶软件平台的跨平台通信方法进行了说明。与之相对应的,现以第二通信中间件向第一通信中间件发送第二消息为例,对本发明的自动驾驶软件平台的跨平台通信方法进行了说明。
图8示出了一种自动驾驶软件平台的跨平台通信方法的流程示意图之三。如图8所示,自动驾驶软件平台的跨平台通信方法包括步骤S801-S804。
S801、服务器接收第二通信中间件的发送端发送的第二数据格式的第三消息,第三消息中包括第二消息话题。
S802、服务器解析第三消息,得到第三消息中的第二消息话题,并确定第三消息的消息来源为第二通信中间件的发送端。
S803、服务器根据第二通信中间件的发送端、第二消息话题和预存的话题映射关系,确定第二通信中间件的接收端和第一通信中间件的发送端。
S804、服务器通过第二通信中间件的接收端调用第一通信中间件的发送端向第一通信中间件的接收端发送第三消息。
可以理解的是,第二通信中间件通过服务器中的通信桥接平台向第一通信中间件传递第二消息的方式,与上述实施例中第一通信中间件通过服务器中的通信桥接平台向第二通信中间件传递第二消息的方式相对应,具体过程在此不做赘述。唯一不同在于,第一通信中间件经过重新编译,能够支持第二数据格式,因此,服务器在向第一通信中间件传递第二消息前,不需要再对第二消息进行重新封装。
本实施例中,服务器接收第二通信中间件的发送端发送的第二数据格式的第三消息,第三消息中包括第二消息话题,而后解析第三消息,得到第三消息中的第二消息话题,并确定第三消息的消息来源为第二通信中间件的发送端,再根据第二通信中间件的发送端、第二消息话题和预存的话题映射关系,确定第二通信中间件的接收端和第一通信中间件的发送端,并通过第二通信中间件的接收端调用第一通信中间件的发送端向第一通信中间件的接收端发送第三消息。这样,通过配置不同自动驾驶软件平台之间的话题映射关系并统一消息格式,实现了不同自动驾驶软件平台之间的实时通信,实现方式简单,易于扩展且成本较低。
图9示出了一种可能的自动驾驶软件平台的跨平台通信装置的组成示意图之一,如图9所示,该自动驾驶软件平台的跨平台通信装置可以包括:接收模块91、解析模块92、封装模块93、确定模块94以及发送模块95。
接收模块91,用于接收第一通信中间件的发送端发送的第一数据格式的第一消息,第一消息中包括第一消息话题;第一通信中间件与第一自动驾驶软件平台对应,第一数据格式与第一通信中间件对应;
解析模块92,用于解析第一消息,得到第一消息中的第一消息话题,并确定第一通信中间件的发送端;
封装模块93,用于将解析后的第一消息封装为第二数据格式的第二消息;第二数据格式与第二通信中间件对应,第二通信中间件与第二自动驾驶软件平台对应;
确定模块94,用于根据第一通信中间件的发送端、第一消息话题和预存的话题映射关系,确定第一通信中间件的接收端和第二通信中间件的发送端,话题映射关系包括消息话题与通信中间件的映射关系,以及消息话题之间的映射关系;
发送模块95,用于通过第一通信中间件的接收端调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
可选的,发送模块95,具体用于:确定第一通信中间件的接收端对应的第一回调函数;根据第一回调函数,调用第二通信中间件的发送端向第二通信中间件的接收端发送第二消息。
可选的,确定模块94,具体用于:根据第一通信中间件的发送端和话题映射关系,确定第一通信中间件的接收端;根据第一消息话题和话题映射关系,确定第一消息话题对应的第二消息话题对应的第二通信中间件的发送端;添加第一通信中间件的接收端,并添加第二通信中间件的发送端。
可选的,第一通信中间件为机器人操作系统,第一数据格式为msg格式,第一自动驾驶软件平台为Autoware;第二通信中间件为CyberRT,第二数据格式为协议缓冲区格式,第二自动驾驶软件平台为Apollo。
可选的,封装模块93,具体用于:对解析后的第一消息的每个字段进行分解,直至分解后的每个字段的类型均为msg格式的基础类型;根据预设的映射表,确定分解后的每个字段的msg格式的基础类型对应的protobuf格式的基础类型;将分解后的每个字段分别转化为protobuf格式的基础类型下的字段。
可选的,基于图9,图10示出了一种可能的自动驾驶软件平台的跨平台通信装置的组成示意图之二,如图9所示,自动驾驶软件平台的跨平台通信装置还包括编译模块96,编译模块96用于:重新编译第一通信中间件,编译后的第一通信中间件支持第二数据格式的消息传输。
可选的,接收模块91,还用于接收第二通信中间件的发送端发送的第二数据格式的第三消息,第三消息中包括第二消息话题;解析模块92,还用于解析第三消息,得到第三消息中的第二消息话题,并确定第三消息的消息来源为第二通信中间件的发送端;确定模块94,还用于根据第二通信中间件的发送端、第二消息话题和预存的话题映射关系,确定第二通信中间件的接收端和第一通信中间件的发送端;发送模块95,还用于通过第二通信中间件的接收端调用第一通信中间件的发送端向第一通信中间件的接收端发送第三消息。
当然,本发明实施例提供的自动驾驶软件平台的跨平台通信装置包括但不限于上述模块。
本发明实施例提供的自动驾驶软件平台的跨平台通信装置,用于执行上述自动驾驶软件平台的跨平台通信方法,因此可以达到与上述自动驾驶软件平台的跨平台通信方法相同的效果。
本发明另一实施例还提供一种计算机设备,该计算机设备包括:处理器和存储器。存储器用于存储计算机程序代码,计算机程序代码包括计算机指令。当处理器执行计算机指令时,计算机设备执行上述方法实施例所示的自动驾驶软件平台的跨平台通信方法。
本发明另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当计算机指令在计算机设备上运行时,使得计算机设备执行上述方法实施例所示的自动驾驶软件平台的跨平台通信方法。
本发明另一实施例还提供一种计算机程序产品,该计算机程序产品包括计算机指令,当计算机指令在计算机设备上运行时,使得计算机设备执行上述方法实施例所示的自动驾驶软件平台的跨平台通信方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种自动驾驶软件平台的跨平台通信方法,其特征在于,所述自动驾驶软件平台包括第一自动驾驶软件平台和第二自动驾驶软件平台,在第一自动驾驶软件平台的第一通信中间件和第二自动驾驶软件平台的第二通信中间件中,消息的格式不同,且同一种类型的消息归为两种不同的消息话题;所述方法包括:
接收第一通信中间件的发送端发送的第一数据格式的第一消息,所述第一消息中包括第一消息话题;所述第一通信中间件与第一自动驾驶软件平台对应,所述第一数据格式与所述第一通信中间件对应;
解析所述第一消息,得到所述第一消息中的所述第一消息话题,并确定所述第一消息的消息来源为所述第一通信中间件的发送端;
将解析后的第一消息封装为第二数据格式的第二消息;所述第二数据格式与第二通信中间件对应,所述第二通信中间件与第二自动驾驶软件平台对应;重新编译所述第一通信中间件,编译后的所述第一通信中间件支持所述第二数据格式的消息传输;
根据所述第一通信中间件的发送端、所述第一消息话题和预存的话题映射关系,确定所述第一通信中间件的接收端和所述第二通信中间件的发送端,所述话题映射关系包括消息话题与通信中间件的映射关系,以及所述第一通信中间件与所述第二通信中间件中不同的消息话题之间的映射关系;
通过所述第一通信中间件的接收端调用所述第二通信中间件的发送端向所述第二通信中间件的接收端发送所述第二消息;
所述方法还包括:
接收所述第二通信中间件的发送端发送的所述第二数据格式的第三消息,所述第三消息中包括第二消息话题;
解析所述第三消息,得到所述第三消息中的所述第二消息话题,并确定所述第三消息的消息来源为所述第二通信中间件的发送端;
根据所述第二通信中间件的发送端、所述第二消息话题和预存的所述话题映射关系,确定所述第二通信中间件的接收端和所述编译后的第一通信中间件的发送端;
通过所述第二通信中间件的接收端调用所述编译后的第一通信中间件的发送端向所述编译后的第一通信中间件的接收端发送所述第三消息。
2.根据权利要求1所述的自动驾驶软件平台的跨平台通信方法,其特征在于,所述通过所述第一通信中间件的接收端调用所述第二通信中间件的发送端向所述第二通信中间件的接收端发送所述第二消息,包括:
确定所述第一通信中间件的接收端对应的第一回调函数;
根据所述第一回调函数,调用所述第二通信中间件的发送端向所述第二通信中间件的接收端发送所述第二消息。
3.根据权利要求1或2所述的自动驾驶软件平台的跨平台通信方法,其特征在于,所述根据所述第一通信中间件的发送端、所述第一消息话题和预存的话题映射关系,确定所述第一通信中间件的接收端和所述第二通信中间件的发送端,包括:
根据所述第一通信中间件的发送端和所述话题映射关系,确定所述第一通信中间件的接收端;
根据所述第一消息话题和所述话题映射关系,确定所述第一消息话题对应的第二消息话题对应的所述第二通信中间件的发送端;
添加所述第一通信中间件的接收端,并添加所述第二通信中间件的发送端。
4.根据权利要求1或2所述的自动驾驶软件平台的跨平台通信方法,其特征在于,所述第一通信中间件为机器人操作系统,所述第一数据格式为msg格式,所述第一自动驾驶软件平台为Autoware;所述第二通信中间件为CyberRT,所述第二数据格式为协议缓冲区格式,所述第二自动驾驶软件平台为Apollo。
5.根据权利要求4所述的自动驾驶软件平台的跨平台通信方法,其特征在于,所述将解析后的第一消息封装为第二数据格式的第二消息,包括:
对解析后的第一消息的每个字段进行分解,直至分解后的每个字段的类型均为msg格式的基础类型;
根据预设的映射表,确定分解后的每个字段的msg格式的基础类型对应的Protobuf格式的基础类型;
将分解后的每个字段分别转化为Protobuf格式的基础类型下的字段。
6.一种自动驾驶软件平台的跨平台通信装置,其特征在于,所述自动驾驶软件平台包括第一自动驾驶软件平台和第二自动驾驶软件平台,在第一自动驾驶软件平台的第一通信中间件和第二自动驾驶软件平台的第二通信中间件中,消息的格式不同,且同一种类型的消息归为两种不同的消息话题;包括:
接收模块,用于接收第一通信中间件的发送端发送的第一数据格式的第一消息,所述第一消息中包括第一消息话题;所述第一通信中间件与第一自动驾驶软件平台对应,所述第一数据格式与所述第一通信中间件对应;
解析模块,用于解析所述第一消息,得到所述第一消息中的所述第一消息话题,并确定所述第一消息的消息来源为所述第一通信中间件的发送端;
封装模块,用于将解析后的第一消息封装为第二数据格式的第二消息;所述第二数据格式与第二通信中间件对应,所述第二通信中间件与第二自动驾驶软件平台对应;
确定模块,用于根据所述第一通信中间件的发送端、所述第一消息话题和预存的话题映射关系,确定所述第一通信中间件的接收端和所述第二通信中间件的发送端,所述话题映射关系包括消息话题与通信中间件的映射关系,以及所述第一通信中间件与所述第二通信中间件中不同的消息话题之间的映射关系;
发送模块,用于通过所述第一通信中间件的接收端调用所述第二通信中间件的发送端向所述第二通信中间件的接收端发送所述第二消息;
编译模块,用于重新编译第一通信中间件,编译后的第一通信中间件支持第二数据格式的消息传输;
所述接收模块,还用于接收第二通信中间件的发送端发送的第二数据格式的第三消息,第三消息中包括第二消息话题;
所述解析模块,还用于解析第三消息,得到第三消息中的第二消息话题,并确定第三消息的消息来源为第二通信中间件的发送端;
所述确定模块,还用于根据第二通信中间件的发送端、第二消息话题和预存的话题映射关系,确定第二通信中间件的接收端和第一通信中间件的发送端;
所述发送模块,还用于通过第二通信中间件的接收端调用第一通信中间件的发送端向第一通信中间件的接收端发送第三消息。
7.一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述处理器执行所述计算机指令时,所述计算机设备执行如权利要求1-5中任意一项所述的自动驾驶软件平台的跨平台通信方法。
8.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1-5中任意一项所述的自动驾驶软件平台的跨平台通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210697726.XA CN115134361B (zh) | 2022-06-20 | 2022-06-20 | 一种自动驾驶软件平台的跨平台通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210697726.XA CN115134361B (zh) | 2022-06-20 | 2022-06-20 | 一种自动驾驶软件平台的跨平台通信方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115134361A CN115134361A (zh) | 2022-09-30 |
CN115134361B true CN115134361B (zh) | 2024-04-26 |
Family
ID=83379949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210697726.XA Active CN115134361B (zh) | 2022-06-20 | 2022-06-20 | 一种自动驾驶软件平台的跨平台通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115134361B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024108608A1 (zh) * | 2022-11-26 | 2024-05-30 | 华为技术有限公司 | 通信方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101120540A (zh) * | 2004-12-17 | 2008-02-06 | 韩国电子通信研究院 | 用于异构家用网络中间件中的家用设备互操作性的家用网络通用中间件桥接系统和方法 |
CN103324173A (zh) * | 2013-06-08 | 2013-09-25 | 上海交通大学 | 基于中间件的多异构机器人协作方法 |
WO2014061516A1 (ja) * | 2012-10-19 | 2014-04-24 | 国立大学法人東京大学 | 異なるタイプのロボットミドルウェア間を連携する変換モジュールの生成方法及び装置 |
EP3407194A2 (en) * | 2018-07-19 | 2018-11-28 | Erle Robotics, S.L. | Method for the deployment of distributed fog computing and storage architectures in robotic modular components |
CN110351152A (zh) * | 2019-08-16 | 2019-10-18 | 中国银行股份有限公司 | 消息报文处理装置及方法 |
CN111198770A (zh) * | 2018-11-19 | 2020-05-26 | 北京图森智途科技有限公司 | Ros1消息的通信方法、装置和系统、转换方法和装置 |
CN112956162A (zh) * | 2018-11-06 | 2021-06-11 | 维萨国际服务协会 | 自动聊天机器人处理 |
CN113849449A (zh) * | 2021-09-18 | 2021-12-28 | 北京京东乾石科技有限公司 | 一种通信系统和信息交互方法、设备和介质 |
CN114172915A (zh) * | 2021-11-05 | 2022-03-11 | 中汽创智科技有限公司 | 一种消息同步方法、自动驾驶系统、存储介质及电子设备 |
CN114205073A (zh) * | 2020-09-17 | 2022-03-18 | 北京航空航天大学 | 密码反向防火墙及其安全防御方法 |
CN114501347A (zh) * | 2022-01-25 | 2022-05-13 | 中国电力科学研究院有限公司 | 异构系统间信息交互方法、装置及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3710471A1 (en) * | 2017-11-16 | 2020-09-23 | Kite Pharma, Inc. | Modified chimeric antigen receptors and methods of use |
-
2022
- 2022-06-20 CN CN202210697726.XA patent/CN115134361B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101120540A (zh) * | 2004-12-17 | 2008-02-06 | 韩国电子通信研究院 | 用于异构家用网络中间件中的家用设备互操作性的家用网络通用中间件桥接系统和方法 |
WO2014061516A1 (ja) * | 2012-10-19 | 2014-04-24 | 国立大学法人東京大学 | 異なるタイプのロボットミドルウェア間を連携する変換モジュールの生成方法及び装置 |
CN103324173A (zh) * | 2013-06-08 | 2013-09-25 | 上海交通大学 | 基于中间件的多异构机器人协作方法 |
EP3407194A2 (en) * | 2018-07-19 | 2018-11-28 | Erle Robotics, S.L. | Method for the deployment of distributed fog computing and storage architectures in robotic modular components |
CN112956162A (zh) * | 2018-11-06 | 2021-06-11 | 维萨国际服务协会 | 自动聊天机器人处理 |
CN111198770A (zh) * | 2018-11-19 | 2020-05-26 | 北京图森智途科技有限公司 | Ros1消息的通信方法、装置和系统、转换方法和装置 |
CN110351152A (zh) * | 2019-08-16 | 2019-10-18 | 中国银行股份有限公司 | 消息报文处理装置及方法 |
CN114205073A (zh) * | 2020-09-17 | 2022-03-18 | 北京航空航天大学 | 密码反向防火墙及其安全防御方法 |
CN113849449A (zh) * | 2021-09-18 | 2021-12-28 | 北京京东乾石科技有限公司 | 一种通信系统和信息交互方法、设备和介质 |
CN114172915A (zh) * | 2021-11-05 | 2022-03-11 | 中汽创智科技有限公司 | 一种消息同步方法、自动驾驶系统、存储介质及电子设备 |
CN114501347A (zh) * | 2022-01-25 | 2022-05-13 | 中国电力科学研究院有限公司 | 异构系统间信息交互方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115134361A (zh) | 2022-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107645562B (zh) | 数据传输处理方法、装置、设备及系统 | |
CN112311664B (zh) | 一种工业互联网数据交互方法、系统及工业网关 | |
CN115134361B (zh) | 一种自动驾驶软件平台的跨平台通信方法及装置 | |
CN108446105A (zh) | 一种轻量级API Server开发框架及开发方法 | |
CN111294235A (zh) | 数据处理方法、装置、网关及可读存储介质 | |
CN113867732A (zh) | 一种报文信息处理方法、系统以及存储介质 | |
CN111198770B (zh) | Ros1消息的通信方法、装置和系统、转换方法和装置 | |
CN113596017B (zh) | 一种协议解析方法、装置、软网关和存储介质 | |
CN113448655B (zh) | C标准动态库的调用方法与装置 | |
CN108810000B (zh) | 一种生成序列化和反序列化api的方法及装置 | |
CN110620819B (zh) | 区块链交互方法、装置、计算机设备及可读存储介质 | |
CN112764945B (zh) | 消息中心服务中间件系统 | |
CN113992644A (zh) | 一种基于无服务技术的物联网关系统及其数据处理方法 | |
US20040088395A1 (en) | Method for probing a server | |
CN111158661A (zh) | 系统接口对接方法、装置、介质及电子设备 | |
CN112769741A (zh) | 一种消息通信方法及电子设备 | |
CN116661894A (zh) | 原生插件调用方法、装置、终端设备及存储介质 | |
CN117724726B (zh) | 一种数据处理方法和相关装置 | |
CN117724875B (zh) | 基于Rust语言实现SESC驱动的半导体设备通信方法 | |
CN116800807A (zh) | Gpu资源远程调用方法、装置、设备及存储介质 | |
CN111142860B (zh) | 用于实现接口调用的方法及装置 | |
CN115065638B (zh) | 组播数据转发方法、装置、电子设备及存储介质 | |
CN112765252B (zh) | 数据传输方法、客户端、终端、服务器及存储介质 | |
CN116400889A (zh) | 移动端混合开发的方法、系统及装置 | |
CN116483366A (zh) | 业务数据的传输方法和装置、存储介质及电子设备 |
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 |