CN110781576B - 一种仿真节点调度方法、装置及设备 - Google Patents

一种仿真节点调度方法、装置及设备 Download PDF

Info

Publication number
CN110781576B
CN110781576B CN201910857440.1A CN201910857440A CN110781576B CN 110781576 B CN110781576 B CN 110781576B CN 201910857440 A CN201910857440 A CN 201910857440A CN 110781576 B CN110781576 B CN 110781576B
Authority
CN
China
Prior art keywords
simulation
node
scheduled
simulation node
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910857440.1A
Other languages
English (en)
Other versions
CN110781576A (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910857440.1A priority Critical patent/CN110781576B/zh
Publication of CN110781576A publication Critical patent/CN110781576A/zh
Application granted granted Critical
Publication of CN110781576B publication Critical patent/CN110781576B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • General Factory Administration (AREA)

Abstract

本申请涉及一种仿真节点调度方法、装置及设备,所述方法包括:接收仿真指令;对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令;获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间;遍历所述操作指令集合中的各单步执行操作指令;对于每一个单步执行操作指令,基于各目标仿真节点的调用步长时间,从各目标仿真节点中确定出至少一个待调度仿真节点,调用所述待调度仿真节点。本申请能够根据各仿真节点的配置信息,实现对各仿真节点的统一调度管理。

Description

一种仿真节点调度方法、装置及设备
技术领域
本申请涉及通信技术领域,尤其涉及一种仿真节点调度方法、装置及设备。
背景技术
***仿真是根据***分析的目的,在分析***各要素性质及其相互关系的基础上,建立能描述***结构或行为过程的、且具有一定逻辑关系或者数量关系的仿真模型,据此进行试验或定量分析,以获得正确决策所需的各种信息。
现有仿真***中的各个仿真模块一般是独立的,没有一个中枢控制模块能够控制各个模块的运行,为了解决现有技术中无法统一调度管理仿真***中各仿真模块的问题,现有技术中提出了两类仿真***:一类是基于现有***进行改造,比如ROS***(RobotOperating System,机器人操作***),ROS***有自己的调度***,但***中不同模块也是独立的不同节点,需要对ROS***进行额外的改造,实现统一调度控制各仿真模块,但是对仿真***需要兼容现有的***,且基于现有***的改在可能无法满足仿真***对于同一场景的精确复现;另一类是自主构建整个仿真***架构,向用户提供API调用接口,用户算法以客户端形式调用仿真***API的方式接入仿真***,在用户需要测试多模块时,需要用户自己负责协调各个模块的运行顺序。
发明内容
本申请所要解决的技术问题在于,提供一种仿真节点调度方法、装置及设备,能够根据各仿真节点的配置信息,实现对各仿真节点的统一调度管理。
为了解决上述技术问题,一方面,本申请提供了一种仿真节点调度方法,所述方法包括:
接收仿真指令;
对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令;
获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间;
遍历所述操作指令集合中的各单步执行操作指令;
对于每一个单步执行操作指令,基于各目标仿真节点的调用步长时间,从各目标仿真节点中确定出至少一个待调度仿真节点,调用所述待调度仿真节点。
另一方面,本申请提供了一种仿真节点调度装置,所述装置包括:
仿真指令接收模块,用于接收仿真指令;
仿真指令解析模块,用于对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令;
配置信息获取模块,用于获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间;
操作指令遍历模块,用于遍历所述操作指令集合中的各单步执行操作指令;
仿真节点调度模块,用于对于每一个单步执行操作指令,基于各目标仿真节点的调用步长时间,从各目标仿真节点中确定出至少一个待调度仿真节点,调用所述待调度仿真节点。
另一方面,本申请提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述的仿真节点调度方法。
另一方面,本申请提供了一种计算机存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如上述的仿真节点调度方法。
实施本申请实施例,具有如下有益效果:
本申请通过将用户的仿真指令解析为多个单步执行操作指令,并基于各仿真节点的配置信息,确定执行每一个单步执行操作指令所需要调度的待调度仿真节点,从而能够基于每一步的仿真结果输出进行分析,实现了对各仿真节点的统一调度管理;基于各节点的配置信息,按照逐步调用相应的仿真节点,在确定算法、确定配置以及确定场景下,可实现仿真结果的可精确复现性,使仿真验证更加有意义。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种仿真节点调度方法流程图;
图2是本申请实施例提供的一种仿真指令解析方法流程图;
图3是本申请实施例提供的一种待调度仿真节点调度方法流程图;
图4是本申请实施例提供的另一种待调度仿真节点调度方法流程图;
图5是本申请实施例提供的调用顺序有向图;
图6是本申请实施例提供的基于调用顺序有向图对仿真节点进行调度的方法流程图;
图7是本申请实施例提供的一种仿真结果处理方法流程图;
图8是本申请实施例提供的一种仿真状态处理方法流程图;
图9是本申请实施例提供的一种状态转换图;
图10是本申请实施例提供的一种仿真节点调度***示意图;
图11是本申请实施例提供的一种仿真节点调度装置示意图;
图12是本申请实施例提供的仿真指令解析模块示意图;
图13是本申请实施例提供的仿真节点调度模块示意图;
图14是本申请实施例提供的另一种仿真节点调度模块示意图;
图15是本申请实施例提供的第二调用模块示意图;
图16是本申请实施例提供的存储模块示意图;
图17是本申请实施例提供的状态判断模块示意图;
图18是本申请实施例提供的一种设备结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下介绍本申请的一种应用环境示意图,具体地,该应用环境至少包括仿真***以及用户终端设备。
本说明书实施例中,所述仿真***具体可以为自动驾驶仿真***,其中所述自动驾驶仿真***可以包括普通的自动驾驶仿真***,也可以包括具有仿真节点调度管理的自动驾驶仿真***。
本说明书实施例中,用户终端设备可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备等设备,本申请实施例中信息展示设备上运行的操作***可以包括但不限于安卓***、IOS***、linux、windows等。
在实际应用中,用户可通过用户终端设备向自动驾驶仿真***发出仿真指令,自动驾驶仿真***在接收到仿真指令之后,对仿真指令进行解析并且基于解析后的指令调度相应的仿真节点进行仿真,并向用户返回仿真结果。
现有技术中常见的仿真***架构大概分为两类:
1.基于自动驾驶实车上现有的***进行改造,比如ROS***,ROS有自己的调度***,并且***中不同模块也是独立的不同节点,但是在初始化阶段所有节点向***注册完毕之后各个节点就是独立运行(各个节点之间互相通信)了,也就是说在运行阶段中没有一个中枢模块能来控制各个模块的运行(何时执行下一步、何时暂停等等),所以就需要对***进行额外改造,同时还要兼容实车上的***。该技术方案中仿真***会和某个***强耦合,基于其他***构建的用户算法就比较难以接入仿真***,另外一般实车上的***因为受限于实车上实时运行的要求,基于实车上现有***改造的仿真***中的调度策略或者通信方式有可能无法满足仿真***对于同一个场景精确复现的要求。
2.自主构建的整个仿真***架构,但是所有功能都是集成在一起的,向用户提供API调用接口,用户算法通过以客户端形式的API调用来编程控制仿真***的运行。该技术方案中用户算法以客户端形式调用仿真***API的方式接入仿真***,这种情况下在用户需要测试多模块(感知、决策、控制等)的情况下,需要用户自己负责协调各个模块的运行顺序,并且此种架构也不方便从仿真前端界面控制整个***的运行。
因此,本申请提供了一种仿真节点调度方法,请参阅图1,该方法以仿真***中的调度装置为执行主体进行实现,具体地,所述方法包括:
S110.接收仿真指令。
这里的仿真指令可以是由用户发出的,用户可通过触发用户终端设备的用户界面上的相关操作模块来向仿真***发出相应的仿真指令。本申请实施例中的仿真指令可以包括:Init(初始化指令)、Reset(重置指令)、Step(单步指令)、Run(运行指令)以及Stop(停止指令)等。
S120.对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令。
以运行指令Run为例进行说明,对于仿真***来说,用户发出的运行指令Run所仿真的功能可能需要仿真***中的多个仿真节点进行协调仿真才能实现相应的仿真目的,即一条运行指令Run可能需要被拆分为多条单步指令来分别执行,并且执行每个单步指令所调用的仿真节点可能不同。具体地,请参阅图2,其示出了一种仿真指令解析方法,所述方法包括:
S210.对所述仿真指令进行拆分,得到至少一个单步指令。
根据上述内容可知,每一条仿真指令一般都是为了仿真或验证某一功能实现而发出的,而仿真***为了对相应的功能进行仿真验证,需要对该仿真指令进行分析,确定出要仿真该功能所需要执行的子步骤,具体可以是将仿真指令按执行步骤拆分为多个单步指令,在进行仿真时,按顺序依次执行每个单步指令。
另外,对于将每条仿真指令拆分为多条单步指令,可以相应地得出执行每条单步指令后的输出结果信息,对于存在仿真错误的情况,便于及时发现仿真错误信息并及时定位,而不需要一直等到执行完所有单步指令才能得到相关错误信息。
S220.为每个单步指令添加相应的执行参数,得到相应的单步执行操作指令。
在执行每个单步指令时,需要调用相关的仿真节点,这里的为每个单步执行指令添加的执行参数是发送给相关仿真节点的参数,这些仿真节点在收到这些参数时,会启动相关算法模块进行仿真,并得出相应的仿真结果。
S230.基于所述单步执行操作指令构建所述操作指令集合。
将各条单步执行操作指令step指令依次放入到所述操作指令集合中。
S130.获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间。
这里的配置信息可以是用户根据仿真需求提前为各仿真节点配置的,其中可以包括每个仿真节点的调用步长时间step time,step time可以理解为是各仿真节点被调用的时间间隔或者调用频率,即对于每个仿真节点,每隔一个step time被调用一次,并且各个仿真节点的step time可以不同。
S140.遍历所述操作指令集合中的各单步执行操作指令。
对于所述操作指令集合中的各条单步执行操作指令,根据各条单步执行操作指令执行的先后顺序依次对各单步执行操作指令进行遍历。
S150.对于每一个单步执行操作指令,基于各目标仿真节点的调用步长时间,从各目标仿真节点中确定出至少一个待调度仿真节点,调用所述待调度仿真节点。
对于每一个单步执行操作指令,其所涉及的仿真节点是不同的,具体地,请参见图3,其示出了一种待调度仿真节点调度方法流程图,所述方法包括:
S310.在执行每一个单步执行操作指令时,获取当前已仿真时长。
这里的当前已仿真时长可以是指从用户发送仿真指令启动仿真***的时刻到当前时刻之间所经历的时长。
S320.基于当前已仿真时长以及各目标仿真节点的调用步长时间,确定所述待调度仿真节点;其中,当前已仿真时长为所述待调度仿真节点的调用步长时间的整数倍。
例如,仿真***中包括仿真节点1、仿真节点2、仿真节点3和仿真节点4四个仿真节点,其中仿真节点1的step time为50ms,仿真节点2的step time为10ms,仿真节点3的steptime为10ms,仿真节点4的step time为60ms,当前已仿真时长为200ms,那么确定当前需要调用的待调用仿真节点为仿真节点1、仿真节点2和仿真节点3。
S330.调用所述待调度仿真节点。
对于从各仿真节点中确定出的待调度仿真节点的数量大于一个时,就存在待调度仿真节点的调度顺序问题,为此,本申请实施例提供了另一种待调度仿真节点调度方法,具体可参阅图4,对于上述的配置信息还可以包括各目标仿真节点之间的拓扑依赖关系,这里的拓扑依赖关系可以是由用户进行自定义得到的,相应地,所述方法包括:
S410.在执行每一个单步执行操作指令时,获取当前已仿真时长。
S420.基于当前已仿真时长以及各目标仿真节点的调用步长时间,确定所述待调度仿真节点;其中,当前已仿真时长为所述待调度仿真节点的调用步长时间的整数倍。
S430.当从各目标仿真节点中确定的所述待调度仿真节点的数量大于一个时,基于各目标仿真节点之间的拓扑依赖关系,确定各待调度仿真节点的调用顺序有向图。
通过各目标仿真节点之间的拓扑依赖关系可以获知各目标仿真节点的输入输出关系,基于输入输出关系可以确定出各待调度仿真节点的调用顺序有向图。
例如,对于上述的确定的待调用仿真节点1、仿真节点2和仿真节点3,相关的配置信息为:仿真节点1的输入为A,输出为C,仿真节点2的输入为B,输出为C,仿真节点3的输入为C,输出为B,假设首先调用的是仿真节点1,其输出为C,而仿真节点3的输入为C,即仿真节点3依赖于仿真节点1,同理,仿真节点2依赖于仿真节点3,从而得出的调用顺序有向图可参见图5。
S440.基于所述调用顺序有向图,调用各待调度仿真节点。
根据图5所示的调用顺序,分别调用仿真节点1、仿真节点3和仿真节点2。
具体的基于调用顺序有向图对仿真节点进行调度的方法可参阅图6,所述方法包括:
S610.从所述调用顺序有向图中确定当前待调度仿真节点。
以图5为例,针对当前单步执行操作指令,从调用顺序有向图中获取初始调度的仿真节点,这里的初始仿真节点可以为仿真节点1,即初始状态的当前待调度仿真节点为仿真节点1;后续确定的当前待调度仿真节点为所述调用顺序有向图中的其他待调度仿真节点。
S620.调用所述当前待调度仿真节点,得到当前仿真输出结果。
对于初始仿真节点的输入,其可以是初始化的空值,也可以是由调度装置从上一个单步执行操作指令执行之后得到的输出结果中获取信息作为相应仿真节点的输入值;对于有向图中的其他待调度仿真节点,其输入均是依赖于有向图中上一个仿真节点的输出。
确定当前待调度仿真节点的输入之后,当前待调度仿真节点会调用相应的仿真算法进行仿真,得到仿真结果。
S630.基于所述调用顺序有向图确定当前待调度仿真节点的下一待调度仿真节点。
S640.调用所述下一待调度仿真节点,并将所述当前仿真输出结果作为所述下一待调度仿真节点的输入。
S650.判断是否遍历完所述调用顺序有向图中的各待调度仿真节点。
S660.当判断结果为否时,确定所述下一待调度仿真节点为当前待调度节点,并执行步骤S610。
当判断没有遍历完所述待调用顺序有向图中的各待调度节点时,确定下一待调度仿真节点为当前待调度节点,重复执行上述待调度仿真节点调度以及当前待调度节点确定的操作。
S670.当判断结果为是时,结束仿真节点调度。
当遍历完所述待调用顺序有向图中的各待调度节点时,说明针对当前单步执行操作指令的调用仿真节点的操作结束。
对每个单步执行操作指令对各仿真节点调度之后的得到的仿真输出结果可进行存储,以便于在执行下一个单步执行操作指令时进行使用,具体请参阅图7,其示出了一种仿真结果处理方法,所述方法包括:
S710.获取调用各待调度仿真节点之后的仿真输出结果,其中,每项仿真输出结果包括主题以及与所述主题对应的数据信息。
S720.以键值的形式存储所述主题以及与所述主题对应的数据信息。
这里的仿真结果具体可以是主题以及相应的数据模式,即一个主题下可对应多种不同的数据,采用键值的形式进行存储,便于查找。
本申请实施例还提供了一种仿真状态处理方法,请参见与8,所述方法包括:
S810.判断所述仿真指令与当前仿真状态是否存在冲突。
S820.当判断结果为否时,基于所述仿真指令以及调用所述待调度仿真节点之后的仿真输出结果,确定当前仿真状态的下一仿真状态,并将所述下一仿真状态作为当前仿真状态。
S830.当判断结果为是时,向前端返回相应的错误信息。
这里对于仿真状态的确定可基于有限状态机进行确定,根据来自前端的不同指令以及不同指令在各个仿真模块中的执行结果在不同的状态之间来回切换,本申请实施例提供了一种状态转换图,请参阅图9,其中,在***处于配置状态时,当传入的心跳率大于0,则会启动心跳机制检测各个仿真节点的状况并进入准备状态;如果传入的心跳率等于0则没有心跳机制,自动进入准备状态。
当接收到所述待调度仿真节点返回的异常信息时,基于所述异常信息以及当前仿真状态信息,确定当前仿真状态的下一仿真状态,并将所述下一仿真状态作为当前仿真状态;向前端返回所述当前仿真状态。
在每一个单步执行操作指令step中,各个仿真节点在收到调用指令后,会调用其在***初始化阶段加载的相关算法动态库(仿真***的算法或者用户的算法)中实现的对应回调接口函数,如果调用函数中有错误发生,仿真节点将捕捉到算法抛出的异常并返回至调度装置,调度装置根据不同类型的错误码在不同类型之间进行切换并将当前的状态信息返回前端,如果调度装置在之后接收到来自前端的指令和当前的状态有冲突,则会返回前端相应的错误信息,并且不会将发生冲突的指令继续下发至各个仿真节点。
下面以一具体示例来说明本申请的具体实施过程,请参阅图10,其示出了一种仿真节点调度***示意图,所述***包括用户前端1010、调度装置1020、管理模块1030以及仿真节点1040,其中仿真节点1040包括仿真节点1、仿真节点2、仿真节点3和仿真节点4,仿真节点可以由仿真***提供,也可以由用户根据仿真需求进行添加。用户前端1010用于发出仿真指令以及接收相关仿真结果信息;调度装置1020用于根据仿真指令调度相应的仿真节点;管理模块1030用于管理相关进程,记录各仿真节点的相关信息,例如仿真节点的日志重定向等。
以自动驾驶仿真场景为例,仿真节点1、仿真节点2、仿真节点3和仿真节点4分别为仿真过程中对车辆进行不同信息计算的仿真节点;对于每个仿真节点,图9中示出了相应的输入以及输出,基于各仿真节点的输入输出,可确定各节点之间的仿真调用顺序;例如,仿真节点1可用于确定车辆当前的位置、速度以及周围障碍物的信息,在通过仿真节点1可确定出自车与障碍物的相对速度以及障碍物的位置坐标,这里仿真节点1的输出结果主题可以为障碍物,其对应的数据为自车与障碍物的相对速度以及障碍物的位置坐标等信息;将仿真节点1的输出作为仿真节点3和仿真节点4的输入,其中仿真节点3可根据输入的信息对自车的方向盘的转角以及刹车盘等相关参数进行仿真计算,仿真节点4可根据输入的信息对行车情况进行可视化仿真;将仿真节点3的输出作为仿真节点2的输入,从而可以对自车的行驶轨迹或路径进行仿真,得到相应仿真结果。
各个仿真节点对应相应的算法,其中仿真***本身的算法和用户的算法接入方式是一致的,用户只需要实现仿真***定义好的四个回调函数的接口,编译为C++的动态库即可,当***启动时不同的仿真节点对不同的算法动态库进行加载。
仿真***内部各个模块之间都是基于TCP协议(Transmission ControlProtocol,传输控制协议)进行可靠的数据传输,仿真节点本身是一个服务器Server,监听本地的某个端口,当调度装置接收到来自前端的指令后,会根据***启动时收到的配置信息决定当前帧(对应于前端一个step指令)将会调用哪些仿真节点,并根据模块配置信息中的拓扑关系对调用的节点按照依赖关系依次进行调用。各个节点之间的数据交互基于topic发布/订阅的模式,每个仿真节点都可以向***中的一个或多个topic发送数据,也可以从一个或多个topic中接收数据,在调度装置中维护了一个全局的映射,存储了当前***中所有的topic及其对应的数据。
本申请通过仿真节点实时加载算法动态库的方式,将不同的算法(***/用户)进行解耦,算法之间的依赖仅通过输入输出数据的topic来确定,对于仿真***自身来说,很容易进行功能模块上的扩展,对于用户来说也很容易接入不同的算法来进行仿真验证,多模块的设计也提供了***运行的便利性,不同的模块可以运行在不同的环境(Windows、Linux、有GPU的机器、无GPU的机器等)下;用户算法代码只需关注自己的算法实现以及输入输出和仿真***的消息格式之间的互相转换即可,无需关注仿真***内部的通信方式,方便用户算法的接入;调度装置和各仿真节点之间基于可靠传输(TCP)为基础,按照配置逐帧(step)调用相应仿真节点,在确保仿真节点返回正确的情况下按照依赖关系继续调用下游仿真节点,在确定算法、确定配置、确定场景的前提下,实现了仿真结果的可精确复现性,使仿真验证更加有意义。
在本申请实施例中各个模块之间是通过TCP方式和调度装置进行通信,实际上如果部分或全部模块运行于同一台物理机上时,则可以用任意一种IPC(Inter-processcommunication,进程间通信)方式进行通信,包括但不限于管道、共享内存、消息队列等等;另外仿真节点也可作为一个库提供给用户,当用户算法有时因为某种因素不方便编译为动态库而只能编译为二进制的可执行文件时,可以引入仿真节点的库并通过几行简单的API代码调用启动仿真节点的Server,达到和调度装置之间的通信。
本实施例还提供了一种仿真节点调度装置,请参阅图11,所述装置包括:
仿真指令接收模块1110,用于接收仿真指令;
仿真指令解析模块1120,用于对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令;
配置信息获取模块1130,用于获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间;
操作指令遍历模块1140,用于遍历所述操作指令集合中的各单步执行操作指令;
仿真节点调度模块1150,用于对于每一个单步执行操作指令,基于各目标仿真节点的调用步长时间,从各目标仿真节点中确定出至少一个待调度仿真节点,调用所述待调度仿真节点。
请参阅图12,所述仿真指令解析模块1120包括:
指令拆分模块1210,用于对所述仿真指令进行拆分,得到至少一个单步指令;
单步执行操作指令生成模块1220,用于为每个单步指令添加相应的执行参数,得到相应的单步执行操作指令;
操作指令集合构建模块1230,用于基于所述单步执行操作指令构建所述操作指令集合。
请参阅图13,所述仿真节点调度模块1150包括:
第一获取模块1310,用于在执行每一个单步执行操作指令时,获取当前已仿真时长;
第一确定模块1320,用于基于当前已仿真时长以及各目标仿真节点的调用步长时间,确定所述待调度仿真节点;其中,当前已仿真时长为所述待调度仿真节点的调用步长时间的整数倍;
第一调度模块1330,用于调用所述待调度仿真节点。
请参阅图14,其示出了另一种仿真节点调度模块,所述配置信息还包括各目标仿真节点之间的拓扑依赖关系;相应地,所述仿真节点调度模块1150包括:
第二获取模块1410,用于在执行每一个单步执行操作指令时,获取当前已仿真时长;
第二确定模块1420,用于基于当前已仿真时长以及各目标仿真节点的调用步长时间,确定所述待调度仿真节点;其中,当前已仿真时长为所述待调度仿真节点的调用步长时间的整数倍;
有向图确定模块1430,用于当从各目标仿真节点中确定的所述待调度仿真节点的数量大于一个时,基于各目标仿真节点之间的拓扑依赖关系,确定各待调度仿真节点的调用顺序有向图;
第二调用模块1440,用于基于所述调用顺序有向图,调用各待调度仿真节点。
请参阅图15,所述第二调用模块1440包括:
当前待调度仿真节点确定模块1510,用于从所述调用顺序有向图中确定当前待调度仿真节点;
第三调用模块1520,用于调用所述当前待调度仿真节点,得到当前仿真输出结果;
下一待调度仿真节点确定模块1530,用于基于所述调用顺序有向图确定当前待调度仿真节点的下一待调度仿真节点;
第四调用模块1540,用于调用所述下一待调度仿真节点,并将所述当前仿真输出结果作为所述下一待调度仿真节点的输入;
重复执行模块1550,用于确定所述下一待调度仿真节点为当前待调度节点,重复待调度仿真节点调度以及当前待调度节点确定的操作,直至遍历完所述调用顺序有向图中的各待调度仿真节点。
请参阅图16,所述装置还包括存储模块1600,所述存储模块1600包括:
仿真结果获取模块1610,用于获取调用各待调度仿真节点之后的仿真输出结果,其中,每项仿真输出结果包括主题以及与所述主题对应的数据信息;
键值存储模块1620,用于以键值的形式存储所述主题以及与所述主题对应的数据信息。
请参阅图17,所述装置还包括状态判断模块1700,所述状态判断模块1700包括:
判断模块1710,用于判断所述仿真指令与当前仿真状态是否存在冲突;
第一判定模块1720,用于当判断结果为否时,基于所述仿真指令以及调用所述待调度仿真节点之后的仿真输出结果,确定当前仿真状态的下一仿真状态,并将所述下一仿真状态作为当前仿真状态;当接收到所述待调度仿真节点返回的异常信息时,基于所述异常信息以及当前仿真状态信息,确定当前仿真状态的下一仿真状态,并将所述下一仿真状态作为当前仿真状态;向前端返回所述当前仿真状态。
第二判定模块1730,用于当判断结果为是时,向前端返回相应的错误信息。
上述实施例中提供的装置可执行本申请任意实施例所提供方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的方法。
本申请提供了一种仿真节点调度方法,可根据不同仿真节点的不同配置(执行频率、输入输出、依赖顺序等)来对各个仿真节点进行统一的调度管理,并根据用户配置向外输出相关数据和诊断信息;本申请基于各节点的配置信息,按照逐步调用相应的仿真节点,在确定算法、确定配置以及确定场景下,可实现仿真结果的可精确复现性,使仿真验证更加有意义。
本实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如本实施例上述任一方法。
本实施例还提供了一种设备,其结构图请参见图18,该设备1800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(central processingunits,CPU)1822(例如,一个或一个以上处理器)和存储器1832,一个或一个以上存储应用程序1842或数据1844的存储介质1830(例如一个或一个以上海量存储设备)。其中,存储器1832和存储介质1830可以是短暂存储或持久存储。存储在存储介质1830的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对设备中的一系列指令操作。更进一步地,中央处理器1822可以设置为与存储介质1830通信,在设备1800上执行存储介质1830中的一系列指令操作。设备1800还可以包括一个或一个以上电源1826,一个或一个以上有线或无线网络接口1850,一个或一个以上输入输出接口1858,和/或,一个或一个以上操作***1841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。本实施例上述的任一方法均可基于图18所示的设备进行实施。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤和顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的***或中断产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。应当理解到,本实施例中所揭露的方法、装置等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元模块的间接耦合或通信连接。
基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种仿真节点调度方法,其特征在于,包括:
接收仿真指令;
对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令;
获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间;
遍历所述操作指令集合中的各单步执行操作指令;
在执行每一个单步执行操作指令时,获取当前已仿真时长;
基于当前已仿真时长以及各目标仿真节点的调用步长时间,确定待调度仿真节点;其中,当前已仿真时长为所述待调度仿真节点的调用步长时间的整数倍;
调用所述待调度仿真节点。
2.根据权利要求1所述的一种仿真节点调度方法,其特征在于,所述对所述仿真指令进行解析,得到操作指令集合包括:
对所述仿真指令进行拆分,得到至少一个单步指令;
为每个单步指令添加相应的执行参数,得到相应的单步执行操作指令;
基于所述单步执行操作指令构建所述操作指令集合。
3.根据权利要求1所述的一种仿真节点调度方法,其特征在于,所述配置信息还包括各目标仿真节点之间的拓扑依赖关系;
相应地,所述调用所述待调度仿真节点包括:
当从各目标仿真节点中确定的所述待调度仿真节点的数量大于一个时,基于各目标仿真节点之间的拓扑依赖关系,确定各待调度仿真节点的调用顺序有向图;
基于所述调用顺序有向图,调用各待调度仿真节点。
4.根据权利要求3所述的一种仿真节点调度方法,其特征在于,所述基于所述调用顺序有向图,调用各待调度仿真节点包括:
从所述调用顺序有向图中确定当前待调度仿真节点;
调用所述当前待调度仿真节点,得到当前仿真输出结果;
基于所述调用顺序有向图确定当前待调度仿真节点的下一待调度仿真节点;
调用所述下一待调度仿真节点,并将所述当前仿真输出结果作为所述下一待调度仿真节点的输入;
确定所述下一待调度仿真节点为当前待调度节点,重复待调度仿真节点调度以及当前待调度节点确定的操作,直至遍历完所述调用顺序有向图中的各待调度仿真节点。
5.根据权利要求1所述的一种仿真节点调度方法,其特征在于,所述方法还包括:
获取调用各待调度仿真节点之后的仿真输出结果,其中,每项仿真输出结果包括主题以及与所述主题对应的数据信息;
以键值的形式存储所述主题以及与所述主题对应的数据信息。
6.根据权利要求1所述的一种仿真节点调度方法,其特征在于,所述方法还包括:
判断所述仿真指令与当前仿真状态是否存在冲突;
当判断结果为否时,基于所述仿真指令以及调用所述待调度仿真节点之后的仿真输出结果,确定当前仿真状态的下一仿真状态,并将所述下一仿真状态作为当前仿真状态;
当判断结果为是时,向前端返回相应的错误信息。
7.根据权利要求6所述的一种仿真节点调度方法,其特征在于,所述方法还包括:
当接收到所述待调度仿真节点返回的异常信息时,基于所述异常信息以及当前仿真状态信息,确定当前仿真状态的下一仿真状态,并将所述下一仿真状态作为当前仿真状态;
向前端返回所述当前仿真状态。
8.一种仿真节点调度装置,其特征在于,包括:
仿真指令接收模块,用于接收仿真指令;
仿真指令解析模块,用于对所述仿真指令进行解析,得到操作指令集合,所述操作指令集合中包括至少一个单步执行操作指令;
配置信息获取模块,用于获取各目标仿真节点的配置信息,其中,每个目标仿真节点的配置信息包括所述目标仿真节点的调用步长时间;
操作指令遍历模块,用于遍历所述操作指令集合中的各单步执行操作指令;
仿真节点调度模块,用于在执行每一个单步执行操作指令时,获取当前已仿真时长;基于当前已仿真时长以及各目标仿真节点的调用步长时间,确定待调度仿真节点;其中,当前已仿真时长为所述待调度仿真节点的调用步长时间的整数倍;调用所述待调度仿真节点。
9.一种电子设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一项所述的仿真节点调度方法。
CN201910857440.1A 2019-09-09 2019-09-09 一种仿真节点调度方法、装置及设备 Active CN110781576B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910857440.1A CN110781576B (zh) 2019-09-09 2019-09-09 一种仿真节点调度方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910857440.1A CN110781576B (zh) 2019-09-09 2019-09-09 一种仿真节点调度方法、装置及设备

Publications (2)

Publication Number Publication Date
CN110781576A CN110781576A (zh) 2020-02-11
CN110781576B true CN110781576B (zh) 2022-08-23

Family

ID=69384178

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910857440.1A Active CN110781576B (zh) 2019-09-09 2019-09-09 一种仿真节点调度方法、装置及设备

Country Status (1)

Country Link
CN (1) CN110781576B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111736951A (zh) * 2020-06-15 2020-10-02 深圳裹动智驾科技有限公司 自动驾驶的仿真方法、计算机设备、及存储介质
WO2022120717A1 (zh) * 2020-12-10 2022-06-16 华为技术有限公司 仿真任务调度方法、执行方法、仿真实现方法及装置
CN112905429B (zh) * 2021-02-20 2024-07-05 北京物芯科技有限责任公司 一种***仿真的监控方法及装置
CN117103281B (zh) * 2023-10-20 2024-01-26 深圳墨影科技有限公司 一种机器人全融合仿真***及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6986026B2 (en) * 2000-12-15 2006-01-10 Intel Corporation Single-step processing and selecting debugging modes
JP2007157106A (ja) * 2005-12-01 2007-06-21 Korea Electronics Telecommun コンポーネント基盤の衛星モデリングによる衛星シミュレーションシステム
CN101493793B (zh) * 2009-02-19 2011-01-19 深圳市紫金支点技术股份有限公司 一种atm测试方法及装置
CN101814217B (zh) * 2009-12-01 2012-03-28 中国建设银行股份有限公司 一种测试自助设备的方法、装置以及***
CN102075388A (zh) * 2011-01-13 2011-05-25 华中科技大学 一种基于行为的p2p流媒体节点识别方法
CN102981415B (zh) * 2012-11-29 2015-03-25 西安基石睿盛信息技术有限公司 一种飞行仿真框架***
US9823849B2 (en) * 2015-06-26 2017-11-21 Intel Corporation Method and apparatus for dynamically allocating storage resources to compute nodes
CN109753356A (zh) * 2018-12-25 2019-05-14 北京友信科技有限公司 一种容器资源调度方法、装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN110781576A (zh) 2020-02-11

Similar Documents

Publication Publication Date Title
CN110781576B (zh) 一种仿真节点调度方法、装置及设备
CN113805867B (zh) 一种基于可视化静态脚本引擎的物联网平台
US11765051B2 (en) Instantiation of cloud-hosted functions based on call to function graph
US8862933B2 (en) Apparatus, systems and methods for deployment and management of distributed computing systems and applications
CN108156181B (zh) 一种基于协程异步io的漏洞探测方法及其漏洞扫描***
CN111625354B (zh) 一种边缘计算设备算力的编排方法及其相关设备
CN110083455B (zh) 图计算处理方法、装置、介质及电子设备
JP6692000B2 (ja) リスク識別方法、リスク識別装置、クラウドリスク識別装置及びシステム
US11699073B2 (en) Network off-line model processing method, artificial intelligence processing device and related products
CN112965794B (zh) 算法调用方法、电子设备及存储介质
CN101262498A (zh) 一种分布式调用消息的方法和装置
CN109375956A (zh) 一种重启操作***的方法、逻辑设备以及控制设备
Kirchhof et al. Simulation as a service for cooperative vehicles
CN116204321A (zh) 模型获取、模型部署方法、装置、设备和介质
CN115599651A (zh) 一种应用***测试方法、装置、电子设备和存储介质
EP3467655A1 (en) System and method for mpi implementation in an embedded operating system
Liu et al. A Co-Simulation-and-Test Method for CAN Bus System.
CN112764837B (zh) 数据上报方法、装置、存储介质及终端
Bambagini et al. A code generation framework for distributed real-time embedded systems
CN113973060A (zh) 一种物联网模拟方法、装置、***及存储介质
CN113452541B (zh) 网络带宽调整方法和相关产品
Mania et al. Developing performance models from nonintrusive monitoring traces
Pulcinelli et al. Conceptual and comparative analysis of application metrics in microservices
CN115987825A (zh) 数据采集方法及装置、计算设备和存储介质
CN116431442A (zh) 应用***监控方法、装置和设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant