掌桥专利:专业的专利平台
掌桥专利
首页

测试场景生成方法、装置、设备和存储介质

文献发布时间:2023-06-19 10:58:46


测试场景生成方法、装置、设备和存储介质

技术领域

本申请实施例涉及自动驾驶行业应用软件技术,尤其涉及一种测试场景生成方法、装置、设备和存储介质。

背景技术

随着自动驾驶的发展,对自动驾驶测试的需求呈指数级增长,因此基于模拟仿真的自动驾驶测试将取代数以万计的实际路面测试。

在进行自动驾驶仿真测试过程中,一般需要人工搭建测试场景,例如手动选择测试路段、车辆和车辆的执行动作,导致测试效率低下,容易出错。

发明内容

本申请实施例提供一种测试场景生成方法、装置、设备和存储介质,以根据随时间迁移而执行的各行为的信息,自动搭建测试场景,使得测试场景的生成过程自动化、便于编辑、可读性强。

第一方面,本申请实施例提供了一种测试场景生成方法,包括:

读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段;

指定测试场景中的参与者,并加载所述参与者对应的模型;其中,所述参与者包括本车和目标车;

依次确定所述本车和目标车随时间迁移而执行的各行为的信息,所述各行为的信息包括在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息;

在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

第二方面,本申请实施例还提供了一种测试场景生成装置,包括:

读取模块,用于读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段;

指定和加载模块,用于指定测试场景中的参与者,并加载所述参与者对应的模型;其中,所述参与者包括本车和目标车;

确定模块,用于依次确定所述本车和目标车随时间迁移而执行的各行为的信息,所述各行为的信息包括在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息;

控制模块,用于在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任一实施例所述的测试场景生成方法。

第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的测试场景生成方法。

本发明实施例首先读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段,自动加载静态场景;在此基础上,指定测试场景中的参与者,并加载对应的模型,实现参与者的加载;进一步的,依次确定参与者随时间迁移的在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息,从而随着时间的迁移依次确定测试场景中各行为,进而在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,自动生成测试场景,无需人工参与,提高测试场景的生成效率和准确率。本发明实施例通过依次确定静态场景、参与者以及随时间迁移的行为,通过更抽象,更易读,更容易编辑的方式来描述测试场景,使得测试场景的生成过程便于编辑、可读性强。

附图说明

图1是本发明实施例提供的一种测试场景生成方法的流程图;

图2是本发明实施例提供的另一种测试场景生成方法的流程图;

图3是本发明实施例提供的本车前方两台目标车的切出行为的示意图;

图4是本发明实施例提供的本车两侧车道有目标车切入的示意图;

图5是本申请实施例提供的一种测试场景生成装置的结构示意图;

图6是本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。

本申请实施例提供一种测试场景生成方法,其流程图如图1所示,可适用于在自动驾驶仿真测试应用场景中,搭建测试场景的情况。本实施例对自动驾驶行业应用软件进行改进,通过执行计算机程序优化了测试场景的搭建逻辑,以解决现有技术中存在的问题。

该方法可以由测试场景生成装置来执行,该装置可以由软件和/或硬件构成,并一般集成在电子设备中,该电子设备为仿真器。结合图1,本实施例提供的方法具体包括:

S110、读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段。

本发明实施例需要执行的计算机程序(以下简称源码)首先描述了路网文件以及其中的被测路段信息,被测路段信息包括被测路段的编号、长度和车道数量,从而在源码编译后再执行时,读取路网文件以及其中的被测路段。

其中,路网文件存储有多个路段,可指定其中一个路段的信息作为被测路段信息。以下示出了本步骤对应的源码以及注释。

