CN113703339A - 一种自动驾驶仿真方法、装置、设备及存储介质 - Google Patents

一种自动驾驶仿真方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113703339A
CN113703339A CN202110974818.3A CN202110974818A CN113703339A CN 113703339 A CN113703339 A CN 113703339A CN 202110974818 A CN202110974818 A CN 202110974818A CN 113703339 A CN113703339 A CN 113703339A
Authority
CN
China
Prior art keywords
simulation
plug
automatic driving
target
calling
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
Application number
CN202110974818.3A
Other languages
English (en)
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 Jingdong Qianshi Technology Co Ltd
Original Assignee
Beijing Jingdong Qianshi 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 Jingdong Qianshi Technology Co Ltd filed Critical Beijing Jingdong Qianshi Technology Co Ltd
Priority to CN202110974818.3A priority Critical patent/CN113703339A/zh
Publication of CN113703339A publication Critical patent/CN113703339A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B17/00Systems involving the use of models or simulators of said systems
    • G05B17/02Systems involving the use of models or simulators of said systems electric

Abstract

本发明实施例公开了一种自动驾驶仿真方法、装置、设备及存储介质。该方法应用于自动驾驶仿真引擎,可包括:在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本;在执行目标仿真脚本时,如果接收到插件调用指令,则确定与插件调用指令对应的待调用插件,待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;对待调用插件进行调用,并继续执行目标仿真脚本。本发明实施例的技术方案,将自动驾驶仿真算法作为插脚以供自动驾驶仿真引擎调用,换言之将自动驾驶仿真引擎独立于自动驾驶仿真算法外,由此可以在对自动驾驶仿真算法透明的情况下升级自动驾驶仿真引擎。

Description

