1.本公开涉及计算机技术领域,尤其涉及自动驾驶、数据仿真技术领域。
背景技术:2.为了对自动驾驶系统中各个算法模块的仿真测试,需要运行仿真测试任务的仿真装置能够与算法模块之间实现消息通讯和时间同步。而不同企业的自动驾驶系统解决方案之间存在一定的差异性,特别是在运行时框架层的选择之上,这就导致不同企业的仿真装置之间缺乏通用性。
技术实现要素:3.本公开提供了一种仿真任务的控制方法、装置及仿真系统。
4.根据本公开的一方面,提供了一种仿真任务的控制方法,包括:
5.确定待接入的自动驾驶系统的至少一个目标算法模块;
6.根据目标算法模块,确定待接入的仿真系统的至少一个目标仿真模块;
7.根据目标算法模块和目标仿真模块,确定仿真推进关系;以及,
8.根据推进机制和仿真推进关系,调用统一接口库,控制仿真任务运行。
9.根据本公开的另一方面,提供了一种仿真任务的控制装置,包括:
10.第一确定模块,用于确定待接入的自动驾驶系统的至少一个目标算法模块;
11.第二确定模块,用于根据目标算法模块,确定待接入的仿真系统的至少一个目标仿真模块;
12.第三确定模块,用于根据目标算法模块和目标仿真模块,确定仿真推进关系;以及,
13.控制模块,用于根据推进机制和仿真推进关系,调用统一接口库,控制仿真任务运行。
14.根据本公开的另一方面,提供了一种仿真系统,包括:仿真引擎、统一接口库和多个目标仿真模块;其中,
15.统一接口库用于:接入至少一个目标仿真模块和自动驾驶系统的至少一个目标算法模块;
16.仿真引擎用于:根据目标算法模块和目标仿真模块,确定仿真推进关系;以及,根据推进机制和仿真推进关系,调用统一接口库,控制仿真任务运行。
17.根据本公开的另一方面,提供了一种电子设备,包括:
18.至少一个处理器;以及
19.与该至少一个处理器通信连接的存储器;其中,
20.该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行本公开中任一实施例的方法。
21.根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储
介质,其中,该计算机指令用于使该计算机执行根据本公开中任一实施例的方法。
22.根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开中任一实施例的方法。
23.本公开根据仿真任务所需的目标仿真模块和目标算法模块构建仿真推进关系,并利用统一接口库在各模块之间进行消息转换,从而实现仿真系统的目标仿真模块与不同架构自动驾驶系统的目标算法模块之间的数据交互,能够有效屏蔽不同自动驾驶系统的差异性,提升仿真系统通用性和可移植性。
24.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
25.附图用于更好地理解本方案,不构成对本公开的限定。其中:
26.图1是根据本公开一实施例的仿真任务的控制方法的流程示意图;
27.图2是根据本公开一实施例的仿真系统所接入模块的关系示意图;
28.图3是根据本公开一实施例的仿真推进关系示意图;
29.图4是根据本公开一实施例的推进机制示意图;
30.图5是根据本公开一实施例的解析库示意图;
31.图6是根据本公开一实施例的仿真任务的控制装置的结构示意图;
32.图7是根据本公开一实施例的仿真系统的结构示意图;
33.图8是根据本公开一实施例的消息通讯接口的示意图;
34.图9是根据本公开一实施例的时间同步接口的示意图;
35.图10是用来实现本公开实施例的仿真任务的控制方法的电子设备的框图。
具体实施方式
36.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
37.在相关技术中,自动驾驶系统的核心架构通常分为三层,分别是硬件层、软件层以及云端服务层。其中,软件层又可以细分为三层,分别是实时操作系统层(real time operation system,rtos)、运行时框架层(runtime framework)以及各应用算法模块层。为了能够弥补自动驾驶实车测试的不足,各行业广泛认同的方式是采用自动驾驶仿真技术,且随着仿真水平的提高和应用的普及,仿真装置将承担越来越多的测试任务。为了能够实现对算法模块的仿真测试,仿真装置需要将场景、地图等数据按照一定的规则转换为算法模块的输入,这就需要实现仿真装置与算法模块之间的消息通讯。而为了能够实现仿真装置和算法模块之间的消息同步,这就需要运行时框架在保证时间同步的基础之上,提供模块之间的消息同步机制。因此,仿真装置通常基于自动驾驶系统的运行时框架层构建,使之能够在不改变算法模块实现的基础之上,实现对算法模块的仿真。但是不同企业的自动驾驶系统解决方案之间存在一定的差异性,特别是在运行时框架层的选择之上。
38.目前,各企业采用的主流运行时框架有机器人操作系统ros(robot operating system)、适用于高速自动驾驶场景的lcm(lightweight communications and marshalling)、百度自研的cyber rt等,且随着自动驾驶技术的进步,不同特性的运行时框架将会越来越多。而不同框架之间的接口和处理方式均存在一定的差异性,特别是消息通讯、时间同步等接口,这就导致基于不同运行时框架实现的仿真装置之间难以兼容,甚至可能出现面对不同运行时框架维护不同仿真装置的情况。除此之外,在面对新的运行时框架需求时,现有仿真装置往往需要进行大量的适配和更改工作,才能实现新框架的接入,并且后期的维护和更新也将会更加困难。
39.为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个问题,本公开的实施例提出了一种仿真任务的控制方法,利用本公开的实施方式的技术方案,可以实现对多种架构的自动驾驶系统的算法模块进行仿真测试,具有通用性和可移植性。
40.图1是根据本公开一实施例的仿真任务的控制方法的流程示意图,如图1所示,该方法至少包括以下步骤:
41.s101:确定待接入的自动驾驶系统的至少一个目标算法模块。
42.需要说明的是,仿真任务的测试对象可以是不同的自动驾驶系统中的目标算法模块,作为测试对象的目标算法模块需要接入到仿真系统(也可以称为仿真装置)上。各种自动驾驶系统往往是基于不同解决方案而得到的,具体而言,各种自动驾驶系统的运行时框架层可以是采用不同架构实现的。因此,各个自动驾驶系统的目标算法模块存在多种数据协议类型。在一种示例中,算法模块可以包括:感知模块、规划模块、控制模块和定位模块中的至少一种,还可以包括其它自动驾驶系统中的任意算法模块,在此不做限定。
43.s102:根据目标算法模块,确定待接入的仿真系统的至少一个目标仿真模块。
44.本公开实施例中,根据仿真任务所要测试的目标算法模块,确定该仿真任务需要使用的目标仿真模块。在一种示例中,仿真模块包括数据仿真模块、动力学仿真模块及传感器仿真模块中的至少一种。例如,在需要对感知模块的性能进行测试时,在仿真系统一端需要接入与感知模块相关联的传感器仿真模块和数据仿真模块,以实现感知模块的测试。
45.s103:根据目标算法模块和目标仿真模块,确定仿真推进关系。
46.本公开实施例中,仿真推进关系可以理解为:为进行仿真任务而接入的各个目标算法模块和目标仿真模块形成的拓扑节点,以及各个模块之间的消息传递方向形成的拓扑节点间的连线而组成的拓扑结构。消息传递方向可以理解为仿真任务在运行和推进的过程中,各种消息传递路径。可以是单向的,也可以是双向的。
47.s104:根据推进机制和仿真推进关系,调用统一接口库,控制仿真任务运行。
48.本公开实施例中,推进机制可以理解为:仿真任务在运行过程中,在满足预设推进条件的情况下,将仿真任务推进到下一时刻或是将消息、指令发送给消息传递方向上的下一功能模块(目标算法模块和目标仿真模块中的至少一种),使其进行下一步的工作,从而实现控制仿真任务运行。
49.各个功能模块在进行消息传递时,通过统一接口库进行中间传递,统一接口库可以对消息格式进行转换。
50.根据本公开实施例的方案,通过根据仿真任务所需的目标仿真模块和目标算法模块构建仿真推进关系,并利用统一接口库在各模块之间进行消息转换,从实现仿真系统的
目标仿真模块与不同架构自动驾驶系统的目标算法模块之间的数据交互,能够有效屏蔽不同自动驾驶系统的差异性,提升仿真系统通用性和可移植性。
51.在一种可能的实施方式中,步骤s103:根据目标算法模块及目标仿真模块,确定仿真推进关系,进一步包括步骤:
52.s201:获取目标算法模块和目标仿真模块的注册信息。
53.注册信息可以包括:系统信息、解析协议、模块参数文件、模块输入输出、路测数据、场景文件、地图文件等信息中的至少一种。上述各类注册信息以google protobuf的数据格式组织数据,以便来源于不同架构自动驾驶系统的目标算法模块的注册信息通过统一接口库,以统一的方式接入到仿真系统中。
54.s202:根据注册信息,确定各个目标算法模块与各个目标仿真模块之间的消息传递方向。
55.具体而言,根据注册信息中的系统信息和模块输入输出,可以确定该功能模块为实现仿真测试而需要进行数据交互的其它功能模块,从而得到该功能模块与需要进行数据交互的其它功能模块之间的消息传递方向。仿真系统在收到各功能模块注册的信息后,存储于配置化管理中心的映射表中。
56.s203:根据目标算法模块、目标仿真模块和消息传递方向,确定仿真推进关系。
57.本公开实施例中,基于已接入功能模块的注册信息,确定仿真系统运行过程的拓扑(topo)结构。topo结构中以各功能模块为节点,各功能模块间的消息传递方向为边,从而确定仿真任务在运行和推进的过程中的消息传递路径,得到仿真推进关系。需要说明的是,各功能模块形成的topo结构通常是环形,即topo环路。
58.在一种示例中,如图2所示,仿真系统包括配置化管理中心,用于将不同自动驾驶系统的不同算法模块接入到仿真系统中,实现模块的分布式接入(模块注册)。例如,感知模块可以来自于自动驾驶系统a、定位模块来自于自动驾驶系统b以及规划控制模块来自于自动驾驶系统c。相似的,目标仿真模块也可以来自于不同的系统。仿真系统基于topo分析的理论依据,采用现有技术中的图论、矩阵、有限状态机等理论分析得到仿真运行过程的topo环路,实现仿真任务的模块拓展。
59.根据本公开实施例的方案,通过目标算法模块和目标仿真模块的注册信息,得到各功能模块形成的拓扑结构和各功能模块间消息传递方向,以实现仿真任务的运行推进。
60.在一种可能的实施方式中,步骤s203:根据目标算法模块、目标仿真模块和消息传递方向,确定仿真推进关系,进一步包括步骤:
61.s2031:根据注册信息所包含的模块参数文件,分别确定目标算法模块的仿真运行参数和目标仿真模块的仿真运行参数。
62.s2032:根据注册信息所包含的数据协议,确定各个消息传递方向在发生数据交互时的消息解析方式。
63.需要说明的是,消息解析方式可以理解为:根据不同功能模块的注册信息所包含的解析协议,确定两个具有不同解析协议的功能模块之间的数据交互方式。
64.在一种示例中,某个仿真任务接入了数据仿真模块、规划模块、控制模块以及动力学仿真模块,上述4个模块形成的topo环路如图3所示。消息传递方向包括:数据仿真模块需要向规划模块发送障碍物(obstacle)信息和交通信号灯(traffic_light)信息。规划模块
需要向控制模块发送路径规划(planning)信息。控制模块需要向动力学仿真模块发送控制(control)信息,动力学仿真模块需要分别向数据仿真模块和规划模块发送车辆状态(carstatus)信息。由于上述模块可能来自不同的系统,各模块采用的解析协议互不匹配。例如,数据仿真模块采用解析协议a,规划模块采用解析协议b,控制模块采用解析协议c,动力学仿真模块采用解析协议d。因此,需要确定从解析协议a到解析协议b进行转换的消息解析方式。即将由第一功能模块基于其自身的解析协议a发出的消息或数据,转换为可以被第二功能模块的解析协议b进行解析的消息或数据。解析方式记录在仿真系统中,并由统一接口库完成不同解析协议的转换。
65.s2033:基于目标算法模块、目标仿真模块、消息传递方向、仿真运行参数以及消息解析方式,确定仿真推进关系。
66.根据本公开实施例的方案,通过各功能模块的注册信息,在topo环路的基础上,以仿真运行参数和解析协议为条件,构建出了对仿真任务进行过程控制的仿真推进关系。
67.在一种可能的实施方式中,步骤s104:根据推进机制和仿真推进关系,调用统一接口库,控制仿真任务运行,进一步包括步骤:
68.s301:根据推进机制,确定目标模块和需要传递的第一仿真消息,其中,目标模块包括至少一个目标算法模块和/或至少一个目标仿真模块。
69.在一种示例中,根据推进机制,传感器仿真模块满足了预设推进条件,例如,获取到新的障碍物数据,需要将相应消息或控制指令发送给感知模块,因此在该示例中,目标模块为感知模块,与障碍物数据相应的消息或控制指令为第一仿真消息。在另一示例中,规划模块满足了预设推进条件,例如,计算得出了新的行进路径数据,需要将相应的消息或控制指令发送给控制模块。因此在该示例中,目标模块为控制模块,与行进路径数据相应的消息或控制指令为第一仿真消息。
70.s302:根据仿真推进关系,确定第一仿真消息的消息传递方向。
71.在确定了目标模块后,根据仿真推进关系中包含的topo环路上消息传递方向,可以确定第一仿真消息的消息传递方向。
72.s303:由统一接口库根据第一仿真消息的消息传递方向对应的消息解析方式,对第一仿真消息进行转换,得到目标模块可解析的第二仿真消息。
73.在确定了第一仿真消息的消息传递方向后,根据对应的消息解析方式,调用统一接口库,将第一仿真消息转换为目标模块可解析的第二仿真消息。
74.s304:由统一接口库将第二仿真消息传递给目标模块,以实现控制仿真任务运行。
75.根据本公开实施例的方案,通过统一接口库对各个功能模块之间发送的数据进行协议转换,实现了仿真系统与不同自动驾驶系统上基于不同协议的算法模块间的数据交互。
76.在一种可能的实施方式中,步骤s304:根据推进机制,确定目标模块和需要传递的第一仿真消息,进一步包括步骤:
77.在推进机制所包含的时间推进条件得到满足的情况下,将仿真任务的当前时刻推进到下一个时间戳。
78.根据推进后的当前时刻,确定需要传递的第一仿真消息和与第一仿真消息对应的目标模块。
79.需要说明的是,仿真任务通常具有多个包含预设场景模拟数据的时间戳,场景模拟数据包括路测数据、场景文件和地图文件中的至少一种组成。例如,在仿真任务的1分21秒,行驶到匝道路口;在仿真任务的2分34秒,车辆前方出现行人;在仿真任务的3分39秒,前方路口为红灯。可以理解为,仿真任务包含多个具有时间戳的待处理仿真数据,通过将待处理仿真数据发送给对应的功能模块,使该功能模块作出相应处理,从而测试各功能模块的性能。如图4所示,仿真系统通过时钟推进线程(thread1)依次轮询当前时刻的各个时间推进条件,在满足其中至少一个时间推进条件的情况下,将仿真任务的当前时刻推进到下一个具有待处理仿真数据的时间戳。在不满足时间推进条件的情况下,时间线程进行短暂睡眠。
80.根据本公开实施例的方案,通过时间推进机制,对仿真任务的运行进行控制。
81.在一种可能的实施方式中,时间推进条件,包括:当前时刻的所有仿真消息收发完成。
82.根据本公开实施例的方案,在当前时刻的所有待处理仿真数据收发完成后,将仿真任务的当前时刻推进到下一个时间戳,实现对仿真任务的运行进行控制。
83.在一种可能的实施方式中,步骤s304:根据推进机制,确定目标模块和需要传递的第一仿真消息,进一步包括步骤:
84.在推进机制所包含的任意一个模块运行条件得到满足的情况下,根据模块运行条件,确定需要传递的第一仿真消息和与第一仿真消息对应的目标模块。
85.模块运行条件包括判断条件信息、目标模块信息和对应消息信息,在满足判断条件的情况下,向目标模块发送对应消息。如图4所示,仿真系统通过模块流控线程(thread2)依次轮询各个模块运行条件,在任意一个模块运行条件所包含的判断条件信息得到满足的情况下,根据模块运行条件所包含的目标模块和对应消息信息,确定需要传递的第一仿真消息和与第一仿真消息对应的目标模块。
86.根据本公开实施例的方案,通过模块运行推进机制,对仿真任务的运行进行控制。
87.在一种可能的实施方式中,模块运行条件,包括:
88.当前时刻到达预设的运行时刻;或者
89.获取到预设仿真消息。
90.在一种示例中,在将当前时刻推进到下一时间戳后,模块流控线程依次轮询各个功能模块的模块运行条件,判断是否到达该功能模块的预设的运行时刻。在另一种示例中,感知模块获取到预设仿真消息,例如,预设仿真消息可以是探测到危险障碍物,则可以向控制模块发出相应的控制消息。
91.根据本公开实施例的方案,通过是否到达预设的运行时刻或是否获取到预设的仿真消息判断是否满足模块运行条件,实现对仿真任务的运行进行控制。
92.在一种可能的实施方式中,上述步骤:根据注册信息所包含的数据协议,确定各个消息传递方向在发生数据交互时的消息解析方式,进一步包括:
93.根据注册信息所包含的数据协议、路测数据、用户场景文件、地图文件,分别确定标准落盘数据解析库与路测数据、标准场景解析库与场景文件、标准地图解析库与地图文件的消息解析方式。
94.如图5所示,根据注册信息所包含的数据协议,确定标准落盘数据解析库与路测数
据之间的标准消息协议、标准场景解析库与场景文件之间的标准场景协议以及标准地图解析库与地图文件之间的标注标准地图协议,从而使仿真系统可以利用不同协议的路测数据、用户场景文件和地图文件进行场景模拟或场景评测。
95.根据本公开实施例的方案,通过标准落盘数据解析库、标准场景解析库与标准地图解析库分别支持自动驾驶路测数据、用户自定义场景以及地图文件的接入,支持内容包括但不限于openx系列标准协议、中国汽研“中国典型场景库”、各企业自定义格式和标准等。
96.图6是根据本公开实施例提供一种仿真任务的控制装置,如图6所示,该装置至少包括:
97.第一确定模块601,用于确定待接入的自动驾驶系统的至少一个目标算法模块。
98.第二确定模块602,用于根据目标算法模块,确定待接入的仿真系统的至少一个目标仿真模块。
99.第三确定模块603,用于根据目标算法模块和目标仿真模块,确定仿真推进关系。
100.控制模块604,用于根据推进机制和仿真推进关系,调用统一接口库,控制仿真任务运行。
101.在一种可能的实施方式中,第三确定模块603还包括:
102.获取子模块,用于获取目标算法模块和目标仿真模块的注册信息。
103.传递方向确定子模块,用于根据注册信息,确定各个目标算法模块与各个目标仿真模块之间的消息传递方向。
104.推进关系确定子模块,用于根据目标算法模块、目标仿真模块和消息传递方向,确定仿真推进关系。
105.在一种可能的实施方式中,推进关系确定子模块还用于:
106.根据注册信息所包含的模块参数文件,分别确定目标算法模块的仿真运行参数和目标仿真模块的仿真运行参数。
107.根据注册信息所包含的数据协议,确定各个消息传递方向在发生数据交互时的消息解析方式。
108.基于目标算法模块、目标仿真模块、消息传递方向、仿真运行参数以及消息解析方式,确定仿真推进关系。
109.在一种可能的实施方式中,控制模块604包括:
110.第一确定子模块,用于根据推进机制,确定目标模块和需要传递的第一仿真消息,其中,目标模块包括至少一个目标算法模块和/或至少一个目标仿真模块。
111.第二确定子模块,用于根据仿真推进关系,确定第一仿真消息的消息传递方向。
112.第一调用子模块,用于调用统一接口库根据所述第一仿真消息的消息传递方向对应的消息解析方式,对第一仿真消息进行转换,得到目标模块可解析的第二仿真消息。
113.第二调用子模块,用于调用统一接口库将第二仿真消息传递给目标模块,以实现控制仿真任务运行。
114.在一种可能是实现方式中,第一确定子模块还用于:
115.在推进机制所包含的时间推进条件得到满足的情况下,将仿真任务的当前时刻推进到下一个时间戳。
116.根据推进后的当前时刻,确定需要传递的第一仿真消息和与第一仿真消息对应的目标模块。
117.在一种可能是实现方式中,时间推进条件包括:当前时刻的所有仿真消息收发完成。
118.在一种可能是实现方式中,第一确定子模块还用于:
119.在推进机制所包含的任意一个模块运行条件得到满足的情况下,根据模块运行条件,确定需要传递的第一仿真消息和与第一仿真消息对应的目标模块。
120.在一种可能是实现方式中,模块运行条件包括:
121.当前时刻到达预设的运行时刻。或者
122.获取到预设仿真消息。
123.在一种可能是实现方式中,推进关系确定子模块还用于:
124.根据注册信息所包含的数据协议、路测数据、场景文件以及地图文件,分别确定标准落盘数据解析库与路测数据、标准场景解析库与场景文件、标准地图解析库与地图文件的消息解析方式。
125.本公开实施例的装置的各模块、子模块的具体功能和示例的描述,可以参见上述方法实施例中对应步骤的相关描述,在此不再赘述。
126.图7是根据本公开实施例提供一种仿真系统,如图7所示,该系统700包括:仿真引擎701、统一接口库703和多个目标仿真模块702。其中,
127.统一接口库703用于:接入至少一个目标仿真模块702和自动驾驶系统的至少一个目标算法模块。
128.仿真引擎701用于:根据目标算法模块和目标仿真模块702,确定仿真推进关系。以及,根据推进机制和仿真推进关系,调用统一接口库703,控制仿真任务运行。
129.根据本公开实施例的方案,提供了一种可接入多种异构无人车运行时框架的通用性仿真系统。
130.在一种可能的实现方式中,统一接口库703还用于:在各个目标算法模块及目标仿真模块702之间进行消息传递时,进行格式转换,以实现不同数据协议的目标算法模块与目标仿真模块702之间的数据交互。
131.根据本公开实施例的方案,在现有无人车运行时框架的基础之上,设计与实现了仿真系统的统一接口库,基于该统一接口库开发的仿真系统独立于运行时框架及其接口,当运行时框架发生改变时,开发人员无需修改仿真系统的实现,只需要适配统一接口库,即可完成仿真系统的移植。
132.在一种可能的实现方式中,仿真引擎701还包括配置化管理中心,用于将目标算法模块和目标仿真模块的注册信息存储于映射表中。
133.需要说明是,仿真系统700与自动驾驶系统的运行时框架接入时,根据用户仿真任务的需求,会生成用户自定义仿真功能模块,仿真引擎701负责仿真模块702以及用户自定义仿真功能模块运行时的流程控制。其中,仿真模块702的开发人员可以基于统一接口库703接入不同的仿真模块702,使其受仿真引擎701控制;仿真系统700通过用户自定义仿真功能模块实现与车端模块的消息通讯,仿真系统通过对用户自定义仿真功能模块的控制实现对车端模块的控制。仿真系统作为独立的运行时对象存在,与仿真模块以及用户自定义
仿真功能模块之间的消息通讯均基于数据分发服务(data distribution service,dds)标准实现。
134.在一种示例中,统一接口库包括消息通讯接口和时间同步接口。消息通讯接口用于提供通用且不同类型的消息读写能力,能够实现算法模块与仿真系统间一对一、一对多和多对一的消息通讯。时间同步接口用于提供运行时框架的时间操作,包括时间的设置和获取,定时任务的设置等。在现有的自动驾驶运行时框架中,每个算法模块加载后都被称为节点。消息通讯接口负责算法模块节点与节点之间,以及仿真系统与算法模块节点之间的消息通讯。以ros运行时框架为例,提供了四种通讯方式,包括topic通讯、service通讯、parameter通讯和action通讯。每一种通讯方式都有其特点,其中topic是节点间最常用的一种异步通讯方式,节点与节点间采用发布/订阅的方式进行消息的交流。而lcm主要是基于udp传输的特性,通过将消息封装在不同的channel中进行通讯,实现了一种发布/订阅的消息传递模型,类似于ros中的topic通讯。
135.本公开实施例中,消息通讯接口如图8所示,包括读对象创建接口、写对象创建接口、消息读注册接口和消息写注册接口。其中,读对象创建接口与写对象创建接口分别用于构造运行时框架中指定消息channel的读或写对象,用于满足消息的读写操作。而消息读注册接口消息和消息写注册接口分别用于抽象消息的发布与订阅,支持仿真装置与用户算法节点之间的消息通讯。
136.为了满足仿真装置对算法模块运行时的控制,还需要实现仿真系统与算法模块之间的时间同步。一般的运行时框架都会提供时间同步接口,以ros运行时框架为例,其提供了两套时间的概念,分别是time和wall time,它们两个的接口完全一样,数据类型也相同,但是time可以被人为修改,而wall time不可以。因此,为了满足仿真装置中场景复现的需求,在ros框架下的无人车仿真时通常选用的时间是time,而非wall time。而像在lcm等通讯框架中,没有提供时间同步的接口,则需要仿真装置本身提供一套默认的仿真时间同步接口。因此,时间同步接口如图9所示,包括初始化时间接口、获取当前时间接口和设置当前时间接口。其中,初始化时间接口用于仿真装置开始仿真前时间的初始化,获取当前时间接口和设置当前时间接口分别用于获取和更新当前仿真任务的仿真时间。
137.根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
138.图10示出了可以用来实施本公开的实施例的示例电子设备1000的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
139.如图10所示,设备1000包括计算单元1001,其可以根据存储在只读存储器(rom)1002中的计算机程序或者从存储单元1008加载到随机访问存储器(ram)1003中的计算机程序,来执行各种适当的动作和处理。在ram 1003中,还可存储设备1000操作所需的各种程序和数据。计算单元1001、rom 1002以及ram 1003通过总线1004彼此相连。输入/输出(i/o)接口1005也连接至总线1004。
140.设备1000中的多个部件连接至i/o接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
141.计算单元1001可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1001的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元1001执行上文所描述的各个方法和处理,例如仿真任务的控制方法。例如,在一些实施例中,仿真任务的控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由rom 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到ram 1003并由计算单元1001执行时,可以执行上文描述的仿真任务的控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行仿真任务的控制方法。
142.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
143.用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
144.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
145.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的
反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入、或者触觉输入)来接收来自用户的输入。
146.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
147.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
148.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
149.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。