set_map("D:\Line4six.xodr"")//地图设置函数表达式,指示了路网文件的存储位置。

path_length(path: p, min_path_length: 0meter, max_path_length:100meter)// 被测路段的长度设置函数表达式,指示了被测路段编号p和长度。

path_min_driving_lanes(p, 2)//车道数量设置函数表达式,指示了被测路段上的车道数量。

可选的,为了区分不同的测试场景,在地图设置函数表达式之前,还包括场景表达式,如下所示:

scenario cut_in//场景表达式,指示测试场景为切入场景。

S120、指定测试场景中的参与者,并加载所述参与者对应的模型;其中,所述参与者包括本车和目标车。以下示出了本步骤对应的源码和注释。

v1: car//第一目标车表达式

v2: car//第二目标车表达式

以上均为参与者(actor)表达式,代表了测试场景中的交通参与者,作为后面“action”表达式描述的动态和静态行为的载体。“actor”的类型可以由车辆,行人,杂项物体等。对于仿真器来说需要能够支持“actor”的数学模型和三维模型。具体的,这些参与者关联仿真器支持的数学模型和三维模型。

可选的,在S120之后还包括将默认的仿真器接口path提供给被测路段(编号p的路段),从而通过仿真器接口导入编号p的路段,便于后续确定各参与者的行为。源码示例如下:

p:path

S130、依次确定所述本车和目标车随时间迁移而执行的各行为的信息,所述各行为的信息包括在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息。

可选的,读取所述本车和目标车随时间迁移而执行的各行为函数表达式,并确定各行为函数表达式指示的信息;所述行为函数表达式包括行为表达式、车辆之间的相对位置函数表达式、行驶车道函数表达式和执行手段函数表达式;

行为表达式指示所述被测路段信息;所述车辆之间的相对位置函数表达式指示车辆之间的相对位置信息,以及初始/最终标记位信息;行驶车道函数表达式指示行驶车道信息,以及初始/最终标记位信息;所述执行手段函数表达式指示执行手段信息,包括速度函数表达式、加速度函数表达式和车道中心偏移量函数表达式,分别指示速度信息、加速度信息和车道中心偏移量信息。也就是说,执行手段信息包括速度信息、加速度信息和车道中心偏移量信息。

需要解释的是,初始标记位信息指示参与者处于初始状态,最终标记位信息指示参与者处于最终状态。

在一应用场景中,本车、第一目标车和第二目标车均匀速行驶在被测路段上。可选的,依次确定所述本车和目标车随时间迁移而执行的各行为的信息,包括:确定所述本车在被测路段上的行为、初始行驶车道信息和速度信息;确定第一目标车在被测路段上的行为、速度信息、与所述本车的初始相对位置信息和初始行驶车道信息;确定第二目标车在被测路段上的行为、速度信息、与所述本车的初始相对位置信息和初始行驶车道信息。下面给出了本步骤对应的源码和注释。

(1)dut.car.drive(path: p)// 本车的行为表达式,指示了本车在被测路段p上的行驶行为。

lane(lane:2, at: start)// 行驶车道函数表达式,指示了本车初始行驶在车道2上。

speed(speed: [15..18]kph)// 速度函数表达式,指示了本车的行驶速度为15kph~18 kph中的任一值。

(2)v1.drive(path: p) with://第一目标车的行为表达式,指示了第一目标车在被测路段p上的行驶行为。

speed(speed: [30..50]kph)// 速度函数表达式,指示了第一目标车的行驶速度为30kph~50 kph中的任一值。

position(distance: [10..30]meter, behind: dut.car, at: start)// 车辆之间的相对位置函数表达式,指示了第一目标车初始位于本车的后面,且与本车的距离为10m~30m中的任一值。

lane(side_of: dut.car, side: left, at: start)// 行驶车道函数表达式,指示了第一目标车初始行驶的车道为本车左侧车道。

(3)v2.drive(path: p) with:// 第二目标车的行为表达式,指示了第二目标车在被测路段p上的行驶行为。

speed(speed: [70..75]kph)// 速度函数表达式,指示了第二目标车的行驶速度为70kph~75 kph中的任一值。

position(distance: [10..30]meter, behind: dut.car, at: start)// 车辆之间的相对位置函数表达式,指示了第二目标车初始位于本车的后面,且与本车的距离为10m~30m中的任一值。

lane(side_of: dut.car, side: right, at: start)// 行驶车道函数表达式,指示了第二目标车初始行驶的车道为本车右侧车道。

可选的,上述3段源码之间的执行顺序是并行的,对于每段源码内部的执行顺序是串行的。

在另一应用场景中,第一目标车切入到本车的前方。可选的,依次确定所述本车和目标车随时间迁移而执行的各行为的信息,包括:确定所述本车在被测路段上的行为;确定所述目标车在被测路段上的行为;确定所述目标车与本车的初始相对行驶车道信息、与所述本车的初始相对位置信息;确定所述目标车的速度信息;确定所述目标车与本车的最终相对行驶车道信息、与所述本车的最终相对位置信息。下面给出了本步骤对应的源码和注释。

(4)dut.car.drive(path: p)// 本车的行为表达式,指示了本车在被测路段p上的行驶行为。

(5)v1.drive(path: p) with:// 第一目标车的行为表达式,指示了第一目标车在被测路段p上的行驶行为。

l1: lane(side_of: dut.car, side: left, at: start)// 行驶车道函数表达式,指示了第一目标车初始行驶的车道为本车左侧车道。

p1: position(time: [0.5..1]second, ahead_of: dut.car, at: start)// 车辆之间的相对位置函数表达式,指示了第一目标车初始位于本车的后面行驶,且行驶的时长为0.5s~1s中的任一值。

speed(speed: [30..50]kph)// 速度函数表达式,指示了第一目标车的行驶速度为30kph~50 kph中的任一值。

l2: lane(same_as: dut.car, at: end)// 行驶车道函数表达式,指示了第一目标车最终行驶的车道与本车相同。

p2: position(time: [1.5..2]second, ahead_of: dut.car, at: end)// 车辆之间的相对位置函数表达式,指示了第一目标车最终位于本车的前面行驶,且行驶的时长为1.5s~2s中的任一值。

可选的,上述2段源码之间的执行顺序是并行的,对于每段源码内部的执行顺序是串行的。

在又一应用场景中,本车和目标车可以继续行进一段距离,可选的,依次确定所述本车和目标车随时间迁移而执行的各行为的信息,包括:确定所述本车在被测路段上的行为,确定目标车在被测路段上的行为和速度信息。面给出了本步骤对应的源码和注释。

(6)dut.car.drive(path: p)// 本车的行为表达式,指示了本车在被测路段p上的行驶行为。

(7)car1.drive(path: p) with:// 第一目标车的行为表达式,指示了第一目标车在被测路段p上的行驶行为。

speed(speed: 40kph)// 速度函数表达式,指示了第一目标车的行驶速度为40kph。

需要说明的是,上述2段源码之间的执行顺序是并行的,对于每段源码内部的执行顺序是串行的。

上述3个场景中的源码之间的执行顺序可以是串行的。上述3个应用场景中的任一应用场景或组合应用场景中的源码,均可以用于生成测试场景。

参见上述描述,通过顺次/并行执行各函数表达式,能够依次确定本车和目标车随时间迁移而执行的在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息,从而确定了随时间演变的动态场景内容。

S140、在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

将上述静态场景和动态场景结合,并提供给仿真器。通过仿真器渲染被测路段、参与者,以及根据随时间迁移而执行的各行为的信息,逐帧渲染测试场景。

本发明实施例首先读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段,自动加载静态场景;在此基础上,指定测试场景中的参与者,并加载对应的模型,实现参与者的加载;进一步的,依次确定参与者随时间迁移的在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息,从而随着时间的迁移依次确定测试场景中各行为,进而在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,自动生成测试场景,无需人工参与,提高测试场景的生成效率和准确率。本发明实施例通过依次确定静态场景、参与者以及随时间迁移的行为,通过更抽象,更易读,更容易编辑的方式来描述测试场景,使得测试场景的生成过程便于编辑、可读性强。

需要强调的是,本实施例的执行依赖于上述源码的逻辑架构,具有以下优点:1)该源码架构使用类似python的高级程序设计语言的语法结构,非常易学并且易于掌握;2)该源码架构可读性好,可维护性强;3)该源码架构远离机器语言,更加侧重场景的动态元素和时间序列本身,即使没有编程经验的人员也可以轻易阅读和编辑。进而,在源码架构有如上创新的基础上,通过执行编译后的源码,使得测试场景的生成过程自动化、便于编辑、可读性强。