一种自动驾驶仿真方法、装置、设备及存储介质
技术领域
本发明实施例涉及自动驾驶技术领域,尤其涉及一种自动驾驶仿真方法、装置、设备及存储介质。
背景技术
随着计算机技术的迅速发展,自动驾驶受到了人们的广泛关注。为了提高车辆在自动驾驶过程中的安全性和可靠性,经常需要基于自动驾驶仿真引擎和自动驾驶仿真算法对车辆的自动驾驶过程进行仿真运行。
在实现本发明的过程中,发明人发现现有技术中存在以下技术问题:在对自动驾驶仿真引擎进行升级后,升级后的自动驾驶仿真引擎只有在对自动驾驶仿真算法中的相关代码进行更新和重编译后方能生效,操作便捷性较差。
发明内容
本发明实施例提供了一种自动驾驶仿真方法、装置、设备及存储介质,以实现在对自动驾驶仿真算法透明的情况下升级自动驾驶仿真引擎。
第一方面,本发明实施例提供了一种自动驾驶仿真方法,应用于自动驾驶仿真引擎,可以包括:
在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本;
在执行目标仿真脚本时,若接收到插件调用指令,则确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;
对待调用插件进行调用,并继续执行目标仿真脚本。
第二方面,本发明实施例还提供了一种自动驾驶仿真装置,配置于该自动驾驶仿真引擎,可以包括:
脚本执行模块,用于在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本;
插件确定模块,用于在执行目标仿真脚本时,若接收到插件调用指令,则确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;
插件调用模块,用于对待调用插件进行调用,并继续执行目标仿真脚本。
第三方面,本发明实施例还提供了一种自动驾驶仿真设备,可以包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本发明任意实施例所提供的自动驾驶仿真方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的自动驾驶仿真方法。
本发明实施例的技术方案,自动驾驶仿真引擎在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行该目标仿真脚本以进行车辆的自动驾驶过程的仿真;在执行目标仿真脚本时,如果自动驾驶仿真引擎接收到插件调用指令,则可以确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;对待调用插件进行调用,并继续执行目标仿真脚本。上述技术方案,通过将自动驾驶仿真算法编译为待调用插件,进而在自动驾驶仿真引擎中对待调用插件进行调用,由此将自动驾驶仿真引擎独立于自动驾驶仿真算法外,实现了二者的解耦合,达到了在对自动驾驶仿真算法透明的情况下升级自动驾驶仿真引擎的效果,即在无需对自动驾驶仿真算法中的相关代码进行更新和重编译时,可以直接应用升级后的自动驾驶仿真引擎。
附图说明
图1是本发明实施例一中的一种自动驾驶仿真方法的流程图;
图2是本发明实施例二中的一种自动驾驶仿真方法的流程图;
图3是本发明实施例三中的一种自动驾驶仿真方法的流程图;
图4a是本发明实施例三的中一种自动驾驶仿真方法中可选示例的示意图;
图4b是本发明实施例三中的一种自动驾驶仿真方法中流程模块的示意图;
图5是本发明实施例四中的一种自动驾驶仿真装置的结构框图;
图6是本发明实施例五中的一种自动驾驶仿真设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在介绍本发明实施例之前,先对本发明实施例的应用场景进行示例性说明:自动驾驶仿真引擎(后文简称为仿真引擎)可以是用于对车辆的自动驾驶过程进行仿真的引擎(engine),其可以理解为包含有各种自动驾驶仿真流程(后文简称为仿真流程)的架构,通过仿真引擎的运行可以实现内部各种仿真流程的执行。相应的,自动驾驶仿真算法(后文简称为仿真算法)可以是用于与仿真流程相互配合的以对自动驾驶过程进行仿真的算法。
在实际应用中,可选的,自动驾驶团队多会自行研发仿真引擎,这种模式下的仿真引擎多是根据本团队开发出的仿真算法进行定制化的引擎,因此仿真引擎与仿真算法高度耦合,一般会将仿真引擎耦合在仿真算法中,由此达到了在运行仿真引擎过程中直接调用仿真算法的目的。但是,当将仿真引擎内嵌在仿真算法中并且将仿真算法发布后,在仿真算法内绑定的仿真引擎的版本也会相应固化,其存在上文中阐述的仿真引擎的升级过程对仿真算法不透明的问题。
为了解决上述问题,发明人在对现有技术进行充分研究的基础上,提出了将仿真算法插件化,然后在运行仿真引擎时通过调用插件的方式实现仿真流程和仿真算法的相互配合的技术方案,其中插件可以理解为由仿真算法露出来的可被仿真引擎调用的以将仿真算法和仿真流程连通在一起的接口。
实施例一
图1是本发明实施例一中提供的一种自动驾驶仿真方法的流程图。本实施例可适用于对自动驾驶过程进行仿真的情况,尤其适用于将仿真算法作为插件内嵌于仿真引擎中以对自动驾驶过程进行仿真的情况。该方法可以由本发明实施例提供的自动驾驶仿真装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以配置在自动驾驶仿真引擎中,并且集成在自动驾驶仿真设备上,该设备可以是各种用户终端或服务器。
参见图1,本发明实施例的方法具体包括如下步骤:
S110、在接收到自动驾驶仿真指令时,获取自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本。
其中,自动驾驶仿真指令(后文简称为仿真指令)可以是用于对某种自动驾驶过程进行仿真的指令,如对切车过程、高速下道过程、直道高速行驶过程等进行仿真的指令,因此根据仿真指令可以确定需要对哪种自动驾驶过程进行仿真。由于在仿真引擎中内嵌有用于实现对上述自动驾驶过程进行仿真的目标仿真脚本,因此可以获取与仿真指令对应的目标仿真脚本,其可以理解为用于实现对上述自动驾驶过程进行仿真的自动驾驶仿真流程(后文简称为仿真流程)的脚本。在实际应用中,可选的,目标仿真脚本可以是各自动驾驶仿真脚本中的与仿真指令对应的脚本,这些自动驾驶仿真脚本可以对应于相同或是不同的仿真流程,即每个仿真流程下的自动驾驶仿真脚本的数量可以是一个、两个或多个,在此未做具体限定。在获取到目标仿真脚本后,执行该目标仿真脚本以进行上述自动驾驶过程的仿真。
在此基础上,可选的,执行目标仿真脚本,可包括:获取与自动驾驶仿真指令对应的已验证数据,基于已验证数据执行目标仿真脚本以对与已验证数据对应的待验证算法进行验证;其中,已验证数据为场景数据时,待验证算法为车辆行驶算法,自动驾驶仿真算法是与车辆行驶算法相关的算法;已验证数据为车辆行驶数据时,待验证算法为仿真场景生成算法,自动驾驶仿真算法是与仿真场景生成算法相关的算法。其中,在自动驾驶仿真过程中可能涉及到以下三方面内容:仿真引擎、场景数据(如基于仿真场景生成算法生成的数据、在实际环境中采集到的数据等)和车辆行驶算法。上述过程可以理解为对其涉及到的某个算法(其可以称为待验证算法)的准确性进行验证的过程,具体的待验证算法与准确性已经被验证的数据(即已验证数据)有关,如已验证数据是场景数据时,待验证算法可以为用于控制车辆自动行驶的车辆行驶算法,由此可以验证出车辆行驶算法是否能够让车辆在场景数据下安全行驶,此时的仿真算法可以是与车辆行驶算法有关的算法;已验证数据为车辆行驶数据(如基于车辆行驶算法生成的数据、在实际环境中采集得到的数据等)时,待验证算法可以为用于生成仿真场景的仿真场景生成算法,由此可以验证出仿真场景生成算法是否能够生成符合物理世界客观规律的仿真场景,此时的仿真算法可以是与仿真场景生成算法相关的算法。在此基础上,在执行目标仿真脚本时,可以获取与仿真指令对应的已验证数据,并基于已验证数据执行目标仿真脚本以对与已验证数据(也是与仿真指令)对应的待验证算法进行验证。
S120、在执行目标仿真脚本时,如果接收到插件调用指令,则确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的。
其中,与目标仿真脚本关联的仿真算法,即在与目标仿真脚本对应的仿真流程中涉及到的仿真算法是已经预先插件化的算法,此时存在与仿真算法对应的待被仿真引擎调用的插件。因此,在执行目标仿真脚本即在运行与目标仿真脚本对应的仿真流程时,有可能运行到需要与仿真算法相互配合的部分,此时可以由目标仿真脚本触发插件调用指令。在此基础上,由于与仿真算法对应的插件可能存在至少一个,因此仿真引擎在接收到插件调用指令时,可以根据其从各插件中确定目标仿真脚本需要调用的待调用插件。
S130、对待调用插件进行调用,并继续执行目标仿真脚本。
其中,在确定待调用插件后,对其进行调用,并继续执行目标仿真脚本中未被执行的脚本代码。需要说明的是,目标仿真脚本的继续执行步骤可以在待调用插件调用完成后执行,即在得到待调用插件的调用结果后,根据调用结果继续执行目标仿真脚本;也可以在对待调用插件进行调用过程中执行,即无需等待调用结果即可继续执行目标仿真脚本;等等,在此未做具体限定。另外,待调用插件的调用过程可以通过动态链接库(Dynamic LinkLibrary,DLL)、网络服务等多种方式进行,相对于网络服务,动态链接库的资源消耗更小。
本发明实施例的技术方案,自动驾驶仿真引擎在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行该目标仿真脚本以进行车辆的自动驾驶过程的仿真;在执行目标仿真脚本时,如果自动驾驶仿真引擎接收到插件调用指令,则可以确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;对待调用插件进行调用,并继续执行目标仿真脚本。上述技术方案,通过将自动驾驶仿真算法编译为待调用插件,进而在自动驾驶仿真引擎中对待调用插件进行调用,由此将自动驾驶仿真引擎独立于自动驾驶仿真算法外,实现了二者的解耦合,达到了在对自动驾驶仿真算法透明的情况下升级自动驾驶仿真引擎的效果,即在无需对自动驾驶仿真算法中的相关代码进行更新和重编译时,可以直接应用升级后的自动驾驶仿真引擎。
实施例二
图2是本发明实施例二中提供的一种自动驾驶仿真方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,上述自动驾驶仿真方法,还可包括:将自动驾驶仿真算法编译为动态链接库,并将动态链接库作为对自动驾驶仿真算法进行插件化后得到的待调用插件的插件接口;相应,对待调用插件进行调用,可包括:基于插件接口对待调用插件进行调用。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图2,本实施例的方法具体可以包括如下步骤:
S210、将与目标仿真脚本关联的自动驾驶仿真算法编译为动态链接库,并将动态链接库作为对自动驾驶仿真算法进行插件化后得到的待调用插件的插件接口。
其中,在实际应用中,可以将基于仿真算法编译出的动态链接库,作为对仿真算法进行插件化后得到的待调用插件的插件接口。也就是说,可以在仿真算法中设置单独的插件接口(即仿真算法的编译结果,其可以理解为一个独立的可执行文件),并将仿真算法中可能被调用的算法逻辑抽象到插件接口中,即将这些算法逻辑均编入到动态链接库中视为插件接口。由此,后续可以基于动态链接的方式打开动态链接库,进而基于插件接口对待调用插件进行调用,由此达到了仿真流程和仿真算法间的联动仿真的效果。
需要说明的是,本步骤阐述了仿真算法的插件化过程,亦即待调用插件的得到过程。从数据流角度而言,本步骤中的仿真算法可以是与仿真引擎接收到的仿真指令对应的算法,但是,在实际应用中,任意的仿真算法的插件化过程均可以是基于本步骤实现的,在此未做具体限定。
S220、在接收到自动驾驶仿真指令时,获取自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本。
S230、在执行目标仿真脚本时,如果接收到插件调用指令,则确定与插件调用指令对应的待调用插件。
S240、基于插件接口对待调用插件进行调用,并继续执行目标仿真脚本。
本发明实施例的技术方案,通过将自动驾驶仿真算法编译为动态链接库,然后将动态链接库作为对自动驾驶仿真算法进行插件化后得到的待调用插件的插件接口,由此后续可以基于动态链接的方式打开动态链接库(即插件接口),进而基于插件接口对待调用插件进行调用,由此达到了在资源消耗较小的情况下进行插件调用的效果。
一种可选的技术方案,在目标仿真脚本中设置有插件管理类,待调用插件已被注册到插件管理类中;基于插件接口对待调用插件进行调用,可以包括:通过调用设置在插件管理类中的与待调用插件关联的模板函数,调用插件接口以实现待调用插件的调用。其中,插件管理类可以是设置在目标仿真脚本中的用于对注册在自身中的插件进行管理的类,因此将待调用插件注册到插件管理类后,可以基于插件管理类对该待调用插件进行管理,如通过插件管理类使用动态链接的方式打开动态链接库,即通过插件管理类调用插件接口以实现插件调用。在实际应用中,可选的,其可以是一个单例类。在此基础上,考虑到在插件管理类中可能注册有很多的待调用插件,针对各待调用插件的插件接口,有的插件接口存在接口参数,有的插件接口未存在接口参数,而存在接口参数的各插件接口的接口参数的参数类型可能相同或是不同,由此调用插件接口时,为了简化操作,可以先调用设置在插件管理类中与待调用插件关联的支持接口参数传递的模板函数,以便通过被调用的模板函数调用插件接口,即通过同一模板函数进行各插件接口的调用,由此无需基于固定的接口参数进行插件接口的调用,达到了插件接口的快速调用的效果。
实施例三
图3是本发明实施例三中提供的一种自动驾驶仿真方法的流程图。本实施例以上述各技术方案为基础进行优化。在本实施例中,可选的,获取与自动驾驶仿真指令对应的目标仿真脚本,执行目标仿真脚本,可以包括:确定与自动驾驶仿真指令对应的自动驾驶仿真业务;针对于预先设置在自动驾驶仿真引擎中的各自动驾驶仿真组件,从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件,并对各目标仿真组件进行调用;其中,各自动驾驶仿真组件是基于自动驾驶仿真流程对预先设置的各自动驾驶仿真脚本中的脚本代码进行模块化后得到的;在执行目标仿真脚本时,可包括:在对各目标仿真组件中的当前仿真组件进行调用时;继续执行目标仿真脚本,包括:继续执行当前仿真组件中未被执行的组件代码。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。
参见图3,本实施例的方法具体可以包括如下步骤:
S310、在接收到自动驾驶仿真指令时,确定与该自动驾驶仿真指令对应的自动驾驶仿真业务。
其中,自动驾驶仿真业务(后文可简称为仿真业务)可以理解为对与仿真指令对应的自动驾驶过程进行仿真的业务,如上文中举例的对切车过程、高速下道过程、直道高速行驶过程等进行仿真的业务。
S320、针对预先设置在自动驾驶仿真引擎中的各自动驾驶仿真组件,从各自动驾驶仿真组件中确定出与自动驾驶仿真业务对应的目标仿真组件,并对各目标仿真组件进行调用,其中,各自动驾驶仿真组件是基于自动驾驶仿真流程对预先设置的各自动驾驶仿真脚本中的脚本代码进行模块化后得到的。
其中,为了搭建通用的可以适应于不同的仿真流程的仿真引擎,可以对各仿真流程进行抽象,具体来说可以是基于各仿真流程对各自动驾驶仿真脚本中的脚本代码进行模块化,得到自动驾驶仿真组件(其还可以称为自动驾驶仿真模块),然后基于这些自动驾驶仿真组件搭建出仿真引擎。需要说明的,针对每个仿真流程,对其进行抽象化后得到的自动驾驶仿真组件的数量可以是一个、两个或是多个,这与实际的仿真流程有关,在此未做具体限定。在此基础上,如果将每个自动驾驶仿真组件分别作为一个积木块,则仿真引擎可以认为是由多个积木块搭建出来的架构,不同的仿真流程需要的积木块可能相同或是不同,在此未做具体限定。示例性的,仿真引擎可包括自动驾驶仿真组件A-E,仿真流程1包括自动驾驶仿真组件A-C、仿真流程2包括自动驾驶仿真组件A、B和D、以及仿真流程3包括自动驾驶仿真组件C-E。
进一步,由于各仿真业务的仿真流程可能存在差异,即与各仿真业务匹配的自动驾驶仿真组件可能存在差异,因此可以从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件,并对各目标仿真组件进行调用。需要说明的,目标仿真组件的数量可以是一个、两个或是多个;当目标仿真组件的数量是至少两个时,各目标仿真组件的调用顺序可以是同时调用或是先后调用,在此未做具体限定。
S330、在对各目标仿真组件中的当前仿真组件进行调用时,若接收到插件调用指令,则确定与插件调用指令对应的待调用插件,其中,待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的。
其中,当前仿真组件可以是各目标仿真组件中当前正在被调用的目标仿真组件,其的数量可以是一个、两个或是多个,在此未做具体限定。
S340、对待调用插件进行调用,并继续执行当前仿真组件中的未被执行的组件代码。
其中,组件代码是当前仿真组件中的代码,由于在执行当前仿真组件中的组件代码过程中调用了待调用插件,这意味着当前仿真组件中的部分组件代码已被执行,而部分组件代码还未被执行,因此在调用待调用插件时或后,可以继续执行那些未被执行的组件代码。
需要说明的是,相对于将仿真引擎外置于仿真算法外,在仿真引擎中进行仿真流程的定制化,并在该仿真流程中调用仿真算法,以使仿真算法通过读写消息队列的方式获取上下文数据进行仿真的技术方案,上述技术方案允许算法人员将仿真流程中涉及到的消息传递、拓扑配置、算法调用等功能抽象为通用的流程模块,即由算法人员根据具体的仿真流程开发出相应的流程模块,此时仿真流程不再是固化在仿真引擎侧的无法被更改的内容,而是可以根据实际的仿真需求进行配置化的可以联动各种仿真算法的内容,由此提高了仿真引擎和仿真算法间适配度,并且实现了基于流程模块灵活快速地搭建仿真引擎的效果。
本发明实施例的技术方案,在研发阶段,通过将仿真流程中涉及到的各种功能抽象为通用的流程模块(即自动驾驶仿真组件),由此实现了基于流程模块灵活快速地搭建仿真引擎的效果,上述功能可以基于预先设置的能够实现这些功能的自动驾驶仿真脚本实现;由此,在应用阶段,可以确定与自动驾驶仿真指令对应的自动驾驶仿真业务,进而从各流程模块中获取与自动驾驶仿真业务对应的目标仿真组件,然后对这些目标仿真组件进行调用以实现自动驾驶过程的仿真。
一种可选的技术方案,在从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件之后,上述自动驾驶仿真方法,还可包括:将目标仿真组件的组件类型转换为预设类型,并对预设类型下的目标仿真组件进行实例化,得到目标仿真组件对象;对各目标仿真组件进行调用,可包括:对各目标仿真组件对象进行调用。其中,在面向对象的编程中,自动驾驶仿真组件(即流程模块)可以理解为类型(class),而class在内存中被实例化为对象后方能应用。由于各目标仿真组件的组件类型可能存在差异,为了统一读取各目标仿真组件,可以先将各目标仿真组件的组件类型转换为预设类型,如基于隐式的指针转换进行类型转换,上述预设类型可以理解为基类;进一步对预设类型下的各目标仿真组件分别进行实例化,得到目标仿真组件对象,即统一使用预设类型进行实例化,由此可以基于预设类型对各目标仿真组件对象进行管理。示例性的,以大写字母是class且小写字是为对象为例,在进行类型转换前的实例化结果为A=a,B=b,C=c且D=d,而进行类型转换后的实例化结果为BaseHandle=a,BaseHandle=b,BaseHandle=c,BaseHandle=d,其中BaseHandle是预设类型,由此达到了各目标仿真组件的有效调用的效果。
另一种可选的技术方案,从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件,可以包括:获取预先为自动驾驶仿真业务配置的配置文件;根据配置文件从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件、及各目标仿真组件的调用顺序;对各目标仿真组件进行调用,可以包括:基于调用顺序对各目标仿真组件进行调用。其中,由于各仿真业务的仿真流程可能存在差异,为了快速确定在该仿真业务下需调用哪些流程模块、以及这些流程模块的调用顺序,可以预先为每个仿真业务配置各自的配置文件,该配置文件中可以记录有相应的仿真业务需要的流程模块、及这些流程模块的调用顺序。因此,在获取到仿真指令后,可以根据与仿真指令对应的仿真业务的配置文件确定目标仿真组件、以及各目标仿真组件的调用顺序,并根据调用顺序基于迭代方式进行目标仿真组件的调用,由此达到了各个目标仿真组件的准确确定和调用的效果。需要说明的是,当配置文件和流程模块相互配合后,在无需修改底层代码,仅修改配置文件的情况下,能够对仿真引擎进行调整,由此达到了仿真引擎的灵活搭建的效果。
为了更好地理解上述步骤的具体实现过程,下面结合具体示例,对本实施例的自动驾驶仿真方法进行示例性的说明。示例性的,参见图4a,其展示出了仿真引擎的整体搭建思路。仿真引擎(即通用架构)的搭建过程可以包括仿真流程(即业务逻辑)的组件化过程、各个组件的调用顺序的配置化过程、动态链接库的插件化过程和通用的上下文和配置等数据的数据管理过程。与此同时,业务逻辑的处理过程可以包括业务逻辑的抽象化过程、插件接口的管理过程、插件版本的管理过程和业务逻辑的迁移过程。仿真算法的插件化过程可以包括仿真算法的抽象化过程、仿真算法内的自有工具的迁移化过程和动态链接库的编译过程。上述三方面相互配合,由此实现了基于仿真引擎完成自动驾驶仿真。
换言之,可以将仿真引擎设置为对仿真流程进行模块化后得到流程模块,并基于配置化方式确定调用哪些流程模块的架构。其可以被编译为可执行文件,基于动态链接的方式打开嵌入了仿真算法的待调用插件,以便与仿真算法进行联动仿真,即将仿真引擎独立于仿真算法之外单独存在。接下来可对上述过程进行详细介绍:
a)将各种仿真流程抽象为相应的流程模块,参见表1和图4b,在仿真引擎中按照表1的顺序依次执行各流程模块,Simulation中的步骤参见表2。其中,基类是BaseHandle,变量传递是Context,初始化是Single,地图逻辑是Map,实例化是Component,数据读取是Data,仿真是Simulation。在此基础上,变量传递中可以包括逻辑模拟(Logsim)和图形环境(Worldsim),仿真中可以包括预处理(Prepare)、虚拟底盘(Chassis)和仿真(Simulation)。
表1 流程模块
Figure BDA0003227267300000151
表2 Simulation中的步骤
步骤名称 步骤功能
Prepare 对使用到的数据进行预处理
Chassis 虚拟底盘或者完美控制的实现步骤
Simulation 单帧仿真(Input,Play,Output)
b)将流程模块转化为配置文件,将各种仿真流程组件化,根据与仿真业务对应的配置文件确定需要的流程模块及其调用顺序。
c)针对流程模块的实现:每个流程模块都具有同一基类BaseHandle,由此仿真引擎在实例化流程模块时,统一使用BaseHandle实例化,利用隐式的指针转换将不同的流程对象(即流程模块的实例化结果)归为统一类型(即BaseHandle)的对象进行管理,根据配置文件中记录的各流程模块的调用顺序,基于迭代方式进行各流程模块的调用。
d)针对插件的实现,在仿真算法中设置单独的插件接口,将可能被调用的算法逻辑抽象到插件接口中,并将仿真算法编译为动态链接库。在仿真引擎侧设置单独的插件管理单例类,基于动态链接的方式打开动态链接库,通过模板编程的思路将插件注册到插件管理单例类中,由此仿真引擎需要使用仿真算法时可以直接调用插件管理单例类中的插件。
实施例四
图5为本发明实施例四提供的自动驾驶仿真装置的结构框图,该装置配置于自动驾驶仿真引擎,用于执行上述任意实施例所提供的自动驾驶仿真方法。该装置与上述各实施例的自动驾驶仿真方法属于同一个发明构思,在自动驾驶仿真装置的实施例中未详尽描述的细节内容,可以参考上述自动驾驶仿真方法的实施例。参见图5,该装置具体可包括:脚本执行模块410、插件确定模块420和插件调用模块430。其中,
脚本执行模块410,用于在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本;
插件确定模块420,用于在执行目标仿真脚本时,若接收到插件调用指令,则确定与插件调用指令对应的待调用插件,其中,待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;
插件调用模块430,用于对待调用插件进行调用,继续执行目标仿真脚本。
可选的,上述自动驾驶仿真装置,还可以包括:
插件接口得到模块,用于将自动驾驶仿真算法编译为动态链接库,将动态链接库作为对自动驾驶仿真算法进行插件化后得到的待调用插件的插件接口;
插件调用模块430,可以包括:
插件调用单元,用于基于插件接口对待调用插件进行调用。
在此基础上,可选的,在目标仿真脚本中设置有插件管理类,待调用插件已被注册到插件管理类中;
插件调用单元,具体可以用于:
通过调用设置在插件管理类中的与待调用插件关联的模板函数,调用插件接口以实现待调用插件的调用。
可选的,脚本执行模块410,可以包括:
业务确定单元,用于确定与自动驾驶仿真指令对应的自动驾驶仿真业务
组件确定单元,用于针对于预先设置在自动驾驶仿真引擎中的各自动驾驶仿真组件,从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件,并对各目标仿真组件进行调用;
其中,各自动驾驶仿真组件是基于自动驾驶仿真流程对预先设置的各自动驾驶仿真脚本中的脚本代码进行模块化后得到的;
插件确定模块420,可以包括:
组件调用单元,用于在对各目标仿真组件中的当前仿真组件进行调用时;
插件调用模块430,可以包括:
组件代码执行单元,用于继续执行当前仿真组件中未被执行的组件代码。
在此基础上,可选的,上述脚本执行模块410,还可以包括:
组件对象得到单元,用于在从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件之后,将目标仿真组件的组件类型转换为预设类型,并对预设类型下的目标仿真组件进行实例化,得到目标仿真组件对象;
组件确定单元,可以包括:
组件对象调用子单元,用于对各目标仿真组件对象进行调用。
再可选的,组件确定单元,可以包括:
配置文件获取子单元,用于获取预先为自动驾驶仿真业务配置的配置文件;
调用顺序确定子单元,用于根据配置文件从各自动驾驶仿真组件中确定与自动驾驶仿真业务对应的目标仿真组件、及各目标仿真组件的调用顺序;
组件调用子单元,用于基于调用顺序对各目标仿真组件进行调用。
可选的,脚本执行模块410,可以包括:
算法验证单元,用于获取与自动驾驶仿真指令对应的已验证数据,并基于已验证数据执行目标仿真脚本以对与已验证数据对应的待验证算法进行验证;
其中,已验证数据为场景数据时,待验证算法为车辆行驶算法,自动驾驶仿真算法是与车辆行驶算法相关的算法;
已验证数据为车辆行驶数据时,待验证算法为仿真场景生成算法,自动驾驶仿真算法是与仿真场景生成算法相关的算法。
本发明实施例四所提供的自动驾驶仿真装置,自动驾驶仿真引擎通过脚本执行模块在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,执行该目标仿真脚本以进行车辆的自动驾驶过程的仿真;插件确定模块在执行目标仿真脚本时,如果自动驾驶仿真引擎接收到插件调用指令,则可以确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;插件调用模块对待调用插件进行调用,并继续执行目标仿真脚本。上述装置,通过将自动驾驶仿真算法编译为待调用插件,进而在自动驾驶仿真引擎中对待调用插件进行调用,由此将自动驾驶仿真引擎独立于自动驾驶仿真算法外,实现了二者的解耦合,达到了在对自动驾驶仿真算法透明的情况下升级自动驾驶仿真引擎的效果,换言之,在无需对自动驾驶仿真算法中的相关代码进行更新和重编译时,可以直接应用升级后的自动驾驶仿真引擎。
本发明实施例所提供的自动驾驶仿真装置可执行本发明任意实施例所提供的自动驾驶仿真方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述自动驾驶仿真装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例五
图6为本发明实施例五提供的一种自动驾驶仿真设备的结构示意图,如图6所示,该设备包括存储器510、处理器520、输入装置530和输出装置540。设备中的处理器520的数量可以是一个或多个,图6中以一个处理器520为例;设备中的存储器510、处理器520、输入装置530和输出装置540可以通过总线或其它方式连接,图6中以通过总线550连接为例。
存储器510作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的自动驾驶仿真方法对应的程序指令/模块(例如,自动驾驶仿真装置中的脚本执行模块410、插件确定模块420和插件调用模块430)。处理器520通过运行存储在存储器510中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的自动驾驶仿真方法。
存储器510可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器510可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器510可进一步包括相对于处理器520远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可用于接收输入的数字或字符信息,以及产生与装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
实施例六
本发明实施例六提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种自动驾驶仿真方法,该方法应用于自动驾驶仿真引擎,可以包括:
在接收到自动驾驶仿真指令时,获取与自动驾驶仿真指令对应的目标仿真脚本,并执行目标仿真脚本;
在执行目标仿真脚本时,若接收到插件调用指令,则确定与插件调用指令对应的待调用插件,其中待调用插件是对与目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;
对待调用插件进行调用,并继续执行目标仿真脚本。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的自动驾驶仿真方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。依据这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种自动驾驶仿真方法,其特征在于,应用于自动驾驶仿真引擎,所述方法包括:
在接收到自动驾驶仿真指令时,获取与所述自动驾驶仿真指令对应的目标仿真脚本,并执行所述目标仿真脚本;
在执行所述目标仿真脚本时,若接收到插件调用指令,则确定与所述插件调用指令对应的待调用插件,其中,所述待调用插件是对与所述目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;
对所述待调用插件进行调用,并继续执行所述目标仿真脚本。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述自动驾驶仿真算法编译为动态链接库,并将所述动态链接库作为对所述自动驾驶仿真算法进行插件化后得到的所述待调用插件的插件接口;
相应的,所述对所述待调用插件进行调用,包括:
基于所述插件接口对所述待调用插件进行调用。
3.根据权利要求2所述的方法,其特征在于,在所述目标仿真脚本中设置有插件管理类,所述待调用插件已被注册到所述插件管理类中;
所述基于所述插件接口对所述待调用插件进行调用,包括:
通过调用设置在所述插件管理类中的与所述待调用插件关联的模板函数,调用所述插件接口以实现所述待调用插件的调用。
4.根据权利要求1所述的方法,其特征在于,所述获取与所述自动驾驶仿真指令对应的目标仿真脚本,并执行所述目标仿真脚本,包括:
确定与所述自动驾驶仿真指令对应的自动驾驶仿真业务;
针对于预先设置在所述自动驾驶仿真引擎中的各自动驾驶仿真组件,从各所述自动驾驶仿真组件中确定与所述自动驾驶仿真业务对应的目标仿真组件,并对各所述目标仿真组件进行调用;
其中,各所述自动驾驶仿真组件是基于自动驾驶仿真流程对预先设置的各自动驾驶仿真脚本中的脚本代码进行模块化后得到的;
所述在执行所述目标仿真脚本时,包括:
在对各所述目标仿真组件中的当前仿真组件进行调用时;
所述继续执行所述目标仿真脚本,包括:
继续执行所述当前仿真组件中未被执行的组件代码。
5.根据权利要求4所述的方法,其特征在于,在所述从各所述自动驾驶仿真组件中确定与所述自动驾驶仿真业务对应的目标仿真组件之后,还包括:
将所述目标仿真组件的组件类型转换为预设类型,并对所述预设类型下的所述目标仿真组件进行实例化,得到目标仿真组件对象;
所述对各所述目标仿真组件进行调用,包括:
对各所述目标仿真组件对象进行调用。
6.根据权利要求4所述的方法,其特征在于,所述从各所述自动驾驶仿真组件中确定与所述自动驾驶仿真业务对应的目标仿真组件,包括:
获取预先为所述自动驾驶仿真业务配置的配置文件;
根据所述配置文件从各所述自动驾驶仿真组件中确定与所述自动驾驶仿真业务对应的目标仿真组件、及各所述目标仿真组件的调用顺序;
所述对各所述目标仿真组件进行调用,包括:
基于所述调用顺序对各所述目标仿真组件进行调用。
7.根据权利要求1所述的方法,其特征在于,所述执行所述目标仿真脚本,包括:
获取与所述自动驾驶仿真指令对应的已验证数据,并基于所述已验证数据执行所述目标仿真脚本以对与所述已验证数据对应的待验证算法进行验证;
其中,所述已验证数据为场景数据时,所述待验证算法为车辆行驶算法,所述自动驾驶仿真算法是与所述车辆行驶算法相关的算法;
所述已验证数据为车辆行驶数据时,所述待验证算法为仿真场景生成算法,所述自动驾驶仿真算法是与所述仿真场景生成算法相关的算法。
8.一种自动驾驶仿真装置,其特征在于,配置于自动驾驶仿真引擎,所述装置包括:
脚本执行模块,用于在接收到自动驾驶仿真指令时,获取与所述自动驾驶仿真指令对应的目标仿真脚本,并执行所述目标仿真脚本;
插件确定模块,用于在执行所述目标仿真脚本时,若接收到插件调用指令,则确定与所述插件调用指令对应的待调用插件,其中,所述待调用插件是对与所述目标仿真脚本关联的自动驾驶仿真算法进行插件化后得到的;
插件调用模块,用于对所述待调用插件进行调用,继续执行所述目标仿真脚本。
9.一种自动驾驶仿真设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的自动驾驶仿真方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的自动驾驶仿真方法。
CN202110974818.3A 2021-08-24 2021-08-24 一种自动驾驶仿真方法、装置、设备及存储介质 Pending CN113703339A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110974818.3A CN113703339A (zh) 2021-08-24 2021-08-24 一种自动驾驶仿真方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110974818.3A CN113703339A (zh) 2021-08-24 2021-08-24 一种自动驾驶仿真方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN113703339A true CN113703339A (zh) 2021-11-26

