CN114546672A - 一种无人驾驶通信方法、装置、设备及存储介质 - Google Patents
一种无人驾驶通信方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114546672A CN114546672A CN202210023102.XA CN202210023102A CN114546672A CN 114546672 A CN114546672 A CN 114546672A CN 202210023102 A CN202210023102 A CN 202210023102A CN 114546672 A CN114546672 A CN 114546672A
- Authority
- CN
- China
- Prior art keywords
- message
- communication node
- queue
- communication
- topic
- 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.)
- Pending
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/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
Abstract
本说明书公开了一种无人驾驶通信方法、装置、设备及存储介质,在创建的第一进程中启动消息总线组件并创建通信节点,第一进程内消息总线组件将接收到的消息插入到消息所属话题对应的指定队列中,根据第一进程与订阅消息的通信节点所在进程之间的关系,将消息按指定队列的顺序发送至订阅消息的通信节点所在进程内的消息总线组件,或将消息发送至第一进程内订阅消息的通信节点。通过在进程内启动消息总线组件并创建通信节点,避免一个进程内的消息总线组件无法工作时发生单点故障,提高了无人驾驶系统中传输消息的可靠性,由于通信节点发送消息以及接收消息均通过消息总线组件,实现了消息生产者与消息消费者之间的解耦,保证了消息传输的实时性。
Description
技术领域
本说明书涉及无人驾驶技术领域,尤其涉及一种无人驾驶通信方法、装置、设备及存储介质。
背景技术
无人设备已在国防、国民经济等多个领域中得到了广泛的应用,随着科技水平的不断提升,无人设备还将得到进一步地发展,从而给人民的生活带来更多的便利。无人设备可通过感知周围环境,从而在环境中实现自主驾驶并到达目的地。无人驾驶系统通过功能模块实现对无人设备的控制,包括感知模块、定位模块、预测模块、规划模块与控制模块等。功能模块需要获取上游模块的输出结果,并将自身的输出结果传输给下游模块,这就需要在具有消息传输功能的软件开发平台中进行无人驾驶系统各功能模块的开发。目前,机器人操作系统(Robotic Operation System,ROS)已经在无人驾驶系统的开发中得到了广泛应用。
现有技术中,通常设置主节点,为各功能模块提供注册、命名通信节点的服务,各功能模块对应的通信节点均为从节点,通信节点用于为与其对应的功能模块接收与发送消息。在ROS内,提供了一种发布-订阅式的节点间通信框架,通过这种发布-订阅的方式可以实现各通信节点间消息的传输。通信节点之间的通信需要通过主节点实现,发布消息的通信节点在主节点发布话题并向所述话题发送消息,订阅消息的通信节点只要在主节点订阅所述话题就能接收到所述话题中的消息。
然而,由于各功能模块对应的通信节点发布消息和订阅消息均需要通过主节点,一旦主节点无法工作,从节点也无法工作,导致无人驾驶系统中各功能模块间无法传输消息。并且,当系统内存在大量话题和消息时,主节点处理发布和订阅服务的延时较大,无法满足无人驾驶系统对消息传输实时性的要求。
发明内容
本说明书提供一种无人驾驶通信方法、装置、设备及存储介质,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供一种无人驾驶通信方法,包括:
创建第一进程;
启动所述第一进程内的消息总线组件,并在所述第一进程内创建通信节点;
根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式;其中,所述第一进程内的消息总线组件用于与所述第一进程内的通信节点通信;
接收由所述第一进程内的通信节点发送的消息;
确定所述消息所属的话题,并确定所述话题对应的队列,作为指定队列;其中,同一话题对应于同一个队列;
将所述消息插入到所述指定队列的尾部;
根据所述通信方式,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点。
可选地,根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式,具体包括:
根据预先确定的通信配置文件,确定所述第一进程与订阅消息的通信节点所在的进程之间的关系;所述关系包括所述第一进程与订阅消息的通信节点所在的进程为同一进程内或同一设备内的不同进程内或不同设备内的进程;
根据所述第一进程与订阅消息的通信节点所在的进程之间的关系,确定通信节点通过消息总线组件进行通信的通信方式;
当所述关系是所述第一进程与订阅消息的通信节点所在的进程为同一进程时,所述通信方式为通过进程内传输组件,将消息发送至所述第一进程内订阅所述消息的通信节点;
当所述关系是所述第一进程与订阅消息的通信节点所在的进程为同一设备内的不同进程内时,通信方式为通过同一设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件;
当所述关系是所述第一进程与订阅消息的通信节点所在的进程为不同设备内的进程时,通信方式为通过不同设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件。
可选地,所述由第一进程内的通信节点发送的消息由无人驾驶设备中的消息生产者产生、并由第一进程内的通信节点发布至消息对应的话题;所述第一进程内的通信节点用于为无人驾驶设备中的消息生产者将消息发送至所述第一进程内的消息总线组件和/或为无人驾驶设备中的消息消费者从所述第一进程内的消息总线组件获取消息。
可选地,将所述指定队列中各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,具体包括:
将订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件作为待通信消息总线组件;接收由所述待通信消息总线组件发送的与话题对应的话题订阅请求;
当接收到所述待通信消息总线组件订阅的话题对应的指定队列中的各消息时,将所述话题对应的指定队列中各消息发送至所述待通信消息总线组件。
可选地,将所述话题对应的指定队列中各消息发送至所述待通信消息总线组件,具体包括:
在所述第一进程内的消息总线组件中,确定与所述指定队列对应的组件;其中,一个队列对应于一个组件;
通过与所述指定队列对应的组件,将所述话题对应的指定队列中的各消息发送至所述待通信消息总线组件。
可选地,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点,具体包括:
接收由所述第一进程内的通信节点发送的与话题对应的话题订阅请求;
当接收到所述第一进程内的通信节点订阅的话题对应的指定队列中的各消息时,将所述话题对应的指定队列中的各消息发送至所述第一进程内的通信节点。
可选地,将所述话题对应的指定队列中的各消息发送至所述第一进程内的通信节点,具体包括:
在所述第一进程内的消息总线组件中,确定与所述指定队列对应的组件;其中,一个队列对应于一个组件;
通过与所述指定队列对应的组件,将所述话题对应的指定队列中的各消息发送至所述第一进程内订阅所述话题对应的指定队列中各消息的通信节点。
本说明书提供一种无人驾驶通信装置,包括:
进程创建模块,用于创建第一进程;
启动模块,用于启动所述第一进程内的消息总线组件,并在所述第一进程内创建通信节点;
通信方式确定模块,用于根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式;其中,所述第一进程内的消息总线组件用于与所述第一进程内的通信节点通信;
消息接收模块,用于接收由所述第一进程内的通信节点发送的消息;
指定队列确定模块,用于确定所述消息所属的话题,并确定所述话题对应的队列,作为指定队列;其中,同一话题对应于同一个队列;
消息插入模块,用于将所述消息插入到所述指定队列的尾部;
消息发送模块,用于根据所述通信方式,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述无人驾驶通信方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述无人驾驶通信方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本说明书提供的一种无人驾驶通信方法中,在创建的第一进程中启动消息总线组件并创建通信节点,第一进程内的消息总线组件将接收到的消息插入到消息所属话题对应的指定队列中,根据第一进程与订阅所述消息的通信节点所在的进程之间的关系,确定将所述消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件,或将所述消息发送至自身所在进程内订阅所述消息的通信节点。通过在进程内启动消息总线组件并创建通信节点,避免了一个进程内的消息总线组件无法工作时,其他进程也无法工作的问题,提高了无人驾驶系统中传输消息的可靠性;由于通信节点发送消息以及接收消息均通过消息总线组件,实现了消息生产者与消息消费者之间的解耦,保证了消息传输的实时性。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中一种适用于无人驾驶通信方法的系统架构示意图;
图2为本说明书中一种无人驾驶通信方法的流程示意图;
图3为本说明书提供的一种无人驾驶通信装置的示意图;
图4为本说明书提供的对应于图2的电子设备示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
随着无人驾驶技术的飞速发展,构建低成本、低功耗、高稳定性的无人驾驶系统来支撑大规模运营已成为无人驾驶技术亟待解决的问题之一。为了能够支撑多计算节点的协作运行以及最大化资源利用率,构建了无人驾驶引擎这一用于无人驾驶系统开发的软件开发平台,为无人驾驶系统中各功能模块提供机制和工具的同时,还提供了对车载和仿真两种环境的适配,以面对目前无人驾驶系统开发过程中,道路测试和仿真测试之间的差异问题、各功能模块在不同运行环境下适配问题、硬件资源配置不均等挑战。
无人驾驶系统通过功能模块实现对无人驾驶设备的控制,功能模块包括感知模块、定位模块、预测模块、规划模块与控制模块等。而各功能模块在资源需求等方面极不均衡,如在数据的输入规模上,感知模块与定位模块极依赖于雷达传感器与相机传感器采集到的数据,感知模块与定位模块的数据使用量远高于其他功能模块;如在硬件资源消耗上,感知模块与预测模块会消耗较多的图形处理器的计算资源。可见,各功能模块在数据输入规模以及资源消耗等方面并不相同,因此,为了提升计算资源的使用效率,需要无人驾驶引擎支持分布式部署,即一套无人驾驶系统分别部署在多台设备甚至跨机房的设备之上。
其中,各功能模块在仿真环境运行是无人驾驶技术研发的重要手段,在无人驾驶进入到运营阶段之后,仿真任务也迅速增长。根据前述的分析,由于各功能模块对硬件算力的需求是不一样的,即不同的仿真任务对硬件算力的需求不同,例如感知仿真任务和预测仿真任务必须依赖图形处理器。在硬件资源或者硬件资源的配比固定的前提下,为进一步提升资源利用率,可以将仿真任务中不同的子任务拆分到不同的设备上运行,也即,将各功能模块拆分到不同的设备上运行。而无人驾驶引擎需要负责完成同一任务在不同设备间的分布式通信。
为了实现分布式部署,将功能模块分为了用于完成计算的计算模块和用于为计算模块提供通讯等协助的通信节点,这使得功能模块中的计算模块仅需要完成计算部分,无需适配自身所处运行环境。无人驾驶引擎为功能模块中的计算部分提供了运行环境的抽象与隔离,实现了分布式环境下高实时性的数据传输、数据记录以及调度等功能。
在实际应用中,各功能模块均需要获取上游模块的输出结果,并将自身的输出结果传输给下游模块,这就需要功能模块中的通信节点承担消息传输功能。
相较于在ROS中设置主节点,并通过主节点实现各功能模块对应的通信节点发布消息和订阅消息的通信方式,本说明书提出一种引入消息总线组件的通信方式,消息生产者无须关注消息消费者如何处理消息,实现了消息生产者与消息消费者之间的解耦,提高了消息传输的实时性;并且通信节点所在的进程内均包含消息总线组件,避免了由于各功能模块对应的通信节点发布消息和订阅消息均需要通过主节点,一旦主节点无法工作,从节点也无法工作,导致无人驾驶系统中各功能模块间无法传输消息的风险。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书实施例提供的一种适用于无人驾驶通信方法的系统架构结构图,该系统架构可以应用于无人驾驶车辆、无人机、无人船等无人驾驶设备。
通常情况下,为了实现各功能模块之间的分布式通信,为各功能模块的计算模块配置通信节点,用于为各功能模块的计算模块提供消息传输等支持,以使功能模块中的计算模块仅需要完成计算部分,无需适配自身所处运行环境。其中,功能模块可运行在进程中,一个进程中可运行至少一个功能模块。例如,由于感知模块与预测模块会消耗较多的图形处理器的计算资源,其他功能模块则较少使用图形处理器,因此可以在同一个进程中运行感知模块与预测模块,该进程可实现感知和预测两方面的功能。
通信节点负责对应的计算模块消息的传输,一个计算模块可配置至少一个通信节点。例如,当一个计算模块配置一个通信节点时,该通信节点负责其对应的计算模块消息的发送和接收;当一个计算模块配置两个通信节点时,则其中一个通信节点可负责与其对应的计算模块消息的发送,另一个通信节点可负责与其对应的计算模块消息的接收。通信节点与其对应的计算模块运行在同一进程内,由于各功能模块可运行在不同的进程中,因此各通信节点之间的关系可以是位于同一进程内、或同一设备的不同进程内、或不同设备内。
在本说明书实施例提供的一种适用于无人驾驶通信方法的系统架构中,可在用于为各功能模块提供运行环境的设备中创建若干进程,在每个进程内可启动消息总线组件。由于一个进程中可运行至少一个功能模块,因此需创建与功能模块对应的通信节点。各通信节点与其所在的进程内的消息总线组件实时通信。本发明实施例中所述实时通信指通信时延能够被控制在毫秒级或者微秒级的通信,具体可以为在车载系统或仿真系统中,满足无人设备各个部件通信实时性要求的通信。
其中,所述通信节点用于,为无人驾驶设备中的消息生产者将消息发送至所述第一进程内的消息总线组件和/或为无人驾驶设备中的消息消费者从所述第一进程内的消息总线组件获取消息。
具体的,通信节点承担了为对应的功能模块中的计算模块发布消息和订阅消息的任务,也即,通信节点对应的计算模块可以仅是消息生产者,也可以仅是消息消费者,还可以既是消息生产者也是消息消费者。当功能模块中的计算模块仅为消息生产者时,与计算模块对应的通信节点仅为发布节点,当功能模块中的计算模块仅为消息消费者时,与计算模块对应的通信节点仅为订阅节点,当功能模块中的计算模块既是消息生产者也是消息消费者时,与计算模块对应的通信节点同时作为发布节点和订阅节点,本发明对此不做具体限定。本说明书实施例中,以通信节点仅发布消息或仅订阅消息为例,对具体方案进行说明。
其中,所述消息总线组件,首先,用于根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式。
通常情况下,ROS中通信拓扑的构建均由主节点通过节点注册与发现服务完成,对网络环境有较强的依赖,如果网络环境不稳定,将极大地提高通信拓扑构建的失败率。为了解决通信拓扑的构建对网络环境依赖性强的问题,本说明书实施例提供的一种无人驾驶通信方法中,通过预先确定通信配置文件的方式,使得位于每个进程内的消息总线组件均能够根据通信配置文件构建通信拓扑,确定各通信节点通过消息总线组件进行通信的通信方式,避免了网络环境不稳定带来的构建通信拓扑失败的问题。
其次,消息总线组件接收由通信节点发送的消息。
然后,根据所述通信方式,当自身所在的进程与订阅所述消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,将所述消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件;当自身所在的进程与订阅所述消息的通信节点所在的进程为同一进程时,将所述消息发送至自身所在进程内订阅所述消息的通信节点。
例如,在如图1所示的一种适用于无人驾驶通信方法的系统架构中,设置有设备A与设备B两个设备用于为各功能模块提供运行需要,其中,设备A中的第一进程包括通信节点1、通信节点2以及消息总线组件A1;设备A中的第二进程包括通信节点3以及消息总线组件A2;设备B中的第三进程包括通信节点4以及消息总线组件B。位于设备A第一进程中的通信节点1作为发布节点,将消息发布至自身所在进程内的消息总线组件A1中;当通信节点2订阅通信节点1发布的消息时,消息总线组件A1将接收到的消息发送至通信节点2;当通信节点3订阅通信节点1发布的消息时,消息总线组件A1将接收到的消息发送至消息总线组件A2,然后由消息总线组件A2将所述消息发送至通信节点3;当通信节点4订阅通信节点1发布的消息时,消息总线组件A1将接收到的消息发送至消息总线组件B,然后由消息总线组件B将所述消息发送至通信节点4。
可见,各通信节点间消息的传输均需要通过消息总线组件,通信节点1仅需将消息发送至消息总线组件A1,无需关注其他通信节点如何订阅所述消息。
基于同样的思路,本说明书实施例提供了一种无人驾驶通信方法,如图2所示。图2为本说明书实施例提供的一种无人驾驶通信方法的示意图,其中,各通信节点通过消息总线组件进行通信的通信拓扑同图1,以图1中设备A中第一进程的通信节点1为发布消息的节点,根据订阅消息的通信节点所在的进程不同,图2中的消息总线组件X可以是图1中第二进程内的消息总线组件A2,也可以是第三进程内的消息总线组件B,通信节点Y可以是图1中的通信节点2、通信节点3、通信节点4中的一个。本说明书实施例提供了一种无人驾驶通信方法具体包括以下步骤:
S100:第一进程内的消息总线组件根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式。
在实际应用中,所述通信配置文件用于构建各通信节点通过消息总线组件进行通信的通信拓扑。根据构建的通信拓扑,可以实现各通信节点间消息的传输。其中,在各进程内启动的消息总线组件均可根据通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式。
S102:第一进程内的通信节点将消息发送至第一进程内的消息总线组件。
在本说明书实施例中,将各功能模块分为用于计算的计算模块以及为计算模块提供通信功能的通信节点,因此,通信节点发送的消息来源于对应的计算模块。具体的,各功能模块中的计算模块可以生产消息,也可以消费消息,因此,将各功能模块中的计算模块定义为消息生产者或消息消费者。同一功能模块中的计算模块可仅为消息生产者或仅为消息消费者,也可以同时作为消息生产者和消息消费者。
第一进程内的通信节点获取由与通信节点自身对应的消息生产者产生的消息,并确定所述消息所属的话题。将所述消息发布至对应的话题中;其中,一个话题中可至少包括一个消息生产者产生的消息。然后,将话题中的消息发送至第一进程内的消息总线组件。
S104:第一进程内的消息总线组件接收由第一进程内的通信节点发送的消息。
具体的,消息总线组件中可设置用于暂存消息的缓冲区,所述缓冲区可用于暂时保存接收到的消息,直到该消息被发送至订阅该消息的通信节点或订阅该消息的通信节点所在的进程内的消息总线。
S106:第一进程内的消息总线组件确定所述消息所属的话题,并确定所述话题对应的队列,作为指定队列;其中,同一话题对应于同一个队列;并将将所述消息插入到所述指定队列的尾部。
具体的,第一进程内的消息总线组件接收由第一进程内的通信节点发送的消息,并确定消息所述的话题后,可通过将接收到的消息插入话题对应的队列的方式,保证消息按队列的顺序传输至订阅消息的通信节点所在的进程内的消息总线组件或发送至第一进程内订阅消息的通信节点。
S108:当第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,第一进程内的消息总线组件按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件。
S110:消息总线组件将消息发送至自身所在进程内的通信节点。
通常情况下,通信节点需要订阅话题中的消息时,消息总线组件会接收到由通信节点发送的与所述话题对应的话题订阅请求。若所述话题对应的指定队列中的各消息不在自身所在的进程内,消息总线组件根据通信节点订阅的话题,向所述话题所在进程内的消息总线组件发送与所述话题对应的订阅请求,以使所述话题所在进程内的消息总线组件在接收到话题对应的指定队列中的各消息后,向自身发送所述话题对应的指定队列中的消息。
当消息总线组件接收到订阅的话题中对应的指定队列的消息时,消息总线组件将消息发送至自身所在进程内的通信节点;
例如,图2中的消息总线组件X为图1中的消息总线A2,图2中通信节点Y为图1中的通信节点3。当通信节点3订阅通信节点1发布的消息时,由于通信节点1与通信节点3不在同一进程内,因此,消息总线组件A2在接收到通信节点3发送的订阅请求后,向消息总线组件A1发送订阅请求。响应于消息总线组件A2发送的订阅请求,消息总线A1将通信节点3订阅的消息发送至消息总线A2,然后由消息总线A2将所述消息发送至通信节点3。
S112:当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点。
通常情况下,通信节点需要订阅话题对应的指定队列中的消息时,消息总线组件会接收到由通信节点发送的与所述话题对应的话题订阅请求。若所述话题对应的指定队列在自身所在的进程内,消息总线组件在接收到订阅的话题对应的指定队列中的消息后,将该消息发送至自身所在进程内订阅所述消息的通信节点。
例如,图2中通信节点Y为图1中的通信节点2。当通信节点2订阅通信节点1发布的消息时,由于通信节点1与通信节点2在同一进程内,因此,消息总线组件A1在接收到通信节点2发送的订阅请求后,将所述消息发送至通信节点2。
S114:通信节点接收由自身所在进程内的消息总线组件发送的消息。
通信节点将接收到的消息发送至对应的消息消费者,以使消息消费者对所述消息进行处理。
需要说明的是,将订阅消息的通信节点作为订阅节点,将发布消息的通信节点作为发布节点。可见,订阅节点与发布节点可以在同一进程内,也可以在同一设备不同进程内,还可以在不同设备内。当订阅节点与发布节点在同一设备的不同进程内或不同设备内时,执行步骤S108至S110,当订阅节点与发布节点在同一进程内时,执行步骤S112。
由于与发布节点在同一进程内的订阅节点,与发布节点在同一设备不同进程内的订阅节点、与发布节点在不同设备内的订阅节点可同时订阅发布节点发布的消息,因此上述步骤S108至S110与S112执行的顺序不分先后。
本说明书提供的一种无人驾驶通信方法中,在创建的第一进程中启动消息总线组件并创建通信节点,第一进程内的消息总线组件将接收到的消息插入到消息所属话题对应的指定队列中,根据第一进程与订阅所述消息的通信节点所在的进程之间的关系,确定将所述消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件,或将所述消息发送至自身所在进程内订阅所述消息的通信节点。通过在进程内启动消息总线组件并创建通信节点,避免了一个进程内的消息总线组件无法工作时,其他进程也无法工作的问题,提高了无人驾驶系统中传输消息的可靠性;由于通信节点发送消息以及接收消息均通过消息总线组件,实现了消息生产者与消息消费者之间的解耦,保证了消息传输的实时性。
本说明书实施例中,如图2步骤S100所示的消息总线组件根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式,具体通过以下步骤实现:
首先,先确定的通信配置文件,确定自身所在的进程与订阅消息的通信节点所在的进程之间的关系。
然后,据消息总线组件自身所在的进程与订阅消息的通信节点所在的进程之间的关系,确定通信节点通过消息总线组件进行通信的通信方式。
具体的,由于订阅消息的通信节点与发布消息的通信节点可位于同一进程、同一设备中的不同进程、不同设备内,因此接收消息的消息总线组件所在的进程与订阅消息的通信节点所在的进程之间的关系有以下三种类型:
第一种类型:当所述关系是自身所在的进程与订阅消息的通信节点所在的进程为同一进程时,所述通信方式为通过进程内传输组件,将消息发送至自身所在进程内订阅所述消息的通信节点;
第二种类型:当所述关系是自身所在的进程与订阅消息的通信节点所在的进程为同一设备内的不同进程内时,通信方式为通过同一设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件;
第三种类型:当所述关系是自身所在的进程与订阅消息的通信节点所在的进程为不同设备内的进程时,通信方式为通过不同设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件。
需要说明的是,所述传输组件位于消息总线组件内,用于将消息传输至订阅所述消息的通信节点所在的消息总线组件或订阅所述消息的通信节点。其中,进程内传输组件可以为本地消息传输组件;同一设备的进程间传输组件可以为共享内存组件;不同设备的进程间传输组件可以为谷歌远程过程调用(Google Remote Procedure Call,gRPC)组件、高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)组件等。
本说明书实施例中,如图2步骤S106所示的第一进程内的消息总线组件确定接收到的消息所述的话题,并将接收到的消息插入到话题对应的队列的尾部,具体步骤如下:
首先,将接收到的消息暂存在消息缓冲区中,确定接收到的消息所属的话题,并确定所述话题对应的队列,作为指定队列,其中,同一话题对应于同一个队列。
具体的,根据预先确定的哈希算法,计算出各话题对应的哈希值;根据各话题对应的哈希值,确定各话题对应的队列。可见,同一话题仅对应同一个队列,一个队列可包括至少一个话题中的消息。
其次,将所述消息插入与所述指定队列的尾部。
为了保证先接收到的消息先开始处理,后接收到的消息后开始处理,应按照接收消息的先后顺序将消息先后放在队列中,因此每次插入消息均将消息插入指定队列的尾部,以保证能够先提取队列中位于前面的消息。
然后,需要根据第一进程与订阅所述指定队列中各消息的通信节点所在的进程之间的关系,确定与所述指定队列对应的组件,具体包括以下两种情况:
第一种情况:第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备的不同进程或不同设备,此时,需要在第一进程内的消息总线组件中,确定与所述指定队列对应的组件。其中,一个队列对应于一个组件。通过所述组件,按照所述指定队列中各消息的排序,从所述指定队列的头部按顺序取出所述消息,将所述指定队列中的各消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件,使得订阅所述消息的通信节点所在的进程内的消息总线组件接收到的各消息的排序与指定队列中各消息的排序相同。
第二种情况:第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程,此时需要在自身所在的进程内的消息总线组件中,确定与所述指定队列对应的组件。其中,一个队列对应于一个组件。通过所述组件,按照所述指定队列中各消息的排序,从所述指定队列的头部按顺序取出所述消息,将所述指定队列中的各消息发送至自身所在进程内订阅所述消息的通信节点,使得订阅所述消息的通信节点接收到的各消息的排序与指定队列中各消息的排序相同。
在本说明书另一个实施例中,为了实现线下分析和定位线上发生的事件与问题,需要将线上的消息进行保存。具体的,为了了保证消息的有序性和完整性,采用集中式消息保存的策略。由于主进程所在的设备可插数据盘,因此将需要保存的消息统一发送至主进程内的消息总线组件中,并在主进程内的消息总线组件中,将需要保存的消息按照时间次序进行排列,暂存在内存中。当需要将所述消息落盘到数据盘中时,执行消息总线组件中的落盘函数,将需要保存的消息从内存中保存至数据盘中。采用集中式消息保存的策略,可以保证消息的有序性和完整性,便于线下复现线上场景。
以上为本说明书的一个或多个实施例提供的无人驾驶通信方法,基于同样的思路,本说明书还提供了相应的无人驾驶通信装置。
图3为本说明书提供的一种无人驾驶通信装置示意图,具体包括:
进程创建模块200,用于创建第一进程;
启动模块202,用于启动所述第一进程内的消息总线组件,并在所述第一进程内创建通信节点;
通信方式确定模块204,用于根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式;其中,所述第一进程内的消息总线组件用于与所述第一进程内的通信节点通信;
消息接收模块206,用于接收由所述第一进程内的通信节点发送的消息;
指定队列确定模块208,用于确定所述消息所属的话题,并确定所述话题对应的队列,作为指定队列;其中,同一话题对应于同一个队列;
消息插入模块210,用于将所述消息插入到所述指定队列的尾部;
消息发送模块212,用于根据所述通信方式,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点。
可选地,所述通信方式确定模块204具体用于,根据预先确定的通信配置文件,确定所述第一进程与订阅消息的通信节点所在的进程之间的关系;所述关系包括所述第一进程与订阅消息的通信节点所在的进程为同一进程内或同一设备内的不同进程内或不同设备内的进程;根据所述第一进程与订阅消息的通信节点所在的进程之间的关系,确定通信节点通过消息总线组件进行通信的通信方式;当所述关系是所述第一进程与订阅消息的通信节点所在的进程为同一进程时,所述通信方式为通过进程内传输组件,将消息发送至所述第一进程内订阅所述消息的通信节点;当所述关系是所述第一进程与订阅消息的通信节点所在的进程为同一设备内的不同进程内时,通信方式为通过同一设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件;当所述关系是所述第一进程与订阅消息的通信节点所在的进程为不同设备内的进程时,通信方式为通过不同设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件。
可选地,所述由第一进程内的通信节点发送的消息由无人驾驶设备中的消息生产者产生、并由第一进程内的通信节点发布至消息对应的话题;所述第一进程内的通信节点用于为无人驾驶设备中的消息生产者将消息发送至所述第一进程内的消息总线组件和/或为无人驾驶设备中的消息消费者从所述第一进程内的消息总线组件获取消息。
可选地,所述消息发送模块212具体用于,将订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件作为待通信消息总线组件;接收由所述待通信消息总线组件发送的与话题对应的话题订阅请求;当接收到所述待通信消息总线组件订阅的话题对应的指定队列中的各消息时,将所述话题对应的指定队列中各消息发送至所述待通信消息总线组件。
可选地,所述消息发送模块212具体用于,在所述第一进程内的消息总线组件中,确定与所述指定队列对应的组件;其中,一个队列对应于一个组件;通过与所述指定队列对应的组件,将所述话题对应的指定队列中的各消息发送至所述待通信消息总线组件。
可选地,所述消息发送模块212具体用于,接收由所述第一进程内的通信节点发送的与话题对应的话题订阅请求;当接收到所述第一进程内的通信节点订阅的话题对应的指定队列中的各消息时,将所述话题对应的指定队列中的各消息发送至所述第一进程内的通信节点。
可选地,所述消息发送模块212具体用于,在所述第一进程内的消息总线组件中,确定与所述指定队列对应的组件;其中,一个队列对应于一个组件;通过与所述指定队列对应的组件,将所述话题对应的指定队列中的各消息发送至所述第一进程内订阅所述话题对应的指定队列中各消息的通信节点。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图2提供的无人驾驶通信方法。
本说明书还提供了图4所示的电子设备的示意结构图。如图4所述,在硬件层面,该无人驾驶设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图2所述的无人驾驶通信方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (10)
1.一种无人驾驶通信方法,其特征在于,包括:
创建第一进程;
启动所述第一进程内的消息总线组件,并在所述第一进程内创建通信节点;
根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式;其中,所述第一进程内的消息总线组件用于与所述第一进程内的通信节点通信;
接收由所述第一进程内的通信节点发送的消息;
确定所述消息所属的话题,并确定所述话题对应的队列,作为指定队列;其中,同一话题对应于同一个队列;
将所述消息插入到所述指定队列的尾部;
根据所述通信方式,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点。
2.如权利要求1所述的方法,其特征在于,根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式,具体包括:
根据预先确定的通信配置文件,确定所述第一进程与订阅消息的通信节点所在的进程之间的关系;所述关系包括所述第一进程与订阅消息的通信节点所在的进程为同一进程内或同一设备内的不同进程内或不同设备内的进程;
根据所述第一进程与订阅消息的通信节点所在的进程之间的关系,确定通信节点通过消息总线组件进行通信的通信方式;
当所述关系是所述第一进程与订阅消息的通信节点所在的进程为同一进程时,所述通信方式为通过进程内传输组件,将消息发送至所述第一进程内订阅所述消息的通信节点;
当所述关系是所述第一进程与订阅消息的通信节点所在的进程为同一设备内的不同进程内时,通信方式为通过同一设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件;
当所述关系是所述第一进程与订阅消息的通信节点所在的进程为不同设备内的进程时,通信方式为通过不同设备的进程间传输组件,将消息发送至订阅所述消息的通信节点所在的进程内的消息总线组件。
3.如权利要求1所述的方法,其特征在于,所述由所述第一进程内的通信节点发送的消息由无人驾驶设备中的消息生产者产生、并由第一进程内的通信节点发布至消息对应的话题;所述第一进程内的通信节点用于为无人驾驶设备中的消息生产者将消息发送至所述第一进程内的消息总线组件和/或为无人驾驶设备中的消息消费者从所述第一进程内的消息总线组件获取消息。
4.如权利要求1所述的方法,其特征在于,将所述指定队列中各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,具体包括:
将订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件作为待通信消息总线组件;接收由所述待通信消息总线组件发送的与话题对应的话题订阅请求;
当接收到所述待通信消息总线组件订阅的话题对应的指定队列中的各消息时,将所述话题对应的指定队列中各消息发送至所述待通信消息总线组件。
5.如权利要求4所述的方法,其特征在于,将所述话题对应的指定队列中各消息发送至所述待通信消息总线组件,具体包括:
在所述第一进程内的消息总线组件中,确定与所述指定队列对应的组件;其中,一个队列对应于一个组件;
通过与所述指定队列对应的组件,将所述话题对应的指定队列中的各消息发送至所述待通信消息总线组件。
6.如权利要求1所述的方法,其特征在于,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点,具体包括:
接收由所述第一进程内的通信节点发送的与话题对应的话题订阅请求;
当接收到所述第一进程内的通信节点订阅的话题对应的指定队列中的各消息时,将所述话题对应的指定队列中的各消息发送至所述第一进程内的通信节点。
7.如权利要求6所述的方法,其特征在于,将所述话题对应的指定队列中的各消息发送至所述第一进程内的通信节点,具体包括:
在所述第一进程内的消息总线组件中,确定与所述指定队列对应的组件;其中,一个队列对应于一个组件;
通过与所述指定队列对应的组件,将所述话题对应的指定队列中的各消息发送至所述第一进程内订阅所述话题对应的指定队列中各消息的通信节点。
8.一种无人驾驶通信装置,其特征在于,包括:
进程创建模块,用于创建第一进程;
启动模块,用于启动所述第一进程内的消息总线组件,并在所述第一进程内创建通信节点;
通信方式确定模块,用于根据预先确定的通信配置文件,确定各通信节点通过消息总线组件进行通信的通信方式;其中,所述第一进程内的消息总线组件用于与所述第一进程内的通信节点通信;
消息接收模块,用于接收由所述第一进程内的通信节点发送的消息;
指定队列确定模块,用于确定所述消息所属的话题,并确定所述话题对应的队列,作为指定队列;其中,同一话题对应于同一个队列;
消息插入模块,用于将所述消息插入到所述指定队列的尾部;
消息发送模块,用于根据所述通信方式,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一设备不同进程或不同设备内的进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至订阅所述指定队列中各消息的通信节点所在的进程内的消息总线组件,当所述第一进程与订阅所述指定队列中各消息的通信节点所在的进程为同一进程时,按照所述指定队列中各消息的排序,将所述指定队列中的各消息发送至所述第一进程内订阅所述指定队列中各消息的通信节点。
9.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~7任一项所述的方法。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210023102.XA CN114546672A (zh) | 2022-01-10 | 2022-01-10 | 一种无人驾驶通信方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210023102.XA CN114546672A (zh) | 2022-01-10 | 2022-01-10 | 一种无人驾驶通信方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546672A true CN114546672A (zh) | 2022-05-27 |
Family
ID=81669354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210023102.XA Pending CN114546672A (zh) | 2022-01-10 | 2022-01-10 | 一种无人驾驶通信方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546672A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116761212A (zh) * | 2023-07-27 | 2023-09-15 | 北京小米机器人技术有限公司 | 图像传输控制方法、装置、终端设备及存储介质 |
CN118245253A (zh) * | 2024-05-28 | 2024-06-25 | 闪捷信息科技有限公司 | 组件调用方法、装置、存储介质和电子设备 |
-
2022
- 2022-01-10 CN CN202210023102.XA patent/CN114546672A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116761212A (zh) * | 2023-07-27 | 2023-09-15 | 北京小米机器人技术有限公司 | 图像传输控制方法、装置、终端设备及存储介质 |
CN116761212B (zh) * | 2023-07-27 | 2024-04-23 | 北京小米机器人技术有限公司 | 图像传输控制方法、装置、终端设备及存储介质 |
CN118245253A (zh) * | 2024-05-28 | 2024-06-25 | 闪捷信息科技有限公司 | 组件调用方法、装置、存储介质和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107526659B (zh) | 用于失效备援的方法和设备 | |
CN111174805A (zh) | 分布集中式自动驾驶系统 | |
WO2021000570A1 (zh) | 模型加载方法及系统、控制节点及执行节点 | |
CN114546672A (zh) | 一种无人驾驶通信方法、装置、设备及存储介质 | |
CN112540841B (zh) | 任务调度的方法、装置、处理器与电子设备 | |
CN111597058B (zh) | 一种数据流处理方法及系统 | |
CN112597013A (zh) | 一种在线开发以及调试方法及装置 | |
US9753769B2 (en) | Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof | |
CN110502575B (zh) | 一种数据同步的方法、装置以及设备 | |
CN112863479B (zh) | Tts语音的处理方法、装置、设备及系统 | |
CN116302457A (zh) | 一种云原生工作流引擎实现方法、系统、介质及电子设备 | |
CN114238371A (zh) | 一种自动驾驶数据的管理系统和方法、数据处理系统 | |
CN114546926B (zh) | 核心簇同步、控制方法、数据处理方法、核心、设备、介质 | |
CN116069792A (zh) | 一种数据库容灾系统、方法、装置、存储介质及电子设备 | |
CN114840353A (zh) | 一种基于zk服务器的消息订阅方法及装置 | |
CN113111007A (zh) | 一种车载对象的测试方法和装置 | |
CN115174587B (zh) | 一种数据传输系统、方法、装置、计算机可读存储介质及电子设备 | |
CN116186022A (zh) | 表单处理方法、装置、分布式表单系统和计算机存储介质 | |
CN117041980B (zh) | 一种网元管理方法、装置、存储介质及电子设备 | |
CN117407004B (zh) | 一种跨架构、跨系统、跨平台的软件部署方法 | |
CN112965698B (zh) | 自动驾驶软件架构平台、构建方法和构建装置 | |
CN117170669B (zh) | 一种基于前端高低代码融合的页面展示方法 | |
CN116361037B (zh) | 一种分布式通信系统及方法 | |
CN111797070A (zh) | 票务数据处理方法及装置 | |
Khalgui | Embedded Computing Systems: Applications, Optimization, and Advanced Design: Applications, Optimization, and Advanced Design |
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 |