图2是本发明实施例提供的另一种测试场景生成方法的流程示意图,在上述各实施例的基础上对各行为的信息的确定过程进行细化,具体包括以下步骤:

S210、读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段。

S220、指定测试场景中的参与者,并加载所述参与者对应的模型;其中,所述参与者包括本车和目标车。

S230、确定多个场景级行为的执行顺序和各场景级行为的执行条件。

场景级行为包括循线、切入、切出和超车中的至少一项;所述执行顺序包括串行执行顺序、并行执行顺序和混合执行顺序中的至少一项;所述执行条件包括执行时长、执行触发条件和执行结束条件中的至少一项。

其中,场景级行为是凌驾于参与者的行为之上的行为,通过本车和目标车的行为综合构成。一个测试场景包括至少一个场景级行为,一个场景级行为包括参与者的至少一个行为。可选的,混合执行顺序定义了一个行为需要在另一个行为发生前或者发生后多长时间内发生。执行触发条件和执行结束条件均可以是时间点或者车辆之间的设定位置关系。

示例性的,读取场景行为根表达式和场景级行为时序表达式,确定多个场景级行为的执行顺序和各场景级行为的执行条件。下面给出了本步骤对应的源码和注释。

do serial()://场景行为根表达式do和串行执行顺序表达式serial,指示了其内场景级行为(start_behind_dut、change_lane、go_on)串行执行。

