CN112639734A - 仿真任务调度方法、执行方法、仿真实现方法及装置 - Google Patents
仿真任务调度方法、执行方法、仿真实现方法及装置 Download PDFInfo
- Publication number
- CN112639734A CN112639734A CN202080004954.3A CN202080004954A CN112639734A CN 112639734 A CN112639734 A CN 112639734A CN 202080004954 A CN202080004954 A CN 202080004954A CN 112639734 A CN112639734 A CN 112639734A
- Authority
- CN
- China
- Prior art keywords
- simulation
- task
- software
- node
- content
- 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
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及仿真技术领域,提供了一种仿真任务调度方法,包括:收任务元素;根据所述任务元素定义仿真任务,该仿真任务被定义有第一内容,其包括至少以下之一:仿真类型、仿真软件;将所述仿真任务向匹配所述第一内容的仿真节点调度。还提供了相应的仿真任务执行方法,包括通过仿真节点接收调度的仿真任务;通过所述仿真节点使用匹配所述第一内容的仿真软件执行所述仿真任务。基于本发明的仿真方法或装置,可以支持不同的仿真类型、不同的仿真软件。本发明可用于车辆、飞行器、船舶等交通工具的自动驾驶仿真技术上。
Description
技术领域
本申请涉及一种仿真技术,尤其涉及一种仿真任务调度方法、仿真任务执行方法、仿真实现方法、仿真任务调度装置、仿真任务执行装置、仿真实现装置、计算设备及存储介质。
背景技术
随着自动驾驶领域控制算法研究和场景应用的快速发展,实现自动驾驶的控制***的安全性和稳定性要求日益具体,而这需要大量测试加以验证。对自动驾驶功能的验证方法很多,其中通过仿真进行验证占有重要的比例,通过借助仿真进行大量测试验证工作可以节省成本、时间。其中,在自动驾驶控制模型的不同研发阶段,可以分别使用模型在环(MIL)仿真、软件在环(SIL)仿真、硬件在环(HIL)仿真等类型的仿真验证方法。
当前有很多商用和开源的自动驾驶仿真软件,每种仿真软件所擅长的领域不尽相同,比如动力学仿真,场景仿真,传感器仿真等。多数软件也提供了开放的API接口。在自动驾驶领域仿真多数的还是依赖单机版仿真软件。单机版仿真软件存在的最大缺陷是受限于硬件资源难以进行规模化仿真验证。然而,对自动驾驶功能的充分验证需建立在大规模仿真场景以及大量的仿真测试里程基础上,因此考虑采用规模化调度仿真极为重要。
当前也有利用自研或者第三方仿真软件搭建开发的仿真云平台,提供给外部开发者接入。例如括谷歌公司提供的Waymo CarCraft平台,百度公司的Apollo Dreamland平台,腾讯公司的TAD Sim平台等。这一类平台往往需要开发成套成熟的自研仿真软件,投入大且开发周期长。对于接入平台的开发者而言,对平台提供的自研仿真软件依赖较大,场景用例难以移植到其他平台。
另外,部分基于某第三方仿真软件做的仿真平台的功能比较单一,只能基于该第三方仿真软件及该仿真软件所支持的单一类型进行仿真验证,无法支持MIL、SIL、HIL等多种类型的仿真验证。
有鉴于此,有待提供一种能够支持使用多种仿真软件、支持多种仿真类型进行仿真验证的技术方案。
发明内容
鉴于现有技术的以上问题,本申请提供一种仿真任务调度方法、仿真任务执行方法、仿真实现方法、仿真任务调度装置、仿真任务执行装置、仿真实现装置、计算设备及存储介质,以能支持使用多种仿真软件和/或支持多种仿真类型进行仿真。
为达到上述目的,本申请第一方面提供了一种仿真任务调度方法,包括:
接收任务元素;
根据所述任务元素定义一仿真任务的第一内容,所述第一内容包括至少以下之一:仿真类型、仿真软件;
将所述仿真任务向匹配所述第一内容的一仿真节点调度。
其中一种可能的实现方式是,可以通过web界面,或客户端界面的方式接收用户输入的任务元素,所定义的仿真任务由网络侧平台执行所述调度。并且可支持多个用户同时通过不同的用户终端侧的界面的同时输入。
当设置有多个可处理不同仿真类型和/或可运行不同仿真软件的仿真节点时,通过该仿真任务调度方法,可以接收含有仿真类型和/或所用仿真软件的仿真任务,并向可处理该仿真类型和/或可运行该仿真软件的仿真节点进行调度,该调度方法可根据不同仿真软件不同仿真类型调度到不同的仿真节点,从而实现了在仿真实现的过程中,对不同仿真软件、不同仿真类型支持。从而,通过所述可进行不同仿真类型、仿真软件的仿真任务定义,和通过对应的不同任务队列的混合调度,可用于将支持不同仿真类型和/或仿真软件的仿真节点接入,快速搭建支持多种仿真软件,支持不同类型的仿真***。
作为第一方面的一种可能的实现方式,所述将所述仿真任务向匹配所述第一内容的一仿真节点调度包括:
通过与所述仿真任务的第一内容对应的一任务队列,向匹配所述第一内容的一仿真节点调度;
其中,至少一个任务队列中的不同的任务队列对应至少以下之一:不同的仿真类型、不同的仿真软件。
其中一种可实现的方式是,设置对应第一内容的不同的任务队列,如设置对应不同的仿真类型的任务队列,或对应不同仿真软件的任务队列,或设置不同类型与不同仿真软件结合的任务队列,通过多个任务队列可以实现任务的并发接收和并发发送,提高了仿真任务调度效率,并且,通过将不同的仿真任务分配到对应的队列上,可以实现在将仿真任务调度到仿真节点时,不需要进一步根据仿真任务判断仿真任务的仿真类型和/或仿真软件,可进一步提高仿真任务调度效率。多个仿真任务并发时,可调度到不同的多个仿真节点;另一方面,单个仿真节点具有多个执行单元,可支持多个任务同时执行。该分布式调度可以有效加快仿真任务执行速率并提高仿真机利用率,可用于不间断地批量执行仿真任务。并且,仿真任务调度过程中可基于负载均衡收到,自动调度到低负载仿真节点。
作为第一方面的一种可能的实现方式,还包括:根据至少一个仿真节点的注册信息,确定匹配所述第一内容的所述一仿真节点;其中,所述注册信息包括至少以下之一:可支持的仿真类型、可运行的仿真软件。
其中一种可实现的方式是,通过注册表记录各仿真节点的注册信息,并当有新仿真节点加入时更新注册表信息,通过注册信息的方式,可实现只要有新仿真节点的加入,即将相关信息的自动注册,进而可根据注册信息去匹配出要向哪个仿真节点调度仿真任务。
作为第一方面的一种可能的实现方式:根据所述任务元素还定义所述一仿真任务的至少以下之一的内容:仿真工程、控制模型、用例脚本、仿真速率、是否显示仿真动画、是否保存仿真动画。
由上,通过该方式,可以根据需要去定义所需要的仿真任务的内容。其中一种可实现的方式,是通过模板的方式进行定义。
作为第一方面的一种可能的实现方式:所述仿真类型通过所述任务元素中包含的以下信息中的一个进行定义:模型在环仿真测试MIL、软件在环仿真测试SIL、处理器在环仿真测试PIL、硬件在环仿真测试HIL;
仿真软件通过所述任务元素中包含的仿真软件的标识进行定义;所述仿真工程通过所述任务元素中包含的仿真工程的标识进行定义;所述控制模型通过所述任务元素中包含控制模型的标识进行定义;所述用例脚本通过所述任务元素中包含的用例脚本的标识进行定义。
由上,该实现方式可支持MIL、SIL、PIL、HIL几种,即对应到这四个不同阶段的仿真测试,使得本申请可支持不同类型的仿真测试。
本申请第二方面提供了一种仿真任务执行方法,包括:
接收调度的仿真任务;所述仿真任务的第一内容包括至少以下之一:仿真类型、仿真软件;
通过匹配所述第一内容的仿真软件执行所述仿真任务。
由上,由于调度时的仿真任务的第一内容包括有仿真类型和/或所用仿真软件,因此,仿真软件可据此执行仿真任务即可,尤其当仿真节点上可运行多种仿真类型和/或多种仿真软件时,通过该方式可以准确运行相应的仿真。
作为第二方面的一种可能的实现方式,所述仿真任务还包括仿真工程、控制模型或用例脚本;所述方法还包括:从文件***获取对应的用于执行所述仿真任务的实体文件。
由上,通过文件***存储,这样便于实现仿真工程、控制模型或用例脚本实体文件的共享,便于不同用户的使用,也便于不同仿真软件的加载使用。
作为第二方面的一种可能的实现方式,所述仿真任务还包括仿真速率、是否显示仿真动画或是否保存仿真动画。
由上可以根据仿真任务不同内容,执行所述仿真任务,实现仿真任务执行时的灵活配置。
作为第二方面的一种可能的实现方式,所述方法还包括:通过仿真控制端口接收仿真控制指令;根据所述仿真控制指令控制所述仿真软件的运行。
其中,一种可实现的方式是,用户通过界面输入仿真控制指令,例如通过界面提供的控件进行操控的方式实现控制指令的输入,据此与仿真节点进行仿真控制指令的交互,以实时控制仿真节点上的仿真软件的运行,如进行仿真运行速率、暂停、继续等控制,或请求过程数据的控制。
作为第二方面的一种可能的实现方式,所述方法还包括:从所述仿真软件获取仿真动画数据,并通过仿真动画传输端口输出所述仿真动画数据。
由上,可实现实时获取仿真动画数据,并输出到界面显示给用户。
本申请第三方面提供了一种仿真实现方法,包括:
上述第一方面提供的任一所述仿真任务调度的方法;和
上述第二方面提供的任一所述仿真任务执行的方法。
由上,实现了从仿真任务调度到仿真任务的执行的完整的仿真,具备上述第一方面提供的任一所述仿真任务调度的方法的效果,以及具备上述第二方面提供的所述仿真任务执行的方法的效果。
本申请第四方面提供了一种仿真任务调度装置,包括:
接收模块,用于接收任务元素;
处理模块,用于根据所述任务元素定义一仿真任务的第一内容,所述第一内容包括至少以下之一:仿真类型、仿真软件;以及用于将所述仿真任务向匹配所述第一内容的一仿真节点调度。
其中一种可能的实现方式是,接收模块可以通过web界面,或客户端界面的方式接收用户输入的任务元素,处理模块定义仿真任务,并执行所述调度。并且可支持多个用户同时通过不同的用户终端侧的界面的同时输入。
当设置有多个可处理不同仿真类型和/或可运行不同仿真软件的仿真节点时,通过该仿真任务调度装置,可以接收含有仿真类型和/或所用仿真软件的仿真任务,并向可处理该仿真类型和/或可运行该仿真软件的仿真节点进行调度,该调度装置可根据不同仿真软件不同仿真类型调度到不同的仿真节点,从而实现了在仿真实现的过程中,对不同仿真软件、不同仿真类型支持。从而,通过所述可进行不同仿真类型、仿真软件的仿真任务定义,和通过对应的不同任务队列的混合调度,可用于将支持不同仿真类型和/或仿真软件的仿真节点接入,快速搭建支持多种仿真软件,支持不同类型的仿真***。
作为第四方面的一种可能的实现方式,所述处理模块用于:通过与所述仿真任务的第一内容对应的一任务队列,向匹配所述第一内容的一仿真节点调度;其中,至少一个任务队列中的不同的任务队列对应至少以下之一:不同的仿真类型、不同的仿真软件。
其中一种可实现的方式是,设置对应第一内容的不同的任务队列,如设置对应不同的仿真类型的任务队列,或对应不同仿真软件的任务队列,或设置不同类型与不同仿真软件结合的任务队列,通过多个任务队列可以实现任务的并发接收和并发发送,提高了仿真任务调度效率,并且,通过处理模块,将不同的仿真任务分配到对应的队列上,可以实现在将仿真任务调度到仿真节点时,不需要进一步根据仿真任务判断仿真任务的仿真类型和/或仿真软件,可进一步提高仿真任务调度效率。多个仿真任务并发时,可调度到不同的多个仿真节点;另一方面,单个仿真节点具有多个执行单元,可支持多个任务同时执行。该分布式调度可以有效加快仿真任务执行速率并提高仿真机利用率,可用于不间断地批量执行仿真任务。并且,仿真任务调度过程中可基于负载均衡收到,自动调度到低负载仿真节点。
作为第四方面的一种可能的实现方式,所述处理模块还用于根据至少一个仿真节点的注册信息,确定匹配所述第一内容的所述一仿真节点;其中,所述注册信息包括至少以下之一:可支持的仿真类型、可运行的仿真软件。
其中一种可实现的方式是,通过注册表记录各仿真节点的注册信息,并当有新仿真节点加入时更新注册表信息,通过注册信息的方式,可实现只要有新仿真节点的加入,即将相关信息的自动注册。进而,处理模块可据此去匹配出要向哪个仿真节点调度仿真任务。
作为第四方面的一种可能的实现方式,所述处理模块还用于根据所述任务元素还定义所述一仿真任务的至少以下之一的内容:仿真工程、控制模型、用例脚本、仿真速率、是否显示仿真动画、是否保存仿真动画。
由上,通过该方式,可以根据需要去定义所需要的仿真任务的内容。其中一种可实现的方式,是通过模板的方式进行定义。
作为第四方面的一种可能的实现方式,所述仿真类型通过所述任务元素中包含的以下信息中的一个进行定义:模型在环仿真测试MIL、软件在环仿真测试SIL、处理器在环仿真测试PIL、硬件在环仿真测试HIL;仿真软件通过所述任务元素中包含的仿真软件的标识进行定义;所述仿真工程通过所述任务元素中包含的仿真工程的标识进行定义;所述控制模型通过所述任务元素中包含控制模型的标识进行定义;所述用例脚本通过所述任务元素中包含的用例脚本的标识进行定义。
由上,该实现方式可支持MIL、SIL、PIL、HIL几种,即对应到这四个不同阶段的仿真测试,使得本申请可支持不同类型的仿真测试。
本申请第五方面提供了一种仿真任务执行装置,包括:
接收模块,用于接收调度的仿真任务;所述仿真任务的第一内容包括至少以下之一:仿真类型、仿真软件;
处理模块,用于通过匹配所述第一内容的仿真软件执行所述仿真任务。
由上,由于调度时的仿真任务的第一内容包括有仿真类型和/或所用仿真软件,因此,仿真软件可据此执行仿真任务即可,尤其当仿真节点上可运行多种仿真类型和/或多种仿真软件时,通过该方式可以准确运行相应的仿真。
作为第五方面的一种可能的实现方式,所述仿真任务还包括仿真工程、控制模型或用例脚本;所述处理模块还用于从文件***获取对应的用于执行所述仿真任务的实体文件。
由上,通过处理模块从文件***获取相应的实体文件,这样便于实现仿真工程、控制模型或用例脚本实体文件的共享,便于不同用户的使用,也便于不同仿真软件的加载使用。
作为第五方面的一种可能的实现方式,所述仿真任务还包括的仿真速率、是否显示仿真动画或是否保存仿真动画。
由上可以根据仿真任务不同内容,执行所述仿真任务,实现仿真任务执行时的灵活配置。
作为第五方面的一种可能的实现方式,所述接收模块还用于通过仿真控制端口接收仿真控制指令;所述处理模块还用于根据所述仿真控制指令控制所述仿真软件的运行。
其中,接收模块的一种可实现的方式是,用户通过界面输入仿真控制指令,例如通过界面提供的控件进行操控的方式实现控制指令的输入,据此与仿真节点进行仿真控制指令的交互,以实时控制仿真节点上的仿真软件的运行,如进行仿真运行速率、暂停、继续等控制,或请求过程数据的控制。
作为第五方面的一种可能的实现方式,所述装置还包括:发送模块,用于从所述仿真软件获取仿真动画数据,并通过仿真动画传输端口输出所述仿真动画数据。
由上,通过该发送模块,可实现将实时获取的仿真动画数据输出到界面显示给用户。
本申请第六方面提供了一种仿真实现装置,包括:上述第四方面提供的任一所述仿真任务调度装置;和上述第五方面提供的所述仿真任务执行装置。
由上,实现了从仿真任务调度到仿真任务的执行的完整的仿真,具备上述第四方面提供的任一所述仿真任务调度的装置的效果,以及具备上述第五方面提供的所述仿真任务执行的装置的效果。
本申请第七方面提供了一种计算设备,包括:通信接口,以及至少一个处理器;其中,所述至少一个处理器用于执行程序指令,所述程序指令当被所述至少一个处理器执行时使得所述计算设备实现上述第一方面的任一所述的方法,或者,所述程序指令当被所述至少一个处理器执行时使得所述计算设备实现上述第二方面的任一所述的方法。
本申请第八方面提供了一种计算机可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机实现上述第一方面的任一所述的方法,或者,所述程序指令当被所述计算机执行时使得所述计算机实现上述第二方面的任一所述的方法。
综上,本申请提供的上述技术方案,通过所述可进行不同仿真类型、仿真软件的仿真任务定义,和通过对应的不同任务队列的混合调度,可用于快速搭建支持多种仿真软件,支持不同类型进行仿真验证的仿真节点,具体来说,具有以下主要特点:
1)高效率高并发分布式仿真任务调度,支持多类型仿真任务混合调度,可以用于规模化的仿真测试和验证,不需要依赖高性能仿真机。
其中,体现高效率调度的技术之一在于,仿真任务调度过程中可基于负载均衡收到,自动调度到低负载仿真节点。
其中,体现分布式高并发调度的技术之一在于:多个仿真任务并发时,可调度到不同的多个仿真节点;另一方面,单个仿真节点具有多个执行单元,可支持多个任务同时执行。该分布式调度可以有效加快仿真任务执行速率并提高仿真机利用率,可用于不间断地批量执行仿真任务。
其中,体现多类型任务的技术之一在于:任务定义阶段支持选择MIL/SIL/HIL及其他仿真类型,对仿真节点建立标签可以应对多种类型仿真任务,仿真任务调度阶段根据已定义仿真节点调度到对应仿真节点,任务执行阶段在执行节点根据仿真类型编排对应类型仿真任务的仿真资源和执行流程。
2)通过仿真节点提供的仿真控制端口、仿真动画传输端口支持在线实时仿真交互。
基于此,可以支持实时交互控制仿真体验,仿真过程实时状态和结果输出可提供充分的仿真问题验证手段。
并且实时仿真交互包括:仿真开始执行后可以通过平台查看实时仿真动画,仿真状态和日志等信息,并发送仿真控制指令。
3)通过仿真运行结果数据的输出,如存储到文件***,可以基于此进一步实现对提供仿真问题定位手段和用例结果评价的支持。
例如,仿真运行完成后可根据仿真日志和结果数据进行仿真问题分析定位。
又如,可以提供仿真场景及用例评价报告。
4)平台支持多用户登录,并提供用户仿真资源管理功能。
例如,支持用户注册及权限管理,也支持同时通过不同用户终端的不同界面接收不同用户输入的不同的仿真任务定义的任务元素,以实现并发任务定义。
又如,用户可以通过界面管理用户仿真工程及工程下的仿真场景,仿真车辆,仿真用例脚本等资源。通过建立资源池统一调度的方式集中管理仿真机资源。
并且,为不同的用户提供统一的仿真入口,用户只需要根据界面填写所显示的任务定义所需元素即可,屏蔽了仿真软件使用细节,降低仿真软件的学习使用成本。
本申请的这些和其它方面在以下(多个)实施例的描述中会更加简明易懂。
附图说明
以下参照附图来进一步说明本申请的各个特征和各个特征之间的联系。附图均为示例性的,一些特征并不以实际比例示出,并且一些附图中可能省略了本申请所涉及领域的惯常的且对于本申请非必要的特征,或是额外示出了对于本申请非必要的特征,附图所示的各个特征的组合并不用以限制本申请。另外,在本说明书全文中,相同的附图标记所指代的内容也是相同的。具体的附图说明如下:
图1是本申请仿真任务调度方法的第一实施例的流程图;
图2是本申请仿真任务执行方法的第一实施例的流程图;
图3是本申请仿真实现方法的第一实施例的流程图;
图4是本申请仿真实现方法的第一实施例的交互示意图;
图5是本申请仿真任务调度的一实施方式的流程图;
图6A是本申请仿真任务调度的一实施方式的交互示意图;
图6B是本申请中通过界面与仿真节点进行交互的示意图;
图7是本申请仿真实现方法的第一实施方式的流程图;
图8是本申请仿真实现方法的第二实施方式的流程图;
图9是本申请仿真实现方法的第三实施方式的流程图;
图10是本申请仿真任务调度装置的第一实施例的示意图;
图11是本申请仿真任务执行装置的第一实施例的示意图;
图12是本申请仿真实现装置的第一实施例的示意图;
图13是本申请仿真实现***的第一实施方式的示意图;
图14是本申请实施例提供的一种计算设备的结构性示意性图;
图15是现有技术一示例的仿真任务调度流程图。
具体实施方式
说明书和权利要求书中的词语“第一、第二、第三等”或模块A、模块B、模块C等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。
说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置A和B的设备”不应局限为仅由部件A和B组成的设备。
本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
为了准确地对本申请中的技术内容进行叙述,以及为了准确地理解本申请,在对具体实施方式进行说明之前先对本说明书中所使用的术语给出如下的解释说明或定义。
MIL,Model In the Loop,模型在环仿真测试。表示在模型层面上实现闭环测试,可以理解为对控制模型(即控制算法)在模型的开发环境下(如Simulink)进行仿真测试,通过输入一系列的测试用例,验证控制模型是否满足了设计的功能需求。MIL中,将控制模型和被控对象模型(如车辆模型)连起来形成闭环,使用控制模型控制被控对象模型,以验证该控制模型的算法是否满足设计的功能需求。MIL测试的前提是需有被控对象模型,被控对象模型可搭建或使用现有的对象模型。
SIL,Software In the Loop,软件在环仿真测试。这里的Software可理解为基于上述控制模型自动生成的代码(如C语言代码),但是由于代码自动生成工具本身的原因或者代码生成工具没有正确设置或者其他未知原因,自动生成代码过程可能会引入一些错误,因此需要验证自动生成的代码与控制模型(即控制算法)在各功能、行为上的一致性,即为SIL验证。其基本原则一般是使用与MIL相同的测试用例输入,查看对于相同的测试用例下SIL的输出是否与MIL阶段的输出一致。为了测试的高效性,有时甚至不接入被控对象模型,而是对控制模型和生成代码进行相同的输入,查看输出是否一致,或二者的偏差是否在可接受的范围之内。
PIL,Processor In the Loop,处理器在环仿真测试。表示在目标处理器上验证代码实现的功能是否与模型一致。上述SIL测试是验证代码与模型的一致性,代码运行在特定操作***平台上,SIL测试并不能保证代码到目标处理器上的运行结果也能和模型保持依次,故有了PIL测试。PIL是指将生成的代码运行到目标处理器上(即实际控制器上)进行测试。
HIL,Hardware In the Loop,硬件在环仿真测试。表示在硬件控制***上验证代码实现的功能是否与需求定义一致。一般来说HIL可以分为三个层级:ECU级,也可以称之为信号级,仅仅ECU软硬件采用实物,闭环回路的其他组成部分均采用虚拟仿真***;EPP级,也可以称之为驱动级,EPP是Electrical Power Package的缩写,ECU及执行机构采用实物,闭环回路的其他组成部分采用虚拟仿真***;System级,也可以称之为机械级,***组件采用实物(如汽车电机***的控制电路),闭环回路的其他组成部分采用虚拟仿真***。HIC测试通常将一被测控制器和工控机相连,工控机运行被控对象的模型,且模拟出被控对象的一些电气特性。在HIL场景下,被测试的控制器并不知道与其相连的是一台工控机,其会认为所连接的是真实的实物对象。
仿真类型,用于区分仿真测试的类型,如上述提到的四种仿真测试类型:MIL、SIL、PIL和HIL。
仿真软件,运行仿真所使用的软件,本申请中,包括辅助/自动驾驶仿真软件,如CarMaker、PreScan、CARLA等。仿真软件中可包括运行不同仿真类型的不同程序。
仿真工程(project):包括构建仿真所需的资源,资源包括仿真场景、仿真车辆、仿真传感器、仿真用例脚本等,这些资源可预先定义以池的方式存储到文件共享***中,以供执行仿真任务时加载。
其中仿真场景中的仿真对象包括环境对象(建筑、障碍物、道路、交通信号)、天气对象、参与者对象(相关车辆,行人)等。其中各仿真对象有各自的参数,例如,环境对象中的道路参数可包括路面附着系数、水平属性、侧坡属性、凹凸属性、长度属性等。其中,仿真车辆的参数可包括重量、尺寸形状、动力参数、制动参数、满载/轻载、胎压等。其中,仿真传感器的参数可包括传感器类型(如距离传感器、速度传感器、加速度传感器、雨量传感器等)、安装于车辆上的位置、数量等。
控制模型,即所要待验证的控制模型,也可称为控制算法。可以是传感器、规划或者车辆控制算法等。
仿真任务入口:用于记载运行仿真时所要使用的仿真用例的脚本名,以用于仿真节点执行仿真任务时据此加载对应的仿真用例脚本,执行相应的仿真过程。
仿真用例,即仿真测试使用的用例,仿真软件运行时基于用例中编排的系列场景执行对应的仿真流程。例如车辆某功能的性能测试:在不同的道路特征下目标车辆处于不同的状态时,执行不同操纵工况(加速、制动、转向等)以检测车辆稳定性的用例。又如,车辆某安全性的诊断测试:在不同工况下进行故障注入,检查故障是否被检测到的用例。
仿真节点,不同仿真节点具有不同标识,仿真节点可以是实体的或虚拟的服务器(如云服务器,或称为云主机)、计算终端等。通过对各个仿真节点进行标签标记,该标签内容包括仿真节点所支持的仿真类型,可以根据标签选择所需的仿真节点。
任务执行单元,一个仿真节点下可包含有多个任务执行单元,执行单元可以是实体的执行单元(例如由多核处理器的一核心、内存、存储器等构成的执行单元),也可以是虚拟的执行单元(如虚拟机)。任务执行单元用于执行仿真软件,且其可被配置有仿真动画传输端口以输出仿真软件运行的仿真图像或视频,还可配置有仿真控制端口,以接收控制指令控制仿真软件的运行等。
CarMaker,德国IPG公司出品的自动驾驶仿真软件。其中CarMaker是针对小型乘用车的车辆动力学仿真软件,应用领域包括高级驾驶员辅助***、车辆相关控制***、车辆动力学、燃油经济性和混合动力车辆。CarMaker***不仅包含必要的车辆环境模型,和I/O接口,而且有许多先进的工具来查看、控制和分析仿真以及处理仿真结果。也可以使用和CarMaker密切耦合的工具Matlab/Simulink来运行、控制和分析仿真。在CarMaker的虚拟车辆环境中能够仿真现实中能够实现的操纵,包括简单操控(如在直道上制动),复杂操控(在弯道上变速、制动、转弯的组合)。
IPGMovie,集成于CarMaker中,可用于仿真真实的交通场景动画,该动画可显示到屏幕中进行视景仿真。
Matlab,美国MathWorks公司出品的商业数学软件,可用于数据分析、深度学习、图像处理与计算机视觉、信号处理、控制***等领域。
Simulink,集成于Matlab中,是一种可视化仿真工具。Simulink是一个模块图开发环境,用于多域仿真以及基于模型的设计。它支持***设计、仿真、自动代码生成以及嵌入式***的连续测试和验证。Simulink提供图形编辑器、可自定义的模块库以及求解器,能够进行动态***建模和仿真。Simulink应用领域包括汽车、航空、工业自动化、大型建模、复杂逻辑、物理逻辑,信号处理等方面。
下面,首先对现有技术进行分析:
现有技术一:如图15示出了一种仿真任务的调度实现方法的流程图,该方法包括以下步骤:获取仿真软件模型的需要批量处理的仿真任务的数量;根据仿真任务的数量确定需要的仿真算法节点的数量;利用许可证对仿真算法节点所在的设备进行验证;控制验证通过的仿真算法节点所在的设备批量地执行仿真任务。该方法可以利用分布在多个设备上的多个仿真算法节点对仿真软件模型的仿真任务进行批量测试,提高仿真效率,适用于具有多仿真场景的复杂情况。
现有技术一所存在的缺陷:该方法未提出能支持使用多款仿真软件进行调度,且未提出能支持使用MIL、SIL、HIL等多种仿真类型进行混合调度,且未提出能在调度过程中与被调度仿真节点上仿真软件进行实时交互的方案。
基于现有技术所存在的缺陷,提出了本申请的方案,在根据输入的任务元素定义仿真任务时,仿真任务被定义包括有仿真类型和/或仿真软件,从而当进行仿真任务调度和执行时,调度到支持所述仿真类型和/或可运行所述仿真软件的仿真节点,通过该仿真节点使用所述仿真类型和/或运行所述仿真软件执行所述仿真任务。本申请通过仿真任务被定义包括有仿真类型和/或仿真软件,实现了对多种仿真类型、多种软件的支持,从而在仿真任务调度和执行仿真任务时,可以将仿真任务调度给支持所述仿真类型和/或运行所述仿真软件的仿真节点。可见,本申请支持使用多款仿真软件,支持使用MIL、SIL、HIL等多种仿真类型的混合调度。另一方面,本申请仿真节点提供仿真控制端口和仿真动画传输端口以实现在执行仿真任务过程对仿真软件的实时交互控制,以及获取仿真软件的仿真动画数据并通过界面显示给用户。
【仿真的使用场景】
本申请的仿真任务调度方法、仿真方法可用于各种仿真应用,例如应用于车辆自动驾驶仿真技术上,也可以应用于飞行器、船舶等交通工具的自动驾驶仿真技术上,也可以应用于其他可自动执行的仿真应用上,如风力发电机的运行仿真等。
【仿真任务调度方法的一实施例】
本申请提供了一种仿真任务调度方法,参照图1示出的流程图,对本申请仿真任务调度方法第一实施例进行介绍,包括以下步骤:
S110、接收任务元素。
S120、根据所述任务元素定义一仿真任务的第一内容,所述第一内容包括至少以下之一:仿真类型、仿真软件。这里需说明的是,采用“第一内容”仅用于在本申请描述过程中区别其他的内容(其他的内容例如仿真工程、控制模型、用例脚本等),并非用于归类等其他使用,对本申请保护范围不起到任何限定。
S130、根据所述第一内容中,将所述仿真任务调度至可处理该第一内容的仿真节点。
其中,在一些实施例中,上述步骤S110的实现方式为:可以向用户显示一个或多个界面,接收用户通过界面输入的用于定义仿真任务的任务元素。向用户显示界面的实现方式可以有多种方式,例如在一些实施例中,可以采用基于CS(Client-Server,客户端-服务器)构架的方式实现时,可以通过客户端程序显示供用户操作的界面;在一些实施例中可以采用基于BS(Browser-Server,浏览器-服务器)构架的方式实现,可以通过用户终端设备的网页浏览器来显示供用户操作的界面。在一些实施例中,当采用BS构架的方式实现时,可基于一云仿真服务平台来实现本申请的仿真方法,该云仿真服务平台向客户提供浏览器登录页面,从而客户可以通过可运行浏览器的设备,如电脑、PAD、手机等设备访问该云仿真服务平台。
在一些实施例中,所述界面显示内容包括供用户操作的内容,可以采用图形用户界面(GUI,Graphical User Interface)的方式呈现,该界面通过相应的控件、窗口、对话框的等实现下述至少之一功能:接收用户通过文字输入方式输入的任务元素、提供可展开的菜单栏接收用户对菜单栏中任务元素的选择、提供交互框使用户可通过交互步骤一步步输入或选择各仿真元素、提供文件上传或下载的控件实现用户上传文件或下载文件等等。
在一些实施例中,所述界面所显示的具体内容包括任务元素的选择控件或路径输入框控件,根据所述任务元素定义所述一仿真任务的以下内容的至少之一:仿真类型、仿真软件、仿真工程、控制模型、用例脚本、仿真速率、是否显示仿真动画、是否保存仿真动画。本实施例中至少包括仿真类型和/或仿真软件。
在一些实施例中,所述仿真类型通过所述任务元素中包含的以下信息中的一个进行定义:模型在环仿真测试MIL、软件在环仿真测试SIL、处理器在环仿真测试PIL、硬件在环仿真测试HIL;仿真软件通过所述任务元素中包含的仿真软件的标识进行定义;所述仿真工程通过所述任务元素中包含的仿真工程的标识进行定义;所述控制模型通过所述任务元素中包含控制模型的标识进行定义;所述用例脚本通过所述任务元素中包含的用例脚本的标识进行定义。
在一些实施例中,可采用菜单栏式选择控件实现对应仿真类型的任务元素的接收,即通过接收用户在菜单栏选择的MIL类型、SIL类型PIL或HIL等类型实现该对应仿真类型的任务元素的接收。类似的,在一些实施例中,通过接收用户在另一菜单栏选择的如CarMaker、Matlab等仿真软件名称,或对应的ID(如设置的各软件对应的ID)等标识,实现对仿真软件这一任务元素的接收。
另外需要说明的是,本步骤可以同时通过不同用户的终端显示界面,分别接收各个用户通过各界面输入的任务元素,即,本申请可支持多个用户的同时使用。
在一些实施例中,上述步骤S120中仿真任务所要定义的多项内容可以以模板方式存在,模板中包括多项要定义的内容,如仿真类型项、仿真软件项,且分别与界面中的各输入相对应,例如接收到用户通过菜单栏从MIL、SIL、PIL或HIL类型所选择出的一种仿真类型时,将该具体仿真类型定义给仿真类型项;又如接收到用户所选择的软件标识时,将该软件标识定义给仿真软件项。
类似的,在一些实施例中,对于通过步骤S120所接收到的用户通过操作界面选定的仿真工程的标识、控制模型的标识和用例脚本的标识等任务元素,在本步骤中均会定义给仿真任务所对应的项,如对应的仿真工程、控制模型和用例脚本项。这里的标识包括名称、编号、指定的访问目录等。对于通过步骤S120所接收到的用户通过操作界面选定的仿真速率、是否显示仿真动画、和/或是否保存仿真动画项时,也定义到相应的任务中。
另外需要说明的是,当同时通过不同的界面分别接收各个不同用户通过各界面输入的任务元素后,本步骤会分别对接收的各用户输入的任务元素分别定义仿真任务,即,本申请可支持仿真任务定义的并发。
在一些实施例中,由于会接收到多个仿真任务,因此上述步骤S130实现调度时,可通过任务队列对各个任务进行调度,可为:通过与所述仿真任务的第一内容对应的一任务队列,向匹配所述第一内容的一仿真节点调度;其中,至少一个任务队列中的不同的任务队列对应至少以下之一:不同的仿真类型、不同的仿真软件。
具体来说,该实施例中,采用了多个任务队列,且使不同的任务队列对应不同的仿真类型和/或不同仿真软件,即对应所述仿真任务的第一内容,由于任务队列进行了区分,调度时可以并发外,且在仿真任务调度给仿真节点时,不用判断仿真任务所定义的仿真类型和/或仿真软件,调度下发可以更快。一些实施例中,可以针对不同的仿真类型,设置对应的MIL类型的任务队列、SIL类型的任务队列、HIL类型的任务队列。或者,可以对应不同的仿真软件设置不同的任务队列。又或者,可以针对仿真类型和仿真软件的结合设置不同的任务队列。
当针对不同仿真类型和/或不同仿真软件,设置相应的不同任务队列时,将定义的仿真任务根据其被定义的仿真类型和/或仿真软件,分发到对应的任务队列中;当基于各任务队列进行仿真任务调度时,将各任务队列中的仿真任务依次调度给可支持对应仿真类型和/或可运行相应仿真软件的仿真节点。
在其他一些实施例中,采用了一个任务队列,各个仿真任务采用先进先出的方式调度到各个仿真节点,调度时先判断出仿真任务所定义的所述仿真类型和/或仿真软件,然后将所述仿真任务调度至可处理该仿真类型和/或可运行该仿真软件的仿真节点。
在其他一些实施例中,采用了多个任务队列,分别依次进行仿真任务的接收与分发,以便于任务的并发调度,以加快调度过程。
关于调度实现的一些实施例中,可以预先记录各个仿真节点可支持的仿真类型和/或可运行的仿真软件,在调度时,根据所记录的信息执行所述仿真任务的调度,将仿真任务调度到相应的仿真节点。
在一些实施例中,可以根据至少一个仿真节点的注册信息,确定匹配所述第一内容的所述一仿真节点,以将仿真任务调度到相应的仿真节点;其中,所述注册信息包括至少以下之一:可支持的仿真类型、可运行的仿真软件。具体来说,将仿真节点可支持的仿真类型和/或可运行的仿真软件可以作为仿真节点的注册信息注册到注册表中的实现方式可为,当仿真节点安装了一个或多个仿真软件时,则可以将所安装的各仿真软件的名称、各仿真软件可支持的各仿真类型作为注册信息进行上传,以在所述注册表中进行记录。相应的,当仿真节点某仿真软件被卸载、或失效(如使用许可过期,或部分功能的许可过期等)、或故障而导致仿真节点不可运行该仿真软件或处理某仿真类型时,会相应的更新注册表中的信息。
在一些实施例中,也可以以配置文件的方式替代注册表,同样可以实现预先记录各个仿真节点可支持的仿真类型和/或可运行的仿真软件。
在一些实施例中,可以不采用注册表或配置文件等方式预先记录各个仿真节点可支持的仿真类型和/或可运行的仿真软件,而是当要进行仿真任务调度时,通过与各个仿真节点进行的信息交互,获得各个仿真节点可支持的仿真类型和/或可运行的仿真软件,再从中选出一可执行所定义的仿真任务的仿真节点进行仿真任务调度。
在一些实施例中,也可以是接收到仿真节点的对仿真任务请求时,再通过信息交互、或通过该仿真任务请求中直接携带仿真节点的可支持的仿真类型和/或可运行的仿真软件,而获得该仿真节点可支持的仿真类型和/或可运行的仿真软件,将相应任务队列中的任务向该节点进行调度。
在一些实施例中,在所述调度过程中,还可获取各仿真节点的运行状态,该运行状态包括节点负载能力,例如支持调度的最大执行单元数,或可用执行单元数;执行所述调度时还依据各仿真节点的运行状态,基于负载均衡策略对所述调度进行控制。
【仿真任务执行方法的一实施例】
本申请还提供了一种仿真任务执行方法,参照图2示出的流程图,对本申请仿真调度方法第一实施例进行介绍,包括以下步骤:
S210、接收调度的仿真任务;接收的该仿真任务的第一内容至少包括有仿真类型、仿真软件;
其中,如仿真任务调度方法的第一实施例所述,被定义有仿真类型和/或仿真软件的仿真任务被调度到相应的仿真节点,通过仿真节点接收调度的仿真任务,该仿真节点可支持所述仿真类型和/或可运行所述仿真软件。
S220、通过匹配所述第一内容的仿真软件执行所述仿真任务。
在执行所述仿真任务时,具体的可为:由仿真节点解析所述仿真任务,根据其中的第一内容包含的仿真类型和/或仿真软件,使用所述仿真类型和/或运行所述仿真软件执行所述仿真任务。
在一些实施例中,仿真任务中仅定义有仿真类型,则仿真节点使用仿真节点上所具有的支持该仿真类型的仿真软件执行所述仿真类型的所述仿真任务。如果仿真节点上存在多款支持该仿真类型的仿真软件,则可以择一使用。
在一些实施例中,仿真任务中仅定义有仿真软件,则仿真节点使用其所具有的所述仿真软件执行所述仿真任务;
在一些实施例中,仿真任务中仅定义有仿真类型和仿真软件,则仿真节点使用仿真节点上所具有的支持该仿真类型的该仿真软件执行所述仿真类型的所述仿真任务。
在一些实施例中,当仿真任务的内容还包括仿真工程、控制模型或用例脚本时,可以从文件***存储的仿真工程、控制模型或用例脚本的实体文件,来获取这些用于执行所述仿真任务的实体文件。这样便于实现仿真工程、控制模型或用例脚本实体文件的共享。
在一些实施例中,根据仿真任务还包括的仿真速率、是否显示仿真动画或是否保存仿真动画,执行所述仿真任务。
在一些实施例中,可通过仿真节点的仿真控制端口,接收用户通过步骤S110中所述界面输入的仿真控制指令;并根据所述仿真控制指令控制该仿真节点上的所述仿真软件的运行。这样实现了对仿真软件运行的控制。
在一些实施例中,可通过仿真节点从其上的仿真软件获取仿真动画数据,并通过仿真节点的仿真动画传输端口输出到步骤S110中所述界面。这样可以将仿真软件生成的仿真动画通过所述界面显示给用户。
【仿真实现方法的一实施例】
本申请还提供了一种仿真实现方法,参照图3示出的流程图,由上述仿真任务调度方法和仿真任务实现方法的组合所构成。为了更好的理解本申请,在本实施例中,除了可以完全采用上述仿真任务调度方法和仿真任务实现的方法组合外,这里还使用了一些其他的例子进行介绍,这些例子同样可以应用于上述仿真任务调度方法与仿真任务实现方法中。本实施例包括以下步骤:
S310、接收用于定义仿真任务的任务元素。
如图4的示意图中示出了任务定义模板包含的内容的实例,向用户显示的界面所包含的具体内容对应着仿真任务的定义模板的内容,从而可以通过接收用户在该界面的操作,接收用于定义仿真任务的任务元素。
其中,本步骤中接收到的仿真软件、仿真工程、控制模型、用例脚本的任务元素,并不是指实体文件(实体文件指包含有具体内容的文件,例如包含有代码的仿真软件),而是对应于实体文件的标识,如名称或可加载路径,根据该标识可获取到对应的实体文件。实体文件可以存储于共享的文件***中,举例说明如下:
上述仿真工程和其下的各仿真资源可预先配置、上述已有的控制模型、用例脚本可预先建立,如图3所示,可以由用户通过网页浏览器提供的某界面执行相应操作,以实现对仿真工程及其下仿真资源的配置或上传、各控制模型的建立或上传,各用例脚本的建立或上传。这里的上传指上传到共享的文件***中,且可以以池的方式存在,如各种仿真资源构成的仿真资源池、各种仿真工程资源构成仿真工程资源池,各种控制模型构成的控制模型池,各用例脚本构成用例脚本池。在后续步骤执行仿真任务过程中,该文件***将挂载到仿真节点,以使得仿真节点的相应执行单元可以访问、加载。
其中,接收仿真工程这一任务元素时,还可接收该任务元素下的子元素,如工程名(即仿真工程的标识)等,工程名对应于该仿真工程下所要使用的各仿真资源的一配置信息。仿真资源可包括仿真场景资源、仿真车辆资源、仿真传感器资源等。仿真资源的创建,可以通过某显示界面接收用户选择或输入的各资源参数,完成仿真资源的创建。另外,对每个仿真资源创建后,可以分别以配置文件方式存储。
这里,进一步对仿真资源举例说明如下:仿真场景的仿真资源包括“雨天环路场景A资源配置文件”、“雨天环路场景B资源配置文件”等仿真资源,每个仿真资源中配置有形成各自仿真场景的各资源参数,如道路参数、天气参数、障碍物参数等。又如,某仿真车辆资源可以是“七座SUV型车辆C资源配置文件”,该仿真资源记载有形成该仿真车辆的各资源参数,如车重量参数、动力参数、胎压参数等。又如某仿真传感器资源可以是“车距传感器A资源配置文件”,其内记载有形成该仿真传感器的各资源参数,如传感器型号、安装位置、数量参数等。其中,一个工程名对应的配置信息中,包括至少一个仿真资源。
S320、根据接收的任务元素定义仿真任务。其中,在定义仿真工程时,还包括定义所选仿真类型下所选仿真软件的相关任务元素,这些任务元素是所选仿真软件执行所选类型仿真任务所需的定义,这些任务元素同样在步骤S310中通过界面方式接收到。所述相关任务元素的定义例如:MIL类型时对运行仿真所需的被控对象模型的定义、模型开发环境定义;SIL类型时对运行仿真所需的SIL可执行程序的定义;HIL类型时对HIL实时机的定义(IP、用户名、执行参数)及对实时机要执行的HIL可执行程序的定义等;
在本实施例中,定义仿真类型项具体指定义控制模型的名称或加载路径。控制模型可以为预先已经建立的算法模型,例如自动驾驶算法模型。
在本实施例中,定义用例脚本项具体定义用例脚本名称到仿真任务入口,仿真任务入口是指执行自动化仿真用例的入口。
S330、根据所述仿真类型和/或仿真软件,将所述仿真任务调度至可处理该仿真类型和/或可运行该仿真软件的仿真节点。
参见图5所示的流程图,及图6A所示的交互示意图,本实施例中该步骤的具体实现方式之一可以采用下述子步骤:
S331、预先,将各仿真节点进行注册,将各仿真节点的配置信息注册到仿真任务调度***(如云平台、服务器等网络侧设备),并根据各仿真节点支持的仿真类型为各仿真节点配置标签,并记录在注册信息中。并且,对应不同的仿真类型,创建有不同的任务队列;
S332、当收到所定义的仿真任务时,给该仿真任务分配一任务ID,并根据仿真任务中记载的仿真任务类型,分发到对应该仿真任务类型的任务队列中;
S333、之后,根据上述注册信息中记录的各仿真节点的所支持的仿真类型,确定出可处理该任务类型的仿真节点,将该仿真类型的任务队列中的各仿真任务依次调度给可处理该任务类型的仿真节点。当调度成功后,将仿真任务从相应任务队列中移除。
其中,所述调度过程中,还可包括:获取各仿真节点的运行状态(例如负载能力,即计算节点最大负载(支持调度的最大执行单元数));执行所述调度时还依据各仿真节点的运行状态对所述调度进行控制。本例中,该实现方式可以采用以下方式之一:
第一方式:注册后的各个仿真节点启动调度代理(Agent)程序,通过仿真节点上的调度Agent程序实时反馈节点的负载情况(已调度执行单元数/最大负载)。当队列中存在排队任务,且根据所述反馈获知有可处理该类型任务的(非满负载)仿真节点时,则选择实时负载最小的仿真节点,则将仿真任务调度给该仿真节点Agent程序执行。该仿真节点的Agent接收仿真任务调度***发送的仿真任务后,启动执行单元执行任务;
第二方式:在第一方式的基础上,进一步增加仿真节点主动请求仿真任务调度的方案,具体为:由仿真节点判断其负载是否达限值时,未达限值时,可根据节点标签向仿真任务调度***请求相应类型的任务队列的任务;仿真任务调度时从收到的所述请求的仿真节点中进行所要调度的仿真节点的选择。
S340、通过仿真节点接收调度的仿真任务;接收的该仿真任务被定义有仿真类型和/或仿真软件;
S350、通过该仿真节点执行所述仿真任务。
本实施例中,本步骤可包括:通过所述仿真节点根据仿真任务中的定义构建仿真流程,调用并运行定义的所述仿真软件,将定义的所述仿真工程、控制模型和用例脚本的实体文件加载到所述仿真软件,以使所述仿真软件执行所述仿真类型的仿真任务。如下示出了本步骤的一种实现方法,参见图4所示的示意图中执行单元所执行的下述步骤的流程:
S351、根据定义的仿真工程、控制模型,用例脚本,通过挂载的共享文件***读取对应的仿真工程实体文件、控制模型实体文件、用例脚本实体文件;
S352、根据定义的仿真类型、仿真软件以及用例脚本,确定需要在本节点上执行的仿真流程;
S353、调用仿真节点上的仿真软件,执行所确定出的仿真流程。该仿真软件运行过程会载人运行仿真所需的所述仿真工程实体文件、控制模型实体文件、用例脚本实体文件。
S354、当仿真执行结束后存储任务日志、仿真结果和仿真日志等数据到共享文件***。
在一些实施例中,用户可以与执行该仿真任务的仿真节点进行实时交互,进行仿真控制或获取仿真动画时,实现方式可具体如下:
收到定义的仿真任务时,每个仿真任务会被分配一任务ID,用于区分各个仿真任。调度任务给仿真节点时,同时会将任务ID提供给仿真节点(或仿真节点请求仿真任务时会得到任务ID)。当仿真节点开始执行该任务时,仿真节点可获取该任务执行的相关数据(节点IP,仿真状态,仿真控制和动画传输端口等)。在一些实施例中,当用户与执行仿真任务中的仿真节点进行交互时,可以采用如图6B示出的实时交互的步骤,包括:
首先、接收用户通过界面请求某任务执行状态和数据的指令时,根据该任务的任务ID可获知对应的处理该任务的仿真节点的IP地址;
然后、根据仿真节点IP地址和仿真控制端口调用实时仿真API向仿真节点发送仿真控制指令,实时仿真API将仿真控制指令发送到所述IP地址的仿真节点的仿真控制端口,由仿真节点的执行单元解析指令并对仿真软件进行控制。该仿真控制指令包括:暂停、中止、继续,请求数据、请求仿真状态和动画等指令,仿真节点可进行相应指令的执行或反馈数据。
例如,当为请求实时动画时,可具体为:根据仿真节点IP地址和仿真动画传输端口调用实时仿真API请求实时仿真动画,API监听该IP地址仿真节点的仿真动画传输端口,获取仿真软件发送的仿真动画,并将实时动画回传到用户侧界面(如浏览器界面)显示给用户。其中,仿真动画传输端口数据由执行单元从仿真软件实时获取。
【仿真实现方法的一具体实施方式】
图7为仿真实现方法的第一具体实施方式的示意图中,该具体实施方式中,仿真软件采用了CarMaker、开发环境采用了Matlab,要进行MIL仿真类型的仿真,该实施方式包括以下步骤:
S710:用户通过浏览器登录页面,其登录过程包括对用户的认证过程,认证通过后,可以通过浏览器显示第一界面,该第一界面具有供用户点选或输入的控件,用户可以选择或输入执行仿真任务所需要的任务元素,通过浏览器界面接收用户提交的所述任务元素。
根据接收的各任务元素定义仿真任务,所形成任务定义如下:
任务定义
仿真任务类型-MIL【对应用户选定的仿真任务类型】
仿真软件-CarMaker【对应用户选定的仿真软件的名称】
仿真工程
-CarMaker工程名【对应用户选定的工程名,根据工程名可从文件***中获取为该工程所配置的各仿真资源】
-CarMaker模型名称【对应用户选定的被控模型的模型名称】
-初始化Matlab脚本【对应用户选定的用于启动初始化Matlab的脚本】
-Matlab路径【即模型开发环境的定义,对应用户选定Matlab时根据注册信息的记录而自动生成的Matlab的加载路径】
待验证算法(Simulink模型)
-Simulink工程路径【对应用户选定控制模型时,根据控制模型名称自动生成的该控制模型的加载路径】
仿真任务入口-MIL用例TCL脚本【对应用户选定的用例脚本名称,该用例脚本是用TCL语言编写的MIL类型的仿真任务的用例脚本】
S720:根据仿真任务中的任务类型MIL,将该仿真任务分发到对应该仿真任务类型的任务队列中,通过任务队列,并根据相应各仿真节点的负载情况,基于负载均衡策略,调度给可处理该MIL任务类型的一仿真节点,即调度给具有标签为MIL类型,且可运行CarMaker软件的仿真节点。
S730:所述仿真节点通过其空闲的执行单元解析定义的仿真任务,根据任务定义中的MIL仿真类型、仿真软件CarMaker、仿真工程、控制模型以及仿真任务入口对应的MIL用例TCL脚本,确定出需要在该执行单元执行的仿真流程并执行,执行的仿真流程包括下述子步骤:
S731、开发环境(Matlab)的启动:启动Matlab,并根据定义的控制模型(即验证算法Simulink模型)打开Simulink工程;
加载Matlab,在Matlab环境下依次执行下述步骤:
S732、依次执行控制模型(即待验证模型算法)和被控对象模型(即CarMaker模型)的初始化脚本;
S733、打开被控对象模型(CarMaker模型),启动CarMaker软件并监听仿真控制端口;
S734、打开IPGMovie监听VDS仿真动画传输端口;
S735、执行MIL用例TCL脚本,在CarMaker软件下运行TCL脚本中的各个场景的仿真。
仿真过程中,可以通过实时仿真API通过仿真控制端口、仿真动画传输端口实现通过平台(web界面)与仿真节点的实时交互。仿真执行结束后存储仿真结果到共享文件***。
【仿真实现方法的第二具体实施方式】
图8为仿真实现方法的第二具体实施方式的示意图中,该具体实施方式中,仿真软件采用了CarMaker,要进行SIL仿真类型的仿真,与上述图7示出的MIL类型的仿真的主要区别在于,所形成的任务定义是基于SIL类型生成的,以及仿真节点执行的仿真任务是针对SIL仿真类型的流程,下面对不同之处简述如下:
S810:与上述步骤S710基本相同,主要不同在于该步骤中所形成任务定义如下:
任务定义
仿真任务类型-SIL【对应用户选定的仿真任务类型】
仿真软件-CarMaker【对应用户选定的仿真软件的名称】
仿真工程
-CarMaker工程名【对应用户选定的工程名,根据工程名可从文件***中获取为该工程所配置的各仿真资源】
-CarMaker工程框架代码【对应用户选定的SIL的工程框架源代码名称,根据该名称可从文件***中获取对应的源代码文件】
待验证算法
-算法工程路径【对应用户选定控制模型时,根据控制模型名称自动生成的该控制模型的加载路径】
仿真任务入口-SIL用例TCL脚本【对应用户选定的用例脚本名称,该用例脚本是用TCL语言编写的SIL类型的仿真任务的用例脚本】
S820:与上述步骤S720基本相同,不再赘述。
S830:与上述步骤S730基本相同,不同在于执行的是SIL类型的仿真流程,该流程包括下述子步骤:
S831、启动CarMaker软件并监听仿真控制端口;
S832、结合工程框架代码和控制模型(待验证算法)由CarMaker编译生成CarMakerSIL可执行程序;
S833、启动SIL可执行程序并连接到CarMaker;即实现SIL可执行程序运行的进程与CarMaker运行的进程间的通信;
S834、打开IPGMovie监听VDS仿真动画传输端口;
S835、执行SIL用例TCL脚本,在CarMaker软件下运行TCL脚本中的各个场景的仿真。
仿真过程中,可以通过实时仿真API通过仿真控制端口、仿真动画传输端口实现通过平台(web界面)与仿真节点的实时交互。仿真执行结束后存储仿真结果到共享文件***。
在另一个实施例中,步骤S810中任务定义时CarMaker工程框架代码处更改为SIL可执行程序名,则不需要步骤S832,步骤833中的SIL可执行程序是根据SIL可执行程序名从文件***中获取的。即SIL可执行程序可预先单独编译存储。
【仿真实现方法的第三具体实施方式】
图9为仿真实现方法的第二具体实施方式的示意图中,该具体实施方式中,仿真软件采用了CarMaker,要进行HIL仿真类型的仿真,与上述图7示出的MIL类型的仿真的主要区别在于,所形成的任务定义是基于SIL类型生成的,以及仿真节点执行的仿真任务是针对SIL仿真类型的流程,下面对不同之处简述如下:
该实施方式包括以下步骤:
S910:与上述步骤S710基本相同,主要不同在于该步骤中所形成任务定义如下:
任务定义
仿真任务类型-HIL【对应用户选定的仿真任务类型】
仿真软件-CarMaker【对应用户选定的仿真软件的名称】
仿真工程
-CarMaker工程名【对应用户选定的工程名,根据工程名可从文件***中获取为该工程所配置的各仿真资源】
-CarMaker工程框架代码名称【对应用户选定的HIL工程框架源代码名称,根据该名称可从文件***中获取对应的源代码文件】
-HIL程序执行参数【对应用户选定的运行HIL仿真所需配置参数】
-HIL实时机IP地址【对应用户输入的用于HIL仿真的实时机(如工控机)的IP地址】
-HIL实时机用户名【对应用户输入的用于HIL仿真的实时机(如工控机)的用户名】
待验证算法
-算法工程路径【对应用户选定控制模型时,根据控制模型名称自动生成的该控制模型的加载路径】
仿真任务入口-HIL用例TCL脚本【对应用户选定的用例脚本名称,该用例脚本是用TCL语言编写的HIL类型的仿真任务的用例脚本】
S920:与上述步骤S720基本相同,不再赘述。
S930:与上述步骤S730基本相同,不同在于执行的是SIL类型的仿真流程,该流程包括下述子步骤:
S931、启动CarMaker软件并监听仿真控制端口;
S932、结合工程框架代码和控制模型(待验证算法)由CarMaker编译生成HIL可执行程序;
S933、配置HIL程序执行参数、实时机的IP和用户名;
S934、在实时机启动所生成的HIL可执行程序,并连接到CarMaker;即实现实时机上的HIL可执行程序运行时与CarMaker运行的进程间的通信;
S935、打开IPGMovie监听VDS仿真动画传输端口;
S936、执行HIL用例TCL脚本,在CarMaker软件下运行TCL脚本中的各个场景的仿真。
仿真任务执行过程中,可以通过实时仿真API通过仿真控制端口、仿真动画传输端口实现通过平台(web界面)与仿真节点的仿真软件实时交互。仿真执行结束后存储仿真结果到共享文件***。
在另一个实施例中,步骤S910中任务定义时CarMaker工程框架代码处更改为HIL可执行程序名,则不需要步骤S932,步骤933中的HIL可执行程序是根据HIL可执行程序名从文件***中获取的。即HIL可执行程序可预先单独编译存储。
由上三个仿真实现方法的三个具体实施方式可以看出,本申请可支持多种仿真类型。也可以看出,任务定义仅需仅少的元素,而这些元素可通过向用户提供的界面获得,可见对于用户来说,不必关系仿真软件的具体内部情况,而相关资源都可以通过界面输入或选择,当仿真节点需要资源时则会从文件***获得,且各资源以池的方式存在,可以一定程度上不需用户对每个工程资源、控制模型、被控模型都去重新编写、创建,降低了劳动量。
下面涉及装置的实施例,关于各装置的有益效果或解决的技术问题,可以参见与各装置分别对应的方法中的描述,或者参见发明内容中的描述,此处不再一一赘述。
【仿真任务调度装置的一实施例】
如图10示出了仿真任务调度装置的第一实施例,该仿真任务调度装置包括:
接收模块1010,用于接收任务元素,该任务元素;
处理模块1020,用于根据所述任务元素定义一仿真任务的第一内容,所述第一内容包括至少以下之一:仿真类型、仿真软件。在一些实施例中,以及,用于将所述仿真任务向匹配所述第一内容的一仿真节点调度。
所述处理模块1020还用于根据所述任务元素还定义所述一仿真任务的至少以下之一的内容:仿真工程、控制模型、用例脚本、仿真速率、是否显示仿真动画、是否保存仿真动画。
其中,上述仿真类型通过所述任务元素中包含的以下信息中的一个进行定义:模型在环仿真测试MIL、软件在环仿真测试SIL、处理器在环仿真测试PIL、硬件在环仿真测试HIL。仿真软件通过所述任务元素中包含的仿真软件的标识进行定义;所述仿真工程通过所述任务元素中包含的仿真工程的标识进行定义;所述控制模型通过所述任务元素中包含控制模型的标识进行定义;所述用例脚本通过所述任务元素中包含的用例脚本的标识进行定义。
在一些实施例中,所述处理模块用于:通过与所述仿真任务的第一内容对应的一任务队列,向匹配所述第一内容的一仿真节点调度;其中,至少一个任务队列中的不同的任务队列对应至少以下之一:不同的仿真类型、不同的仿真软件。
在一些实施例中,所述处理模块1020还用于根据至少一个仿真节点的注册信息,确定匹配所述第一内容的所述一仿真节点;其中,所述注册信息包括至少以下之一:可支持的仿真类型、可运行的仿真软件。
【仿真任务执行装置的一实施例】
如图11示出了仿真任务执行装置的一实施例,该仿真任务执行装置包括:
接收模块1110,用于接收调度的仿真任务;所述仿真任务的第一内容包括至少以下之一:仿真类型、仿真软件;
处理模块1120,用于通过匹配所述第一内容的仿真软件执行所述仿真任务。
在一些实施例中,所述仿真任务还包括仿真工程、控制模型或用例脚本;所述处理模块1120还用于从文件***获取对应的用于执行所述仿真任务的实体文件。
在一些实施例中,所述仿真任务还包括的仿真速率、是否显示仿真动画或是否保存仿真动画。
在一些实施例中,所述接收模块1110还用于通过仿真控制端口接收仿真控制指令;所述处理模块1120还用于根据所述仿真控制指令控制所述仿真软件的运行。
在一些实施例中,所述装置还包括:发送模块1130,用于从所述仿真软件获取仿真动画数据,并通过仿真动画传输端口输出所述仿真动画数据。
【仿真实现装置的一实施例】
如图12示出了仿真实现装置的一实施例,包括上述仿真调度装置的任一实施例和上述仿真任务执行装置的任一实施例。
【仿真实现装置的一具体实施方式】
如图13示出了本发明仿真实现装置的一具体实施方式,用于车辆自动驾驶仿真。其中,通过用户终端的浏览器显示提供给用户登陆即操作界面,界面上对应以任务模板模式显示给用户,并用来接收用户输入的所需的各任务元素。多个仿真节点构成仿真节点集群,每个仿真节点上具有多个执行单元,每个仿真节点上具有仿真软件。定义的仿真任务被分配到不同仿真类型的任务队列,并调度给可处理该任务类型的仿真节点。仿真节点实现调用其空闲的执行单元生成仿真流程并执行,例如调用图中示出的最上面的执行单元。并通过共享文件***存储仿真结果数据,以及存储工程实体文件、控制模型实体文件、用例脚本实体文件等。用户可通过用户终端浏览器实时与仿真节点交互,发送指令或接收仿真动画并可从共享文件***获取仿真结果数据。
图14是本申请实施例提供的一种计算设备1500的结构性示意性图。该计算设备1500包括:处理器1510和通信接口1530。
应理解,图14所示的计算设备1500中的通信接口1530可以用于与其他设备之间进行通信。
可选的,计算设备1500还可以包括存储器1520,与所述处理器1510连接。该存储器1520可以用于存储该程序代码和数据。因此,该存储器1520可以是处理器1510内部的存储单元,也可以是与处理器1510独立的外部存储单元,还可以是包括处理器1510内部的存储单元和与处理器1510独立的外部存储单元的部件。
可选的,计算设备1500还可以包括总线。其中,存储器1520、通信接口1530可以通过总线与处理器1510连接。总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,在本申请实施例中,该处理器1510可以采用中央处理单元(centralprocessing unit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器1510采用一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。
该存储器1520可以包括只读存储器和随机存取存储器,并向处理器1510提供指令和数据。处理器1510的一部分还可以包括非易失性随机存取存储器。例如,处理器1510还可以存储设备类型的信息。
在计算设备1500运行时,所述处理器1510执行所述存储器1520中的计算机执行指令执行上述方法的操作步骤。
应理解,根据本申请实施例的计算设备1500可以对应于执行根据本申请各实施例的方法中的相应主体,并且计算设备1500中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种多样化问题生成方法,该方法包括上述各个实施例所描述的方案中的至少之一。
本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本申请的较佳实施例及所运用的技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请的构思的情况下,还可以包括更多其他等效实施例,均属于本申请的保护范畴。
Claims (24)
1.一种仿真任务调度方法,其特征在于,包括:
接收任务元素;
根据所述任务元素定义一仿真任务的第一内容,所述第一内容包括至少以下之一:仿真类型、仿真软件;
将所述仿真任务向匹配所述第一内容的一仿真节点调度。
2.根据权利要求1所述的方法,其特征在于,所述将所述仿真任务向匹配所述第一内容的一仿真节点调度包括:
通过与所述仿真任务的第一内容对应的一任务队列,向匹配所述第一内容的一仿真节点调度;
其中,至少一个任务队列中的不同的任务队列对应至少以下之一:不同的仿真类型、不同的仿真软件。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据至少一个仿真节点的注册信息,确定匹配所述第一内容的所述一仿真节点;
其中,所述注册信息包括至少以下之一:可支持的仿真类型、可运行的仿真软件。
4.根据权利要求1至3任一所述的方法,其特征在于,根据所述任务元素还定义所述一仿真任务的至少以下之一的内容:仿真工程、控制模型、用例脚本、仿真速率、是否显示仿真动画、是否保存仿真动画。
5.根据权利要求4所述的方法,其特征在于,
所述仿真类型通过所述任务元素中包含的以下信息中的一个进行定义:模型在环仿真测试MIL、软件在环仿真测试SIL、处理器在环仿真测试PIL、硬件在环仿真测试HIL;
仿真软件通过所述任务元素中包含的仿真软件的标识进行定义;
所述仿真工程通过所述任务元素中包含的仿真工程的标识进行定义;
所述控制模型通过所述任务元素中包含控制模型的标识进行定义;
所述用例脚本通过所述任务元素中包含的用例脚本的标识进行定义。
6.一种仿真任务执行方法,其特征在于,包括:
接收调度的仿真任务;所述仿真任务的第一内容包括至少以下之一:仿真类型、仿真软件;
通过匹配所述第一内容的仿真软件执行所述仿真任务。
7.根据权利要求6所述的方法,其特征在于,所述仿真任务还包括仿真工程、控制模型或用例脚本;所述方法还包括:
从文件***获取对应的用于执行所述仿真任务的实体文件。
8.根据权利要求6或7所述的方法,其特征在于,所述仿真任务还包括仿真速率、是否显示仿真动画或是否保存仿真动画。
9.根据权利要求6至8任一所述的方法,其特征在于,所述方法还包括:
通过仿真控制端口接收仿真控制指令;
根据所述仿真控制指令控制所述仿真软件的运行。
10.根据权利要求6至9任一所述的方法,其特征在于,所述方法还包括:
从所述仿真软件获取仿真动画数据,并通过仿真动画传输端口输出所述仿真动画数据。
11.一种仿真实现方法,其特征在于,包括:
权利要求1至5任一所述的仿真任务调度方法;和
权利要求6至10任一所述的仿真任务执行方法。
12.一种仿真任务调度装置,其特征在于,包括:
接收模块,用于接收任务元素;
处理模块,用于根据所述任务元素定义一仿真任务的第一内容,所述第一内容包括至少以下之一:仿真类型、仿真软件;以及用于将所述仿真任务向匹配所述第一内容的一仿真节点调度。
13.根据权利要求12所述的装置,其特征在于,所述处理模块用于:
通过与所述仿真任务的第一内容对应的一任务队列,向匹配所述第一内容的一仿真节点调度;
其中,至少一个任务队列中的不同的任务队列对应至少以下之一:不同的仿真类型、不同的仿真软件。
14.根据权利要求12或13所述的装置,其特征在于,所述处理模块还用于根据至少一个仿真节点的注册信息,确定匹配所述第一内容的所述一仿真节点;
其中,所述注册信息包括至少以下之一:可支持的仿真类型、可运行的仿真软件。
15.根据权利要求12至14任一所述的装置,其特征在于,所述处理模块还用于根据所述任务元素还定义所述一仿真任务的至少以下之一的内容:仿真工程、控制模型、用例脚本、仿真速率、是否显示仿真动画、是否保存仿真动画。
16.根据权利要求15所述的装置,其特征在于,所述仿真类型通过所述任务元素中包含的以下信息中的一个进行定义:模型在环仿真测试MIL、软件在环仿真测试SIL、处理器在环仿真测试PIL、硬件在环仿真测试HIL;
仿真软件通过所述任务元素中包含的仿真软件的标识进行定义;
所述仿真工程通过所述任务元素中包含的仿真工程的标识进行定义;
所述控制模型通过所述任务元素中包含控制模型的标识进行定义;
所述用例脚本通过所述任务元素中包含的用例脚本的标识进行定义。
17.一种仿真任务执行装置,其特征在于,包括:
接收模块,用于接收调度的仿真任务;所述仿真任务的第一内容包括至少以下之一:仿真类型、仿真软件;
处理模块,用于通过匹配所述第一内容的仿真软件执行所述仿真任务。
18.根据权利要求17所述的装置,其特征在于,所述仿真任务还包括仿真工程、控制模型或用例脚本;
所述处理模块还用于从文件***获取对应的用于执行所述仿真任务的实体文件。
19.根据权利要求17或18所述的装置,其特征在于,所述仿真任务还包括的仿真速率、是否显示仿真动画或是否保存仿真动画。
20.根据权利要求17至19任一所述的装置,其特征在于:
所述接收模块还用于通过仿真控制端口接收仿真控制指令;
所述处理模块还用于根据所述仿真控制指令控制所述仿真软件的运行。
21.根据权利要求17至20任一所述的装置,其特征在于,所述装置还包括:
发送模块,用于从所述仿真软件获取仿真动画数据,并通过仿真动画传输端口输出所述仿真动画数据。
22.一种仿真实现装置,其特征在于,包括:
权利要求12至16任一所述仿真任务调度装置;和
权利要求17至21任一所述仿真任务执行装置。
23.一种计算设备,其特征在于,包括:
通信接口,以及至少一个处理器,
其中,所述至少一个处理器用于执行程序指令,所述程序指令当被所述至少一个处理器执行时使得所述计算设备实现权利要求1至5任一所述的方法,或者,所述程序指令当被所述至少一个处理器执行时使得所述计算设备实现权利要求6-10任一所述的方法。
24.一种计算机可读存储介质,其上存储有程序指令,其特征在于,所述程序指令当被计算机执行时使得所述计算机实现权利要求1至5任一所述的方法,或者,所述程序指令当被所述计算机执行时使得所述计算机实现权利要求6-10任一所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/135262 WO2022120717A1 (zh) | 2020-12-10 | 2020-12-10 | 仿真任务调度方法、执行方法、仿真实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112639734A true CN112639734A (zh) | 2021-04-09 |
CN112639734B CN112639734B (zh) | 2022-02-11 |
Family
ID=75291243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080004954.3A Active CN112639734B (zh) | 2020-12-10 | 2020-12-10 | 仿真任务调度方法、执行方法、仿真实现方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112639734B (zh) |
WO (1) | WO2022120717A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467276A (zh) * | 2021-09-03 | 2021-10-01 | 中国汽车技术研究中心有限公司 | 基于智能驾驶仿真赛事云平台的智能驾驶仿真方法 |
CN114004113A (zh) * | 2021-12-30 | 2022-02-01 | 佛山仙湖实验室 | 基于云服务的交互式智能车辆交通模拟测试方法及*** |
CN116467882A (zh) * | 2023-04-20 | 2023-07-21 | 之江实验室 | 在仿真软件中模型与线条的连接显示方法和装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117131076B (zh) * | 2023-09-20 | 2024-04-30 | 北京华如科技股份有限公司 | 一种用于仿真的数据处理方法及装置 |
CN117472530B (zh) * | 2023-10-25 | 2024-04-05 | 上海宽睿信息科技有限责任公司 | 一种基于集中管理的数据智能调度方法及*** |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013159586A1 (zh) * | 2012-04-24 | 2013-10-31 | 中国人民解放军国防科学技术大学 | 分布式仿真数据处理方法及装置 |
CN105677446A (zh) * | 2016-01-28 | 2016-06-15 | 中国电子科技集团公司第十研究所 | 分布式仿真平台的可视化建模方法 |
CN106951627A (zh) * | 2017-03-15 | 2017-07-14 | 北京百度网讯科技有限公司 | 车辆自动驾驶的仿真测试方法、装置、设备及计算机可读存储介质 |
CN110794810A (zh) * | 2019-11-06 | 2020-02-14 | 安徽瑞泰智能装备有限公司 | 一种对智能驾驶车辆进行集成化测试的方法 |
CN111124592A (zh) * | 2018-10-31 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 仿真任务执行方法和装置 |
CN111125857A (zh) * | 2018-10-31 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 分布式仿真方法和装置 |
CN111177899A (zh) * | 2019-12-16 | 2020-05-19 | 北京航天智造科技发展有限公司 | 一种基于云平台的多学科协同仿真方法和*** |
CN111199079A (zh) * | 2018-10-30 | 2020-05-26 | 百度在线网络技术(北京)有限公司 | 仿真任务调度方法和装置 |
US20200250363A1 (en) * | 2019-02-06 | 2020-08-06 | Metamoto, Inc. | Simulation and validation of autonomous vehicle system and components |
CN111506401A (zh) * | 2020-03-27 | 2020-08-07 | 北京百度网讯科技有限公司 | 自动驾驶仿真任务调度方法、装置、电子设备及存储介质 |
CN111796530A (zh) * | 2020-05-26 | 2020-10-20 | 北京智行者科技有限公司 | 一种自动驾驶软件在环仿真方法 |
CN111859638A (zh) * | 2020-07-06 | 2020-10-30 | 中国人民解放军海军航空大学航空作战勤务学院 | 一种实时高效分布式虚实结合仿真***及构建方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10331136B2 (en) * | 2006-02-27 | 2019-06-25 | Perrone Robotics, Inc. | General purpose robotics operating system with unmanned and autonomous vehicle extensions |
CN109359405B (zh) * | 2018-10-30 | 2023-04-18 | 四川航天***工程研究所 | 空天地一体化的大数据战场环境半实物仿真*** |
CN110781576B (zh) * | 2019-09-09 | 2022-08-23 | 腾讯科技(深圳)有限公司 | 一种仿真节点调度方法、装置及设备 |
CN111625949B (zh) * | 2020-05-20 | 2023-09-29 | 北京百度网讯科技有限公司 | 一种仿真引擎***、仿真处理方法、设备和介质 |
CN111879327B (zh) * | 2020-06-18 | 2022-02-22 | 北京九曜智能科技有限公司 | 集群自动驾驶车辆泊位作业的空间配置和时序规划方法 |
-
2020
- 2020-12-10 WO PCT/CN2020/135262 patent/WO2022120717A1/zh active Application Filing
- 2020-12-10 CN CN202080004954.3A patent/CN112639734B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013159586A1 (zh) * | 2012-04-24 | 2013-10-31 | 中国人民解放军国防科学技术大学 | 分布式仿真数据处理方法及装置 |
CN105677446A (zh) * | 2016-01-28 | 2016-06-15 | 中国电子科技集团公司第十研究所 | 分布式仿真平台的可视化建模方法 |
CN106951627A (zh) * | 2017-03-15 | 2017-07-14 | 北京百度网讯科技有限公司 | 车辆自动驾驶的仿真测试方法、装置、设备及计算机可读存储介质 |
CN111199079A (zh) * | 2018-10-30 | 2020-05-26 | 百度在线网络技术(北京)有限公司 | 仿真任务调度方法和装置 |
CN111124592A (zh) * | 2018-10-31 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 仿真任务执行方法和装置 |
CN111125857A (zh) * | 2018-10-31 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 分布式仿真方法和装置 |
US20200250363A1 (en) * | 2019-02-06 | 2020-08-06 | Metamoto, Inc. | Simulation and validation of autonomous vehicle system and components |
CN110794810A (zh) * | 2019-11-06 | 2020-02-14 | 安徽瑞泰智能装备有限公司 | 一种对智能驾驶车辆进行集成化测试的方法 |
CN111177899A (zh) * | 2019-12-16 | 2020-05-19 | 北京航天智造科技发展有限公司 | 一种基于云平台的多学科协同仿真方法和*** |
CN111506401A (zh) * | 2020-03-27 | 2020-08-07 | 北京百度网讯科技有限公司 | 自动驾驶仿真任务调度方法、装置、电子设备及存储介质 |
CN111796530A (zh) * | 2020-05-26 | 2020-10-20 | 北京智行者科技有限公司 | 一种自动驾驶软件在环仿真方法 |
CN111859638A (zh) * | 2020-07-06 | 2020-10-30 | 中国人民解放军海军航空大学航空作战勤务学院 | 一种实时高效分布式虚实结合仿真***及构建方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113467276A (zh) * | 2021-09-03 | 2021-10-01 | 中国汽车技术研究中心有限公司 | 基于智能驾驶仿真赛事云平台的智能驾驶仿真方法 |
CN113467276B (zh) * | 2021-09-03 | 2021-12-07 | 中国汽车技术研究中心有限公司 | 基于智能驾驶仿真赛事云平台的智能驾驶仿真方法 |
CN114004113A (zh) * | 2021-12-30 | 2022-02-01 | 佛山仙湖实验室 | 基于云服务的交互式智能车辆交通模拟测试方法及*** |
CN116467882A (zh) * | 2023-04-20 | 2023-07-21 | 之江实验室 | 在仿真软件中模型与线条的连接显示方法和装置 |
CN116467882B (zh) * | 2023-04-20 | 2024-05-14 | 之江实验室 | 在仿真软件中模型与线条的连接显示方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022120717A1 (zh) | 2022-06-16 |
CN112639734B (zh) | 2022-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112639734B (zh) | 仿真任务调度方法、执行方法、仿真实现方法及装置 | |
CN107784152B (zh) | 包括多个模拟器的模拟 | |
De Schutter | Better Software. Faster!: Best Practices in Virtual Prototyping | |
US9262373B2 (en) | Cloud-based software eco-system | |
CN106933729A (zh) | 一种基于云平台的测试方法和*** | |
Arrieta et al. | Automatic generation of test system instances for configurable cyber-physical systems | |
CN111737073B (zh) | 自动化测试方法、装置、设备及介质 | |
CN113468070A (zh) | 车载以太网的一致性测试方法 | |
CN112579142A (zh) | 用于工业互联网的应用程序发布方法及装置 | |
CN108959805B (zh) | 一种自动驾驶的硬件在环仿真的云平台及方法 | |
CN112558930B (zh) | 一种面向容器服务的软件生成***及方法 | |
CN115934263A (zh) | 一种数据处理方法、装置、计算机设备以及存储介质 | |
CN116126710A (zh) | 一种车载软件仿真方法、装置、设备及介质 | |
CN115795845A (zh) | 集成化测试仿真平台的构建方法、装置、设备及存储介质 | |
Langner et al. | Framework for using real driving data in automotive feature development and validation | |
CN115455564A (zh) | 一种基于流水线的虚拟汽车自动仿真方法和装置 | |
Becker et al. | A safety-certified vehicle OS to enable software-defined vehicles | |
CN114003508A (zh) | 基于云平台的软件测试工具集群管理方法和*** | |
CN113610242A (zh) | 数据处理方法、装置和服务器 | |
CN113037582A (zh) | 网络功能虚拟化nfv测试方法、装置和*** | |
Borky et al. | Using prototypes, verification, and validation to evaluate and enhance system architecture | |
Taiber et al. | Efficient engineering of safety-critical, software-intensive systems | |
Ebner et al. | Automized Testing-Support of the Testcase Generation & Assessment Using Systems Engineering | |
Pereira | Testes Automáticos utilizando o Vector CANoe num Sensor Inercial | |
CN115396941A (zh) | Ota压力测试方法、***、电子设备、存储介质 |
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 |