CN113495494A - 机器人的仿真运行方法、装置和系统 - Google Patents
机器人的仿真运行方法、装置和系统 Download PDFInfo
- Publication number
- CN113495494A CN113495494A CN202010249433.6A CN202010249433A CN113495494A CN 113495494 A CN113495494 A CN 113495494A CN 202010249433 A CN202010249433 A CN 202010249433A CN 113495494 A CN113495494 A CN 113495494A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- information
- simulation
- robot
- 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
- 238000004088 simulation Methods 0.000 title claims abstract description 133
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000001419 dependent effect Effects 0.000 claims description 53
- 230000003993 interaction Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 30
- 238000004422 calculation algorithm Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B17/00—Systems involving the use of models or simulators of said systems
- G05B17/02—Systems involving the use of models or simulators of said systems electric
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Manipulator (AREA)
Abstract
本公开涉及一种机器人的仿真运行方法、装置和系统,涉及计算机技术领域。该方法包括:获取机器人在实际运行过程中各实际数据的相关信息,相关信息包括生成各实际数据的模块信息、内存队列信息;根据各相关信息,确定机器人的各模块的依赖关系;以各模块为节点,依赖关系为有向连接,确定模块拓扑信息;根据模块拓扑信息,按照有向连接的方向依次运行各模块,对机器人进行仿真运行。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种机器人的仿真运行方法、机器人的仿真运行装置、机器人的仿真运行系统和非损失性的计算机可读存储介质。
背景技术
根据机器人在实际运行过程中生成的数据,进行仿真运行可以评估机器人及其系统的运行性能。例如,机器人为具有自动驾驶功能的载具。在这种情况下,可以对载具进行实车录包,以获取实际数据;根据实际数据进行仿真播包,以仿真运行该载具。
在相关技术中,实车录包时采用各模块并行运行的方式,写入实机数据;仿真播包时并行读取实机数据,进行仿真运行。
发明内容
本公开的发明人发现上述相关技术中存在如下问题:仿真运行中读取的数据无法对齐,造成仿真运行和实际运行的过程不一致,导致仿真结果准确性差。
鉴于此,本公开提出了一种机器人的仿真运行技术方案,能够提高仿真结果准确性。
根据本公开的一些实施例,提供了一种机器人的仿真运行方法,包括:获取所述机器人在实际运行过程中各实际数据的相关信息,所述相关信息包括生成各实际数据的模块信息、内存队列信息;根据各相关信息,确定所述机器人的各模块的依赖关系;以所述各模块为节点,所述依赖关系为有向连接,确定模块拓扑信息;根据所述模块拓扑信息,按照所述有向连接的方向依次运行所述各模块,对所述机器人进行仿真运行。
在一些实施例中,所述根据所述模块拓扑信息,按照所述有向连接的方向依次运行所述各模块,对所述机器人进行仿真运行包括:将所述模块拓扑信息中起始节点的相应模块确定为当前模块;生成步骤,根据从所述当前模块的读取内存队列中获取的仿真输入数据,生成所述当前模块的仿真输出数据;存储步骤,将所述仿真输出数据存入所述当前模型的写入内存队列中;确定步骤,根据所述有向连接的方向,确定新的当前模块;重复所述生成步骤、所述存储步骤和所述确定步骤,直到生成所述模块拓扑信息中最终节点的仿真输出数据。
在一些实施例中,所述将所述仿真输出数据存入所述当前模型的写入内存队列中包括:在所述写入内存队列中存在备用输入数据的情况下,利用所述仿真输出数据覆盖该备用输入数据,作为依赖于所述当前模块的后续模块的仿真输入数据,所述备用输入数据为根据所述各实际数据的相关信息,存入相应内存队列的所述各实际数据。
在一些实施例中,所述备用输入数据通过如下步骤确定:根据所述各模块的模块信息、相应的内存队列信息,确定相应实际数据的帧号,所述各实际数据的帧号与相应的所述相关信息绑定;根据各实机输出数据的帧号和相应的内存队列信息,确定所述各模块相应的实机输出数据;将各实机输出数据存入相应模块的写入内存队列,作为所述各模块的备用输入数据。
在一些实施例中,所述根据各相关信息,确定所述机器人的各模块的依赖关系包括:根据所述各模块生成相应实际数据的读取内存队列和写入内存队列,确定所述各模块之间的数据交互关联,作为所述依赖关系。
在一些实施例中,所述根据各相关信息,确定所述机器人的各模块的依赖关系包括:根据所述相关信息,确定各实际数据的依赖实际数据;在所述各实际数据中增加依赖信息字段,所述依赖信息字段用于存储相应的依赖实际数据的相关信息;根据各依赖信息字段,确定所述各模块的依赖关系。
在一些实施例中,所述依赖信息字段中包括相应实际数据的一级依赖实际数据的相关信息和二级依赖实际数据的相关信息,所述相应实际数据的生成依赖于所述一级依赖实际数据,所述一级依赖实际数据的生成依赖于所述二级依赖实际数据。
在一些实施例中,所述的仿真运行方法还包括:根据仿真运行结果对所述机器人性能进行评估。
根据本公开的另一些实施例,提供一种机器人的仿真运行装置,包括:获取单元,用于获取所述机器人在实际运行过程中各实际数据的相关信息,所述相关信息包括生成各实际数据的模块信息、内存队列信息;依赖确定单元,用于根据各相关信息,确定所述机器人的各模块的依赖关系;拓扑确定单元,用于以所述各模块为节点,所述依赖关系为有向连接,确定模块拓扑信息;仿真单元,用于根据所述模块拓扑信息,按照所述有向连接的方向依次运行所述各模块,对所述机器人进行仿真运行。
在一些实施例中,所述仿真单元被配置为执行如下步骤:将所述模块拓扑信息中起始节点的相应模块确定为当前模块;生成步骤,根据从所述当前模块的读取内存队列中获取的仿真输入数据,生成所述当前模块的仿真输出数据;存储步骤,将所述仿真输出数据存入所述当前模型的写入内存队列中;确定步骤,根据所述有向连接的方向,确定新的当前模块;重复所述生成步骤、所述存储步骤和所述确定步骤,直到生成所述模块拓扑信息中最终节点的仿真输出数据。
在一些实施例中,所述仿真单元在所述写入内存队列中存在备用输入数据的情况下,利用所述仿真输出数据覆盖该备用输入数据,作为依赖于所述当前模块的后续模块的仿真输入数据,所述备用输入数据为根据所述各实际数据的相关信息,存入相应内存队列的所述各实际数据。
在一些实施例中,所述仿真单元根据所述各模块的模块信息、相应的内存队列信息,确定相应实际数据的帧号,所述各实际数据的帧号与相应的所述相关信息绑定;根据各实机输出数据的帧号和相应的内存队列信息,确定所述各模块相应的实机输出数据;将各实机输出数据存入相应模块的写入内存队列,作为所述各模块的备用输入数据。
在一些实施例中,所述依赖确定单元根据所述各模块生成相应实际数据的读取内存队列和写入内存队列,确定所述各模块之间的数据交互关联,作为所述依赖关系。
在一些实施例中,所述依赖确定单元根据所述相关信息,确定各实际数据的依赖实际数据;在所述各实际数据中增加依赖信息字段,所述依赖信息字段用于存储相应的依赖实际数据的相关信息;根据各依赖信息字段,确定所述各模块的依赖关系。
在一些实施例中,所述依赖信息字段中包括相应实际数据的一级依赖实际数据的相关信息和二级依赖实际数据的相关信息,所述相应实际数据的生成依赖于所述一级依赖实际数据,所述一级依赖实际数据的生成依赖于所述二级依赖实际数据。
在一些实施例中,所述仿真运行装置还包括评估单元,用于根据仿真运行结果对所述机器人性能进行评估。
根据本公开的又一些实施例,提供一种机器人的仿真运行装置,包括:存储器;和耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器装置中的指令,执行上述任一个实施例中的机器人的仿真运行方法。
根据本公开的再一些实施例,提供一种机器人的仿真运行系统,包括:至少一个能够自动运行的机器人;仿真运行装置,用于执行上述任一个实施例中的机器人的仿真运行方法。
根据本公开的再一些实施例,提供一种非损失性的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一个实施例中的机器人的仿真运行方法。
在上述实施例中,根据实际运行中各实际数据的依赖关系,获取机器人运行涉及的各模块的拓扑结构,从而确定仿真运行中各模块的调用顺序。这样,可以将各模块需要读取的数据对齐,使得仿真运行和实际运行的过程保持一致,从而提高仿真结果的准确性。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出本公开的机器人的仿真运行方法的一些实施例的流程图;
图2示出图1中步骤120的一些实施例的流程图;
图3a示出本公开的模块之间依赖关系的一些实施例的示意图;
图3b示出本公开的模块之间依赖关系的另一些实施例的示意图;
图3c示出本公开的模块之间依赖关系的又一些实施例的示意图;
图4示出图1中步骤140的一些实施例的流程图;
图5示出本公开的机器人的仿真运行装置的一些实施例的框图;
图6示出本公开的机器人的仿真运行装置的另一些实施例的框图;
图7示出本公开的机器人的仿真运行装置的又一些实施例的框图;
图8示出本公开的机器人的仿真运行系统的一些实施例的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
如前所述,由于相关技术在录包时,算法包内各模块是并行运行的,导致录出的数据包中数据不是一一对齐的;而且,在播包时,并行读取数据包内的数据,同时写入不同的内存队列,未检查数据是否对齐。因此,会出现各模块从内存队列读取的数据,与实际运行时读取到的数据不一致的情况,从而导致无法还原出录包时的真实情况。
而且,在录包过程中,各模块不仅要读取数据,还会生成数据写入到内存队列。这样,会造成某些内存队列中的写入和读取数据互相污染的情况,从而降低仿真结果的准确性。
另外,在录包过程中,数据包内的数据是根据实车运行算法包拓扑结构录制的。但是,在播包仿真过程中,算法包一般都是更新过的,更新的内容有可能涉及拓扑结构修改。这样,如果使用老拓扑结构的数据包进行新算法包的模拟仿真运行,会造成失败或者仿真结构不准确。
针对上述技术问题,本公开配置新的数据包结构,将实际运行时的数据依赖关系记录到数据包中;在仿真运行时,根据数据依赖关系构建模块拓扑信息,用于仿真回放。这样,可以解决算法包升级后与仿真算法包拓扑不一致问题,以及数据对齐的问题。
而且,本公开实现一种新的仿真控制引擎,在仿真运行时可以根据数据包内记录的拓扑结构,生成模块的调用顺序;根据数据包内各模块某一帧的数据依赖关系,生成调用该模块时需要传入的数据;依次对所有模块进行模拟仿真操作。也就是说,所有模块收到的数据都是实际运行时收到的数据,产出的数据都是下游模块的输入数据。这样,可以解决仿真无法复现真实场景,以及仿真数据与真实数据互相污染的问题。
例如,可以通过如下的实施例来实现本公开的技术方案。
图1示出本公开的机器人的仿真运行方法的一些实施例的流程图。
如图1所示,该方法包括:步骤110,获取各实际数据的相关信息;步骤120,确定各模块的依赖关系;步骤130,确定模块拓扑信息;和步骤140,进行仿真运行。
在步骤110中,获取机器人在实际运行过程中各实际数据的相关信息。相关信息可以包括生成各实际数据的模块信息、内存队列信息。例如,内存队列信息可以包括生成实际数据的模块的读取内存队列和写入内存队列。
在一些实施例中,对于自动驾驶领域的机器人,机器人运行的算法架构包含多个模块。多个模块可以依赖内存队列进行消息传递,实现并行运算。
例如,第一模块可以从第一读取内存队列中获取第一依赖数据(预先存储或现场采集到的数据);第一模块根据第一依赖数据生成第一输出数据;第一模块将第一输出数据存储在第一写入内存队列中;第二模块以第一写入内存队列为第二读取内存队列,从中取出第一输出数据作为第二依赖数据;第二模块生成第二输出数据;第二模块将第二输出数据存储在第二写入内存队列中;重复上述过程,直到所有模块运行完毕。
在一些实施例中,在自动驾驶的实际运行过程中,可以将所有采集到的数据、各模块的输出数据,写入到硬盘文件。例如,可以根据数据功能不同分开存储各数据(如依据内存队列来分类存储)。
在步骤120中,根据各相关信息,确定机器人的各模块的依赖关系。例如,根据各模块生成相应实际数据的读取内存队列和写入内存队列,确定各模块之间的数据交互关联,作为依赖关系。
在一些实施例中,可以通过执行图2中的步骤确定依赖关系。
图2示出图1中步骤120的一些实施例的流程图。
如图2所示,步骤120包括:步骤1210,确定依赖实际数据;步骤1220,增加依赖信息字段;和步骤1230,确定依赖关系。
在步骤1210中,根据相关信息,确定各实际数据的依赖实际数据。
在步骤1220中,在各实际数据中增加依赖信息字段,依赖信息字段用于存储相应的依赖实际数据的相关信息。
在一些实施例中,可以为实际数据配置新的数据包结构,在原有的数据结构中增加依赖信息字段,用于记录获取实际数据的算法包拓扑信息。这样,可以将算法包中的模块的拓扑信息存入数据包中。
例如,可以采用PROTOBUF协议配置数据结构,增加的依赖信息字段如下:
message CompontConfig{
optional string module_name=1;//生成数据的模块名称
repeated string reader_channel=2;//生成数据需要读取的内存队列
repeated string writer_channel=3;//生成数据后需要写入的内存队列
}
在一些实施例中,依赖信息字段中包括相应实际数据的一级依赖实际数据的相关信息和二级依赖实际数据的相关信息。相应实际数据的生成依赖于一级依赖实际数据,一级依赖实际数据的生成依赖于二级依赖实际数据。
例如,可以在每帧数据块中增加头信息数据。头信息数据可以包括生成该数据块时,其所依赖数据的内存队列名称、数据块帧号、数据块生成的时间戳、数据块生成的运行时间等。
可以采用两级回溯的方案配置头信息数据。即每个数据块的头信息中包括其所有依赖数据的头信息,这样,可以通过数据的头信息,获取该数据的生成轨迹,以便进行信息回溯。
例如,可以将下面的依赖信息作为头信息,存入上述“生成数据需要读取的内存队列”中。这样,可以在仿真过程中,模块要生成数据时,从读取内存队列中获取依赖信息。依赖信息可以配置为:
message End2EndSource{//二级依赖实际数据的相关信息
string module_name=1;//生成二级依赖实际数据的模块名称
string channel_name=2;//二级依赖实际数据写入的内存队列
uint32 sequence_num=3;//二级依赖实际数据帧号
};
message End2EndHeader{//一级依赖实际数据的头信息
string module_name=1;//生成一级依赖实际数据的模块名称
string channel_name=2;//一级依赖实际数据写入的内存队列
uint32 sequence_num=3;//一级依赖实际数据帧号
repeated End2EndSource source_module=4;//二级依赖实际数据的相关信息
double_timestamp=5;//生成一级依赖实际数据的启动时间
uint32 process_time=6;//生成一级依赖实际数据的时长
};
message Header{//当前实际数据的头信息
string module_name=1;//生成当前实际数据的模块名称
string channel_name=2;//当前实际数据写入的内存队列
uint32 sequence_num=3;//当前实际数据帧号
double_timestamp=4;//生成当前实际数据的启动时间
uint32 process_time=5;//生成当前实际数据的时长
repeated End2EndHeader e2e_header=6;//一级依赖实际数据的头信息
}。
在步骤1230中,根据各依赖信息字段,确定各模块的依赖关系。
在确定了依赖关系后,可以通过图1中的其他步骤实现仿真运行。
在步骤130中,以各模块为节点,依赖关系为有向连接,确定模块拓扑信息。
在一些实施例中,可以读取数据包内存储的算法构架中各模块读取的内存队列、写入的内存队列,以确定模块的拓扑信息。例如,可以将读取内存、写入内存队列、模块视为节点,生成拓扑结构图作为图谱信息。该拓扑结构图可以采用DAG(Directed AcyclicGraph,无回路有向图)的邻接表方式存储。例如,可以通过图3a中的实施例,确定模块拓扑信息。
图3a示出本公开的模块之间依赖关系的一些实施例的示意图。
如图3a所示,机器人运行的算法架构包含模块M1~M3;模块M1~M3依赖内存队列C1~C6。确定模块拓扑信息。
在一些实施例中,以模块M1~M3、内存队列C1~C6为节点,并根据各模块之间的读写关系确认各节点之间的有向连接。
例如,图3a表示的拓扑信息为:模块M1从队列C1和队列C2中获取依赖数据,生成输出数据m1,并将输出数据m1存储在队列C3中;模块M3无需读取依赖数据,可以直接生成输出数据m3,并将输出数据m3存储在队列C6中;模块M2从队列C3和队列C6中分别读取其他模块生成的数据m1和m3,从UI列C4中读取采集的数据m4,生成输出数据m2,并将数据m2存储在队列C5中。
这样,图3a中的模块拓扑信息可以表征模块之间的依赖关系。
在一些实施例中,可以遍历图3a中的拓扑结构图,将其中的内存队列节点全部去掉,即可生成以模块为节点,以读写关系为有向连接的拓扑结构图;也可以根据模块的依赖关系直接生成以模块为节点,以读写关系为有向连接的拓扑结构图。
例如,可以通过图3b中的实施例,确定模块拓扑信息。
图3b示出本公开的模块之间依赖关系的另一些实施例的示意图。
如图3b所示,模块M1和模块M3的输出数据为模块M2生成输出数据的依赖数据。根据此依赖关系,可以确定图中模块M1~M3的拓扑结构图。
在一些实施例中,可以根据各模块的读取内存队列、写入内存队列,生成拓扑结构图中各模块对应节点的属性信息。各节点的属性信息包括对应模块涉及的所有内存队列信息。属性信息中还可以包括对应模块写入内存队列信息。
例如,可以通过图3c中的实施例,确定模块拓扑信息中的属性信息。
图3c示出本公开的模块之间依赖关系的又一些实施例的示意图。
如图3c所示,对于图3b中的模块M1节点,可以设置属性信息队列列表和写入列表。根据模块M1生成数据涉及的内存队列,可以确定队列列表包括队列C1~C3,写入列表包括队列C3。
确定了模块拓扑信息之后,可以通过图1中的其余步骤继续进行仿真。
在步骤140中,根据模块拓扑信息,按照有向连接的方向依次运行各模块,对机器人进行仿真运行。例如,可以根据仿真运行结果对机器人性能进行评估。
在一些实施例中,可以根据数据包内存储的回溯数据(依赖信息字段)进行单帧仿真回放,以实现机器人的仿真运行。
在一些实施例中,可以选定拓扑信息中的一个模块,遍历数据包(如通过实车录包获取)内该模块生成的所有数据;对每个单帧数据进行数据回溯和仿真回放。
例如,可以顺序读取拓扑信息中的各节点,遍历各节点的所有帧数据;根据存储的头信息确定所有依赖数据及其相应的模块信息和内存队列信息,从而回溯该节点的单帧数据的所有前向关联数据(各级依赖数据);读出各模块的前向关联数据后,可以为各模块的队列数据信息(Channel Data Map)和回放数据信息(Play Data Map)赋值。
例如,队列数据信息的数据结构可以配置为:
ChannelDataMap[channel_name][sequence_num]=record_data;
record_data为前向关联数据的数据值,sequence_num为前向关联数据的帧号,channel_name为生成前向关联数据涉及的相关内存队列。
例如,回放数据信息的数据结构可以配置为:
//数据块中依赖的模块名+内存队列名对应的数据帧号
PlayDataMap[module_name][channel_name]=sequence_num;
sequence_num为前向关联数据的帧号,channel_name为生成前向关联数据涉及的相关内存队列,module_name为前向关联数据的生成模块。
在一些实施例中,基于队列数据信息和回放数据信息,可以通过执行图4中的步骤进行仿真运行。
图4示出图1中步骤140的一些实施例的流程图。
如图4所示,步骤140包括:步骤1410,确定当前模块;步骤1420,生成仿真输出数据;步骤1430,将仿真输出数据写入内存队列;和步骤1440,确定新的当前模块。
在步骤1410中,将模块拓扑信息中起始节点的相应模块确定为当前模块。
在步骤1420中,根据从当前模块的读取内存队列中获取的仿真输入数据,生成当前模块的仿真输出数据。
在步骤1430中,将仿真输出数据存入当前模型的写入内存队列中。
在一些实施例中,在写入内存队列中存在备用输入数据的情况下,利用仿真输出数据覆盖该备用输入数据,作为依赖于当前模块的后续模块的仿真输入数据。备用输入数据为根据各实际数据的相关信息,存入相应内存队列的各实际数据。
例如,根据各模块的模块信息、相应的内存队列信息,确定相应实际数据的帧号。各实际数据的帧号与相应的相关信息绑定。根据各实机输出数据的帧号和相应的内存队列信息,确定各模块相应的实机输出数据。将各实机输出数据存入相应模块的写入内存队列,作为各模块的备用输入数据。
例如,可以遍历拓扑结构图,对每一个模块中都执行如下操作:根据module_name、channel_name,从PlayDataMap中找到对应的sequence_num;根据channel_name、sequence_num,从ChannelDataMap中找到对应的record_data;将record_data作为当前模块的输入参数(备用输入数据)存储在对应的写入内存队列中。
在步骤1440中,根据有向连接的方向,确定新的当前模块。
重复步骤1420~步骤1440,直到生成模块拓扑信息中最终节点的仿真输出数据。
在一些实施例中,可以根据拓扑结构图中的有向连接,按顺序运行各模块,将生成的数据记录入新的数据包中。
例如,各模块运行完成后,获取各模块的输出结果;根据channel_name和sequence_num,利用仿真回放过程中生成的数据结果覆盖ChannelDataMap中的相应信息;下游模块需要使用上游模块的生成数据时,可以将仿真过程中生成的数据作为依赖数据使用(备用输入数据废弃);将该数据以实际运行的录包方式,记录入新的数据包中;拓扑结构中所有模块运行完毕后,单帧数据的回溯仿真结束;开始下一帧数据的回溯仿真,直到完成所有帧数据的回溯仿真。
例如,对于图3a中的实施例,可以根据依赖信息字段,将实际运行过程中获取的实际数据存储在相应的内存队列C1~C6中作为模块M1~M3的备用输入数据。
按照图3a中有向连接,从队列C1和C2中取出备用输入数据,运行模块M1生成输出数据m1;将数据m1存入队列C3,覆盖队列C3中的备用输入数据;运行模块M3生成输出数据m3;然后将数据m3存入队列C6,覆盖队列C6中的备用输入数据;从队列C3和C6中取出数据m1和m3,从队列C4中取出备用输入数据,一起作为依赖数据,运行模块M2生成输出数据m2,存入队列C5。
这样,队列C1、C2、C4中的数据并非源于模块,通过设置备用输入数据,可以避免这类队列中无数据可以读取的情况,从而提高仿真的准确性。
在上述实施例中,对机器人运行(如自动驾驶)算法包进行仿真时,能够保证各模块收到的数据与实际运行时算法包收到的数据一致。这样,可以实现数据的对齐,使仿真可以高度还原实际情况。而且,还解决了仿真时仿真数据与实际数据互相污染的问题,使仿真结果的置信度提升。
在上述实施例中,解耦了算法包与仿真的关系。仿真中的拓扑结构以及数据块来源,依据实际运行中数据的依赖关系。这样,不论仿真时算法包如何升级,根据拓扑结构均可还原到实际运行的算法环境。
图5示出本公开的机器人的仿真运行装置的一些实施例的框图。
如图5所示,机器人的仿真运行装置5包括获取单元51、依赖确定单元52、拓扑确定单元53、仿真单元54。
获取单元51获取机器人在实际运行过程中各实际数据的相关信息。相关信息包括生成各实际数据的模块信息、内存队列信息。
依赖确定单元52根据各相关信息,确定机器人的各模块的依赖关系。
在一些实施例中,依赖确定单元52根据各模块生成相应实际数据的读取内存队列和写入内存队列,确定各模块之间的数据交互关联,作为依赖关系。
在一些实施例中,依赖确定单元52根据相关信息,确定各实际数据的依赖实际数据;在各实际数据中增加依赖信息字段。依赖信息字段用于存储相应的依赖实际数据的相关信息。依赖确定单元52根据各依赖信息字段,确定各模块的依赖关系。
例如,依赖信息字段中包括相应实际数据的一级依赖实际数据的相关信息和二级依赖实际数据的相关信息。相应实际数据的生成依赖于一级依赖实际数据,一级依赖实际数据的生成依赖于二级依赖实际数据。
拓扑确定单元53以各模块为节点,依赖关系为有向连接,确定模块拓扑信息。
仿真单元54根据模块拓扑信息,按照有向连接的方向依次运行各模块,对机器人进行仿真运行。
在一些实施例中,仿真单元54被配置为执行如下步骤:将模块拓扑信息中起始节点的相应模块确定为当前模块;生成步骤,根据从当前模块的读取内存队列中获取的仿真输入数据,生成当前模块的仿真输出数据;存储步骤,将仿真输出数据存入当前模型的写入内存队列中;确定步骤,根据有向连接的方向,确定新的当前模块;重复生成步骤、存储步骤和所述确定步骤,直到生成所述模块拓扑信息中最终节点的仿真输出数据。
在一些实施例中,仿真单元54在写入内存队列中存在备用输入数据的情况下,利用仿真输出数据覆盖该备用输入数据,作为依赖于当前模块的后续模块的仿真输入数据。备用输入数据为根据各实际数据的相关信息,存入相应内存队列的各实际数据。
在一些实施例中,仿真单元54根据各模块的模块信息、相应的内存队列信息,确定相应实际数据的帧号。各实际数据的帧号与相应的相关信息绑定。
仿真单元54根据各实机输出数据的帧号和相应的内存队列信息,确定各模块相应的实机输出数据;将各实机输出数据存入相应模块的写入内存队列,作为各模块的备用输入数据。
在一些实施例中,仿真运行装置5还包括评估单元55,用于根据仿真运行结果对机器人性能进行评估。
图6示出本公开的机器人的仿真运行装置的另一些实施例的框图。
如图6所示,该实施例的机器人的仿真运行装置6包括:存储器61以及耦接至该存储器61的处理器62,处理器62被配置为基于存储在存储器61中的指令,执行本公开中任意一个实施例中的机器人的仿真运行方法。
其中,存储器61例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)、数据库以及其他程序等。
图7示出本公开的机器人的仿真运行装置的又一些实施例的框图。
如图7所示,该实施例的机器人的仿真运行装置7包括:存储器710以及耦接至该存储器710的处理器720,处理器720被配置为基于存储在存储器710中的指令,执行前述任意一个实施例中的机器人的仿真运行方法。
存储器710例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
机器人的仿真运行装置7还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730、740、750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口。存储接口750为SD卡、U盘等外置存储设备提供连接接口。
图8示出本公开的机器人的仿真运行系统的一些实施例的框图。
如图8所示,机器人的仿真运行系统8包括:至少一个能够自动运行的机器人81;仿真运行装置82,用于执行上述任一个实施例中的机器人的仿真运行方法。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
至此,已经详细描述了根据本公开的机器人的仿真运行方法、机器人的仿真运行装置、机器人的仿真运行系统和非损失性的计算机可读存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本公开的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。
Claims (12)
1.一种机器人的仿真运行方法,包括:
获取所述机器人在实际运行过程中各实际数据的相关信息,所述相关信息包括生成各实际数据的模块信息、内存队列信息;
根据各相关信息,确定所述机器人的各模块的依赖关系;
以所述各模块为节点,所述依赖关系为有向连接,确定模块拓扑信息;
根据所述模块拓扑信息,按照所述有向连接的方向依次运行所述各模块,对所述机器人进行仿真运行。
2.根据权利要求1所述的仿真运行方法,其中,所述根据所述模块拓扑信息,按照所述有向连接的方向依次运行所述各模块,对所述机器人进行仿真运行包括:
将所述模块拓扑信息中起始节点的相应模块确定为当前模块;
生成步骤,根据从所述当前模块的读取内存队列中获取的仿真输入数据,生成所述当前模块的仿真输出数据;
存储步骤,将所述仿真输出数据存入所述当前模型的写入内存队列中;
确定步骤,根据所述有向连接的方向,确定新的当前模块;
重复所述生成步骤、所述存储步骤和所述确定步骤,直到生成所述模块拓扑信息中最终节点的仿真输出数据。
3.根据权利要求2所述的仿真运行方法,其中,所述将所述仿真输出数据存入所述当前模型的写入内存队列中包括:
在所述写入内存队列中存在备用输入数据的情况下,利用所述仿真输出数据覆盖该备用输入数据,作为依赖于所述当前模块的后续模块的仿真输入数据,所述备用输入数据为根据所述各实际数据的相关信息,存入相应内存队列的所述各实际数据。
4.根据权利要求3所述的仿真运行方法,其中,所述备用输入数据通过如下步骤确定:
根据所述各模块的模块信息、相应的内存队列信息,确定相应实际数据的帧号,所述各实际数据的帧号与相应的所述相关信息绑定;
根据各实机输出数据的帧号和相应的内存队列信息,确定所述各模块相应的实机输出数据;
将各实机输出数据存入相应模块的写入内存队列,作为所述各模块的备用输入数据。
5.根据权利要求1所述的仿真运行方法,其中,所述根据各相关信息,确定所述机器人的各模块的依赖关系包括:
根据所述各模块生成相应实际数据的读取内存队列和写入内存队列,确定所述各模块之间的数据交互关联,作为所述依赖关系。
6.根据权利要求1所述的仿真运行方法,其中,所述根据各相关信息,确定所述机器人的各模块的依赖关系包括:
根据所述相关信息,确定各实际数据的依赖实际数据;
在所述各实际数据中增加依赖信息字段,所述依赖信息字段用于存储相应的依赖实际数据的相关信息;
根据各依赖信息字段,确定所述各模块的依赖关系。
7.根据权利要求6所述的仿真运行方法,其中,
所述依赖信息字段中包括相应实际数据的一级依赖实际数据的相关信息和二级依赖实际数据的相关信息,
所述相应实际数据的生成依赖于所述一级依赖实际数据,所述一级依赖实际数据的生成依赖于所述二级依赖实际数据。
8.根据权利要求1-7任一项所述的仿真运行方法,还包括:
根据仿真运行结果对所述机器人性能进行评估。
9.一种机器人的仿真运行装置,包括:
获取单元,用于获取所述机器人在实际运行过程中各实际数据的相关信息,所述相关信息包括生成各实际数据的模块信息、内存队列信息;
依赖确定单元,用于根据各相关信息,确定所述机器人的各模块的依赖关系;
拓扑确定单元,用于以所述各模块为节点,所述依赖关系为有向连接,确定模块拓扑信息;
仿真单元,用于根据所述模块拓扑信息,按照所述有向连接的方向依次运行所述各模块,对所述机器人进行仿真运行。
10.一种机器人的仿真运行装置,包括:
存储器;和
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行权利要求1-8任一项所述的机器人的仿真运行方法。
11.一种机器人的仿真运行系统,包括:
至少一个能够自动运行的机器人;
仿真运行装置,用于执行权利要求1-8任一项所述的机器人的仿真运行方法。
12.一种非损失性的计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现权利要求1-8任一项所述的机器人的仿真运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010249433.6A CN113495494B (zh) | 2020-04-01 | 2020-04-01 | 机器人的仿真运行方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010249433.6A CN113495494B (zh) | 2020-04-01 | 2020-04-01 | 机器人的仿真运行方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113495494A true CN113495494A (zh) | 2021-10-12 |
CN113495494B CN113495494B (zh) | 2024-09-20 |
Family
ID=77994045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010249433.6A Active CN113495494B (zh) | 2020-04-01 | 2020-04-01 | 机器人的仿真运行方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113495494B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073403A1 (en) * | 2000-12-13 | 2002-06-13 | Microsoft Corporation | System and method for whole-system program analysis |
CN103399543A (zh) * | 2013-07-23 | 2013-11-20 | 清华大学 | 输片协作的多个机器人设备的调度方法及系统 |
US20130311161A1 (en) * | 2012-05-18 | 2013-11-21 | Youtech, Inc. | Method and apparatus for performing real-time, in-the-field switching-order simulation for an electric power system |
CN109144695A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 一种任务拓扑关系的处理方法、装置、设备和介质 |
CN109977497A (zh) * | 2019-03-10 | 2019-07-05 | 西安电子科技大学 | 基于cpu加速通用雷达信号处理流程的并行方法 |
CN110426966A (zh) * | 2019-07-31 | 2019-11-08 | 驭势(上海)汽车科技有限公司 | 一种虚拟车辆寻路的方法、装置、存储介质和电子设备 |
-
2020
- 2020-04-01 CN CN202010249433.6A patent/CN113495494B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020073403A1 (en) * | 2000-12-13 | 2002-06-13 | Microsoft Corporation | System and method for whole-system program analysis |
US20130311161A1 (en) * | 2012-05-18 | 2013-11-21 | Youtech, Inc. | Method and apparatus for performing real-time, in-the-field switching-order simulation for an electric power system |
CN103399543A (zh) * | 2013-07-23 | 2013-11-20 | 清华大学 | 输片协作的多个机器人设备的调度方法及系统 |
CN109144695A (zh) * | 2018-08-30 | 2019-01-04 | 百度在线网络技术(北京)有限公司 | 一种任务拓扑关系的处理方法、装置、设备和介质 |
CN109977497A (zh) * | 2019-03-10 | 2019-07-05 | 西安电子科技大学 | 基于cpu加速通用雷达信号处理流程的并行方法 |
CN110426966A (zh) * | 2019-07-31 | 2019-11-08 | 驭势(上海)汽车科技有限公司 | 一种虚拟车辆寻路的方法、装置、存储介质和电子设备 |
Non-Patent Citations (1)
Title |
---|
樊红日;刘玉生;钱波;杨雷;杨帼华;: "基于有限状态机的产品设计依赖动态建模及更新方法", 计算机辅助设计与图形学学报, vol. 31, no. 05, 15 May 2019 (2019-05-15), pages 831 - 841 * |
Also Published As
Publication number | Publication date |
---|---|
CN113495494B (zh) | 2024-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086199B (zh) | 一种自动化生成测试脚本的方法、终端和可存储介质 | |
US20110106776A1 (en) | Incremental implementation of undo/redo support in legacy applications | |
JP5607741B2 (ja) | ランタイム挙動に基づくアプリケーションの自動修正 | |
CN101308471B (zh) | 一种恢复数据的方法及装置 | |
CN113641591B (zh) | 测试用例生成方法及装置、测试方法及装置 | |
CN110659256A (zh) | 多机房同步方法、计算设备及计算机存储介质 | |
JPH10187789A (ja) | ハードウェア/ソフトウェア協調シミュレーション装置、ハードウェア/ソフトウェア協調シミュレーション方法及びハードウェア/ソフトウェア協調シミュレーションプログラムを記録した機械読み取り可能な記録媒体 | |
WO2010044150A1 (ja) | プログラム変更管理装置、プログラム変更管理プログラムおよびプログラム変更管理方法 | |
WO2020075282A1 (ja) | 変換方法、変換装置および変換プログラム | |
US11487641B1 (en) | Micro services recommendation system for identifying code areas at risk | |
US6957178B2 (en) | Incremental automata verification | |
CN113495494B (zh) | 机器人的仿真运行方法、装置和系统 | |
KR20150128711A (ko) | 컴퓨터 시스템 활동의 트레이스 타임라인을 분석하기 위한 방법 및 시스템 | |
JP2007249949A (ja) | フォーマットする試験結果の文脈を提供する変数値を格納する装置 | |
CN115599400A (zh) | 一种Docker镜像快速构建方法、系统及介质 | |
JP5337187B2 (ja) | 移行テスト支援システム、移行テスト支援プログラム、移行テスト支援方法 | |
JP5550578B2 (ja) | エントリ書換装置及びエントリ書換プログラム | |
JP3833626B2 (ja) | テストケース生成装置及びテストケース生成方法 | |
JP5508933B2 (ja) | ソフトウェア仕様の証明支援装置、及び証明支援方法 | |
US20100094801A1 (en) | Data processing apparatus and method for constructing interactive contents and recording media | |
CN115756998B (zh) | 缓存数据重取标记验证方法、装置及系统 | |
Matsuura et al. | Automatic Verification of Behavior of UML Requirements Specifications using Model Checking. | |
Bhasin et al. | Software Architecture Based Regression Testing | |
JPH10334125A (ja) | Cadソフト自動試験装置、cadソフト自動試験システム及び方法並びに記録媒体 | |
CN115729557A (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 |