start_behind_dut: parallel(duration: [1..5]second)://并行执行顺序表达式parallel,指示了其内行为(未示出)为并行执行,且执行时长为1s~5s中的任一值。

change_lane: parallel(duration: [2..3]second):// 并行执行顺序表达式parallel,指示了其内行为(未示出)为并行执行,且执行时长为2s~3s中的任一值。

go_on: parallel(duration: 5second):// 并行执行顺序表达式parallel,指示了其内行为(未示出)为并行执行,且执行时长为5s。

S240、在各场景级行为中,依次确定所述本车和目标车随时间迁移而执行的各行为的信息。

下面给出了生成测试场景的完整源码,并指出了各场景级行为的执行顺序,以及各场景级行为中本车和目标车的行为的执行顺序。

1. scenario cut_in:

2. set_map("D:\Line4six.xodr"")

3. path_length(path: p, min_path_length: 0meter, max_path_length:100meter)

4. path_min_driving_lanes(p, 2)

5. v1: car

6. v2: car

7. p: path

8. do serial()://场景行为根表达式do和串行执行顺序表达式serial,指示了其内场景级行为(start_behind_dut、change_lane、go_on)串行执行。

9. start_behind_dut: parallel(duration: [1..5]second)://场景级行为start_behind_dut下的并行执行表达式parallel,指示了其内行为(dut.car.drive、v1.drive、v2.drive)并行执行。

10. dut.car.drive(path: p)

11. lane(lane:2, at: start)

12. speed(speed: [15..18]kph)

13. v1.drive(path: p) with:

14. speed(speed: [30..50]kph)

15. position(distance: [10..30]meter, behind: dut.car, at:start)

16. lane(side_of: dut.car, side: left, at: start)

17. v2.drive(path: p) with:

18. speed(speed: [70..75]kph)

19. position(distance: [10..30]meter, behind: dut.car, at:start)

20. lane(side_of: dut.car, side: right, at: start)

21. change_lane: parallel(duration: [2..3]second)://场景级行为change_lane下的并行执行表达式parallel,指示了其内行为(dut.car.drive、v1.drive)并行执行。

22. dut.car.drive(path: p)

23. v1.drive(path: p) with:

24. l1: lane(side_of: dut.car, side: left, at: start)

25. p1: position(time: [0.5..1]second, ahead_of: dut.car,at: start)

26. speed(speed: [30..50]kph)

27. l2: lane(same_as: dut.car, at: end)

28. p2: position(time: [1.5..2]second, ahead_of: dut.car,at: end)

29. go_on: parallel(duration: 5second): //场景级行为go_on下的并行执行表达式parallel,指示了其内行为(dut.car.drive、v1.drive)并行执行。

30. dut.car.drive(path: p)

31. v1.drive(path: p) with:

32. speed(speed: 40kph)

上述源码还包括:函数参数表达式(包括有参数类型和无参数类型,如speed:[30..50]kph和path: p),函数参数值表达式(如[1.5..2]second),变量定义表达式(如5~7条源码)。

值得说明的是,行为函数表达式包括行为表达式和修饰符表达式(如23~28条源码),或者仅包括行为表达式(如22、30条源码)。修饰符表达式(如24~28条源码)描述了车辆之间的相对位置、行驶车道和执行手段,包括车辆之间的相对位置函数表达式、行驶车道函数表达式和执行手段函数表达式。修饰符表达式与行为表达式之间用with连接。

S250、在所述被测路段上,控制所述参与者按照各场景级行为的执行顺序和执行时长,执行对应的场景级行为。

S260、在执行对应的场景级行为时,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

下面结合上述8~32条源码,详细描述S250和S260。

在被测路段上串行执行开始行驶(start_behind_dut)、切入(change_lane)和继续行驶(go_on)这3个场景级行为。在执行start_behind_dut时,本车在被测路段p的车道2上行驶,行驶速度为15kph~18 kph中的任一值;同时,第一目标车在被测路段p的车道1(车道2的左侧车道)上,从本车后面10~30米中任一值处开始行驶,行驶速度为30kph~50 kph中的任一值;同时,第二目标车在被测路段p的车道3(车道2的右侧车道)上,从本车后面10~30米中任一值处开始行驶,行驶速度为70kph~75 kph中的任一值。本车、第一目标车和第二目标车的行驶时长相同,且均为1s~5s中的任一值。

start_behind_dut结束后开始执行change_lane,本车保持在被测路段p上行驶。同时,第一目标车开始位于本车的左侧车道(即车道1),然后行驶到本车前面并维持0.5s~1s的任一值,接着以30kph~50 kph中的任一速度值行驶,则第一目标车会超过本车一端距离。然后,第一目标车行驶到本车车道(即车道2)上,且位于本车前面并维持0.5s~1s的任一值。change_lane的执行时长为1s~5s中的任一值。

change_lane执行结束后,开始执行go_on,本车保持在被测路段p上行驶。同时,第一目标车以40kph的速度在被测路段p上行驶。本车与第一目标车的行驶时长为5s。

本实施例通过确定多个场景级行为的执行顺序和各场景级行为的执行条件,在各场景级行为中,依次确定所述本车和目标车随时间迁移而执行的各行为的信息,从而灵活设置各场景级行为的执行顺序和条件,方便测试场景的扩展,同时便于源码的阅读和编辑。

在上述实施例和下述实施例中,在所述读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段之前,还包括:读取场景编号、场景描述和数值描述;解析所述场景编号得到道路类型、被测路段、本车行为、目标车类型、目标车位置以及目标车行为;解析所述场景描述得到静态环境信息;根据所述道路类型、被测路段、本车行为、目标车类型、目标车位置、目标车行为和静态环境信息,从代码库中选择字段,并合并字段和对应的数值描述得到源码;对所述源码进行编译,并执行编译后的目标代码。在执行编译后的目标代码的过程中,实现上述任一实施例提供的测试场景生成方法,例如,读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段;指定测试场景中的参与者,并加载所述参与者对应的模型;其中,所述参与者包括本车和目标车;依次确定所述本车和目标车随时间迁移而执行的各行为的信息,所述各行为的信息包括在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息;在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

可选的,场景编号的命名编号规范为X-X.XX-XX-X-XXX.X-XX-00,每位编号所代表含义依次为道路类型、被测路段、本车行为、目标车类型、目标车位置、目标车行为以及目标车行为补充。示例性的,命名规范如下所示:

1)道路类型:H-高速,K-快速路,C-城市道路,P-停车场。