Family

ID=78654471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110974818.3A Pending CN113703339A (zh) 2021-08-24 2021-08-24 一种自动驾驶仿真方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113703339A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755844A (zh) * 2023-08-17 2023-09-15 北京世冠金洋科技发展有限公司 一种仿真引擎的数据处理方法、装置、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445813A (zh) * 2016-08-31 2017-02-22 福建联迪商用设备有限公司 一种图像算法仿真自动化测试方法和系统
CN106951627A (zh) * 2017-03-15 2017-07-14 北京百度网讯科技有限公司 车辆自动驾驶的仿真测试方法、装置、设备及计算机可读存储介质
CN111077880A (zh) * 2019-12-24 2020-04-28 国汽(北京)智能网联汽车研究院有限公司 一种车辆故障的诊断系统及方法
CN111368326A (zh) * 2020-02-25 2020-07-03 百度在线网络技术(北京)有限公司 车辆数据处理方法、装置、电子设备和存储介质
CN111699449A (zh) * 2019-04-30 2020-09-22 深圳市大疆创新科技有限公司 自动驾驶车辆的仿真测试方法、系统、存储介质和车辆
CN111736951A (zh) * 2020-06-15 2020-10-02 深圳裹动智驾科技有限公司 自动驾驶的仿真方法、计算机设备、及存储介质
CN112115600A (zh) * 2020-09-11 2020-12-22 中国第一汽车股份有限公司 一种自动驾驶车辆的仿真系统
CN113093569A (zh) * 2021-04-13 2021-07-09 中国第一汽车股份有限公司 自动驾驶的仿真测试方法、装置、设备和存储介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445813A (zh) * 2016-08-31 2017-02-22 福建联迪商用设备有限公司 一种图像算法仿真自动化测试方法和系统
CN106951627A (zh) * 2017-03-15 2017-07-14 北京百度网讯科技有限公司 车辆自动驾驶的仿真测试方法、装置、设备及计算机可读存储介质
US20180268092A1 (en) * 2017-03-15 2018-09-20 Beijing Baidu Netcom Science And Technology Co.,Ltd. Method and apparatus for simulation test of autonomous driving of vehicles, an apparatus and computer-readable storage medium
CN111699449A (zh) * 2019-04-30 2020-09-22 深圳市大疆创新科技有限公司 自动驾驶车辆的仿真测试方法、系统、存储介质和车辆
CN111077880A (zh) * 2019-12-24 2020-04-28 国汽(北京)智能网联汽车研究院有限公司 一种车辆故障的诊断系统及方法
CN111368326A (zh) * 2020-02-25 2020-07-03 百度在线网络技术(北京)有限公司 车辆数据处理方法、装置、电子设备和存储介质
CN111736951A (zh) * 2020-06-15 2020-10-02 深圳裹动智驾科技有限公司 自动驾驶的仿真方法、计算机设备、及存储介质
CN112115600A (zh) * 2020-09-11 2020-12-22 中国第一汽车股份有限公司 一种自动驾驶车辆的仿真系统
CN113093569A (zh) * 2021-04-13 2021-07-09 中国第一汽车股份有限公司 自动驾驶的仿真测试方法、装置、设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116755844A (zh) * 2023-08-17 2023-09-15 北京世冠金洋科技发展有限公司 一种仿真引擎的数据处理方法、装置、设备及存储介质
CN116755844B (zh) * 2023-08-17 2023-11-24 北京世冠金洋科技发展有限公司 一种仿真引擎的数据处理方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN113034095B (zh) 结合rpa和ai的人机互动方法、装置、存储介质及电子设备
CN111831538B (zh) 调试方法、装置以及存储介质
CN112395736B (zh) 一种分布交互仿真系统的并行仿真作业调度方法
CN111740948B (zh) 数据包发布方法、动态更新方法、装置、设备及介质
CN111399840A (zh) 一种模块开发方法及装置
CN114818565A (zh) 基于python的仿真环境管理平台、方法、设备及介质
CN110737631A (zh) 一种基于Flink引擎的数据解析方法及装置
CN109542444B (zh) Java应用的监控方法、装置、服务器和存储介质
CN114721719A (zh) 一种在集群中容器化部署异构应用的方法和系统
CN112631915B (zh) 一种pcie设备软件仿真的方法、系统、设备及介质
CN113703339A (zh) 一种自动驾驶仿真方法、装置、设备及存储介质
CN116681013B (zh) 网络芯片的仿真验证方法、平台、装置、设备及介质
CN111522623B (zh) 组件化软件多进程运行系统
Lazzaroni et al. Employing an IoT framework as a generic serious games analytics engine
CN112631563A (zh) 基于框架的系统开发方法、装置、计算机设备及存储介质
CN110659022B (zh) 一种基于Java自动调用Python脚本的方法
CN112015371A (zh) 一种非嵌入式软件平台下的软件开发装置
CN110018831A (zh) 程序处理方法、装置及相关产品
CN115878267A (zh) 对固件系统的仿真装置、方法、存储介质及电子设备
CN112764995B (zh) 一种服务器硬件资源监控方法、装置和介质
CN114679491A (zh) 微前端服务应用方法、装置、存储介质及电子设备
WO2020138386A1 (ja) 以前のトレースデータを使用する協調シミュレーションリピータ
CN111488275A (zh) Ui自动化测试方法、装置、存储介质及电子设备
CN113590166B (zh) 应用程序的更新方法、装置以及计算机可读存储介质
CN117591104B (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