2)被测路段:M-主路,R-匝道(R.IR匝道内,R.MR由主路进匝道,R.RM由匝道进主路),T-隧道(T.IT隧道内,T.MT由主路进隧道,T.TM由隧道进主路),S-服务区,F-收费站,P-干路直路,W-干路弯道,C-十字路口,I-环形交叉路口,O-立交桥,F-过街天桥,E-停车场出口,X-停车场入口,L-停车场场内,O-其它。

3)本车行为:LK-循线,LC-变道,SF-路口直行,TL-路口左转,TR-路口右转,RV-倒车,TA-掉头,PI.F-泊车入位(正向), PI.R-泊车入位(倒车),PO.F-驶离车位(正向),PO.R-驶离车位(倒车)。

4)目标车类型:V-四轮机动车,M-两轮机动车,B-非机动车自行车,P-行人,A-动物,T-物体 。

5)目标车位置:EP-本车道前车,EF-本车道后车,TD-目标车道前车,TG-目标车道后车,LP-左车道前车,RP-右车道前车,LF-左车道后车,RF-右车道后车,TDP-目标车道前车的前车,EPP-本车道前车的前车,LPP-左车道前车的前车,RPP-右车道前车的前车,TS-目标车道旁车,TNS-目标车道邻车位旁车 。

(尾缀:.S同向行驶,.O反向行驶,.H水平停车,.V竖直停车)

6)目标车行为:ST-静止,LK-循线,LC-变道,SF-路口直行,TL-左转,TR-右转,CO-穿行,RV-倒车,TA-掉头,AD-逆行,PI.F-泊车入位(正向), PI.R-泊车入位(倒车),PO.F-驶离车位(正向),PO.R-驶离车位(倒车),AM-上方行驶,MT-运动(只适用物体),FL-高空坠落(只适用物体)。

7)目标车行为补充01-99:是补充目标车行为的说明,为可选项。

示例性的,解析H-M-LK-V-EP.S-LK-01,得到高速、主路、循线、四轮机动车、本车道前车同向行驶、循线、匀速。

场景描述对道路类型,被测路段,本车类型,参与者类型、位置、行为,情境,测试功能等信息进行文字说明。可根据此部分描述,解析得到场景初始环境设置信息,即静态环境信息。

数值描述定义了参与者和静态环境的基本数据信息,如纵向初速度,横向初速度,加速度,参与者之间横向距离、纵向距离,偏置率,动作触发时间、动作持续时间、车道宽度、能见度、温度等数据信息。

数值描述采用标量数值和数值范围两种形式来表示参与者行为相关数据,例如,本车初始纵向速度Ve_x0:[50,120](km/h)、车头时距THW:5(s/Veh)等。

在选择代码库字段之前,需要预先建立上述解析结果与代码库字段的代码库,进而从代码库中选择与道路类型、被测路段、本车行为、目标车类型、目标车位置、目标车行为和静态环境信息对应的字段。下面示出了代码库的部分内容:

表1 参与者的类型与代码库字段的对应关系表

表2 目标车位置与代码库字段的对应关系表

代码库中定义了本车和目标车的基本信息和行为信息的数据结构体,还需要将数值描述对应合并至结构体的对应字段中。示例性的,结构体中需要合并数值描述的字段如下:

本车结构体包括字段:本车初始纵向速度Ve_x0(km/h)、本车横向速度Ve_y(m/s)、本车纵向加速度Ae_y(m/s2)、本车变道持续时间t(s)、本车纵轴线与本车道中心线偏置量ΔL1(m)、本车纵轴线与目车道中心线偏置量ΔL2(m)等。

目标车结构体包括字段:初始纵向速度Vo1_x0(km/h)、横向速度Vo1_y(m/s)、纵向加速度Ao1_y(m/s2)、初始纵向速度Vo2_x0(km/h)横向速度Vo2_y(km/h)、纵向加速度Ao2_y(m/s2)、与本车初始相对横向距离Dy0_o1(m)、与本车初始相对纵向距离Dx0_o1(m)、变道持续时间t1(s)、与本车车辆偏置率/人(非机动车)碰撞点(%)、与本车车辆偏置率/人(非机动车)碰撞点(%)、碰撞时间TTC(s)、车头时距THW(s/Veh)。

静态环境信息结构体包括字段:车道宽度Width(m)、纵向坡度Slope(°)、车道数量N(条)、 行驶车道n(左数第n条)、弯道半径R(m)、光照度(lux)、能见度(m)、湿度(%rh)、温度(°)、风力(级)、降雨量(mm)、积雪量(mm)。

在将数值描述对应合并至结构体的对应字段中之后,将各字段按照功能映射为不同的代码块;将各代码块合并得到最终的源码。

具体的,第一步:根据源码中静态环境构建标准,将静态环境信息对应的字段和数值描述映射到源码的静态场景部分,参见上述2~4条源码。

第二步:将参与者和被测路段对应的字段映射到源码的变量定义部分,参见上述5~7条源码。

第三步:在串行执行时序下嵌套本车和目标车行为的并行执行时序,并且并行执行时序包括执行时间,参见上述8、9、21和29条源码。

第四步:将本车对应的字段和数值描述映射到源码的本车部分。具体的,设置本车的初始化状态。当本车没有外接自动驾驶算法时,通常设置为匀速巡线运行方式,参见上述10~12条源码。

第五步:将目标车初始化状态时对应的字段和数值描述映射到源码的目标车部分。具体的,设置目标车的初始化状态,参见上述13~20条源码。

第六步:将本车/目标车初始化后对应的字段和数值描述映射到源码的本车/目标车部分。具体的,获取本车/目标车的行为对应的字段,并合并对应的行为参数,完成本车/目标车的行为设置,参见上述22~28条源码、30~32条源码。

第七步:将各代码块合并得到最终的源码。

可选的,本实施例还包括读取图片示例,如图3和图4所示。图片示例可以通过可视化的方式,对当前场景所描述的参与者行为进行直观展示。

本实施例可以根据场景编号、场景描述和数值描述这些可读性较强的信息,自动生成源码,无需编程,节省人工成本和时间。

图5是本申请实施例提供的一种测试场景生成装置的结构示意图,本申请实施例适用于在自动驾驶仿真测试应用场景中,搭建测试场景的情况。结合图5,测试场景生成装置包括:读取模块410、指定和加载模块420、确定模块430和控制模块440。

读取模块410,用于读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段;

指定和加载模块420,用于指定测试场景中的参与者,并加载所述参与者对应的模型;其中,所述参与者包括本车和目标车;

确定模块430,用于依次确定所述本车和目标车随时间迁移而执行的各行为的信息,所述各行为的信息包括在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息;

控制模块440,用于在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

本发明实施例首先读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段,自动加载静态场景;在此基础上,指定测试场景中的参与者,并加载对应的模型,实现参与者的加载;进一步的,依次确定参与者随时间迁移的在被测路段上的行为、车辆之间的相对位置信息、行驶车道信息、初始/最终标记位信息和执行手段信息,从而随着时间的迁移依次确定测试场景中各行为,进而在所述被测路段上,控制所述参与者按照所述各行为的信息依次执行对应行为,自动生成测试场景,无需人工参与,提高测试场景的生成效率和准确率。本发明实施例通过依次确定静态场景、参与者以及随时间迁移的行为,通过更抽象,更易读,更容易编辑的方式来描述测试场景,使得测试场景的生成过程便于编辑、可读性强。

可选的,确定模块430具体用于确定多个场景级行为的执行顺序和各场景级行为的执行条件;在各场景级行为中,依次确定所述本车和目标车随时间迁移而执行的各行为的信息。

可选的,所述场景级行为包括循线、切入、切出和超车中的至少一项;所述执行顺序包括串行执行顺序、并行执行顺序和混合执行顺序中的至少一项;所述执行条件包括执行时长、执行触发条件和执行结束条件中的至少一项。

可选的,控制模块440具体用于:在所述被测路段上,控制所述参与者按照各场景级行为的执行顺序和执行时长,执行对应的场景级行为;在执行对应的场景级行为时,控制所述参与者按照所述各行为的信息依次执行对应行为,生成测试场景。

可选的,确定模块430具体用于读取所述本车和目标车随时间迁移而执行的各行为函数表达式,并确定各行为函数表达式指示的信息;所述行为函数表达式包括行为表达式、车辆之间的相对位置函数表达式、行驶车道函数表达式和执行手段函数表达式;所述行为表达式指示在被测路段上的行为;所述车辆之间的相对位置函数表达式指示车辆之间的相对位置信息,以及初始/最终标记位信息;行驶车道函数表达式指示行驶车道信息,以及初始/最终标记位信息;所述执行手段函数表达式指示执行手段信息,包括速度函数表达式、加速度函数表达式和车道中心偏移量函数表达式,分别指示速度信息、加速度信息和车道中心偏移量信息。

可选的,确定模块430具体用于确定所述本车在被测路段上的行为、初始行驶车道信息和速度信息;确定第一目标车在被测路段上的行为、速度信息、与所述本车的初始相对位置信息和初始行驶车道信息;确定第二目标车在被测路段上的行为、速度信息、与所述本车的初始相对位置信息和初始行驶车道信息;和/或,

确定模块430具体用于确定所述本车在被测路段上的行为;确定所述目标车在被测路段上的行为;确定所述目标车与本车的初始相对行驶车道信息、与所述本车的初始相对位置信息;确定所述目标车的速度信息;确定所述目标车与本车的最终相对行驶车道信息、与所述本车的最终相对位置信息。

可选的,该装置还包括源码生成模块,用于在所述读取路网文件,并根据所述路网文件的被测路段信息,读取被测路段之前,读取场景编号、场景描述和数值描述;解析所述场景编号得到道路类型、被测路段、本车行为、目标车类型、目标车位置以及目标车行为;解析所述场景描述得到静态环境信息;根据所述道路类型、被测路段、本车行为、目标车类型、目标车位置、目标车行为和静态环境信息,从代码库中选择字段,并合并所述字段和对应的数值描述得到源码;对所述源码进行编译,并执行编译后的目标代码。

本申请实施例所提供的测试场景生成装置可执行本申请任意实施例所提供的测试场景生成方法,具备执行方法相应的功能模块和有益效果。

图6为本发明实施例提供的一种电子设备的结构示意图,如图6所示,该设备包括处理器50、存储器51、输入装置52和输出装置53;设备中处理器50的数量可以是一个或多个,图6中以一个处理器50为例;设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图6中以通过总线连接为例。

存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的测试场景生成方法对应的程序指令/模块(例如,测试场景生成装置中的读取模块410、指定和加载模块420、确定模块430和控制模块440)。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的测试场景生成方法。

存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置52可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。

本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例的测试场景生成方法。

本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

相关技术
  • 测试场景生成装置、测试场景生成方法、测试场景生成程序
  • 生成可缩放矢量图形场景的至少一部分的复杂度矢量的方法和设备以及用于测试可缩放矢量图形场景的至少一部分在设备上的播放适宜性的方法和测试设备
技术分类

06120112758715