裴鹏鹏,樊景帅,陆竞英,林琬,张昌德
摘 要:针对基于视觉的ADAS产品或功能开发,提出一种完整的场景库建设方法,并配套开发相应的HIL台架环境;以某商用车车载前视摄像头为例,将场景通过HIL台架回注到视觉控制器内部进行重处理,取得很好效果,验证了场景库能很好地支持软件的迭代开发和系统功能测试。
关键词:视觉-ADAS;场景库;HIL(hardware in loop)
中图分类号:467.11 文献标识码:A 文章编号:1005-2550(2021)05-0085-04
A method of building scenarios library for vision-based-ADAS
PEI Peng-peng, FANG Jing-shuai, LU Jing-ying, LIN Wan, ZHANG Chang-de
(Dongfeng Commercial Vehicles Company, Wuhan 430056, China)
Abstract: This paper puts forward a method of building scenarios library refers to ADAS product development based on vision, and develops the corresponding HIL platform; Taking a commercial vehicle as an example, the scene is reinjected into the controller , the results show this method can well support software s development and test.
目前,自动驾驶汽车测试方法主要分为基于场景的测试方法和基于里程的测试方法两大类。相比于里程测试,基于场景的测试在测试效率,测试成本等方面具有巨大的技术优势[1]。但其海量的数据来源、复杂的场景分析提取技术、对多传感器多标准体系多仿真环境的适配支持等造成了落地困难、构建方法和标准不一的特点。
就目前的行业现状来看,德国的PEGASUS项目、美国NHTSA的场景库架构体系建设都耗费了相当的时间和财力,我国的中汽研也于2015年启动场景库建设工作,目前已经发布“中国典型驾驶场景库2.0” [2]。对这些场景库进行研究,发现主流的建设思路都是如下图1所示:
这种建设方法的特点是全覆盖场景、数据来源太多、分析技术要求高,场景管理困难等,导致其建设过程变为一个耗时耗力的浩大工程。对于基于视觉的ADAS功能前装产品,ODD相对较窄,往往要求开发周期短,迭代迅速、功能稳定可靠,应避免按照主流场景库思路建设。以某商用车前视摄像头为例,拟采用下述方法建设一个支撑ADAS功能开发的场景库。
1 匹配产品定位的场景库建设思路
该商用车ADAS产品,定位于城市和高速路况的部分场景,具体为LDW/FCW/LKA/ACC /AEB功能。如下图2为定版的场景库开发逻辑。
这种方法相对于复杂的主流场景库开发思路有如下几个创新点:①首先应从产品功能出发[3],根据功能需求做了详细分解,将场景大纲分为算法识别类、预警类、ADAS功能三大类;场景来源分为自然驾驶、法规、第三方数据三大类,结合大纲直接解析出功能场景描述集,将覆盖性采集变为针对性采集。②针对特定场景,提取场景要素矩阵,利用matlab对场景矩阵做布尔分析得到逻辑和具体场景,利用python工具对场景进行切片、资源管理,自主化程度非常高;③自制回注方法,形成硬件在环,高效迭代验证。
2 场景库主体建设
2.1 开放道路采集
针对自然驾驶场景和法规场景,搭建了测试采集平台,由VBOX和EyeQ4作为真值,EyeQ4主要负责车道线和自然道路前车动态识别,Vbox负责封闭法规场景和静态识别,两者都输出视频和can报文;以4通道canoe作为采集设备,录制真值和待测设备的报文,同时真值和待测设备也有各自的上位机进行实时观测。如下图3所示,这套采集系统具有同步功能、且数据格式统一、成本低和兼容性高的特点。
采集过程中,严格按照预定的功能描述集进行,本例主要针对动静态测速测距、动态切入切出、高速跟车、城区避障、法规要求几个维度进行采集。过程中,详细记录地理位置、道路类型、气候环境、交通参与者状态、采集人员与车辆状态等,最重要的是待测和真值设备的实时感知数据。
2.2 數据分析、场景提取
当采集的数据足够多后,需要针对某一具体功能场景进行特征提取,形成逻辑或者具体场景。例如针对FCW功能的场景,利用matlab分析形成点阵图如下图4所示:
上图红色代表已经触发了报警的场景,黑色代表尚未触发报警的场景。发现数据有朝某部分集中的趋势,说明在城区道路上,前车速度为0-10km/h,后车速度30-50km/h且前后车相距40-50m时最能触发危险场景,这一场景便是场景库的逻辑场景;根据概率分析出典型具体场景,然后选择相关参数的临界值或者更改一些环境参数形成重构场景,将这样生成的场景一起归类到场景库大纲下的具体场景。样本量没有统一标准,可以随着采集里程的增加,随时增加建模的原始数据,使分析结果更具说服力。
对于提取的具体场景,可以一一追溯到采集的数据,定位到相应的视频和报文,通过python来进行切片提取。用Pyqt5模块开发界面[4]、用openpyxl、matplotlib、cv2等模块处理报文和视频并进行切片保存。具体的代码流程图如下:
待测设备输出的报文带有视频帧号信息,canoe采集的所有報文共用一个时间戳,这样所有报文的时间戳都和视频有一个固定关系。对于自然驾驶采集场景,需要人工回放视频寻找需要的视频起始帧和结束帧信息,输入工具界面,代码计算报文的时间戳区间;对于报警类危险场景,代码将待测设备和EyeQ4的“warning_msg”报文对比找到功能失效点的时间戳,反过来自动定位视频的起始和结束帧号。通过上述方式对视频、报文进行同步定位,而后通过函数进行切片。
2.3 场景分类、目录管理
场景描述集合了道路描述+环境描述+交通参与等要素[5],每个部分的定义和描述方法可以个性化设置,方便后续统一管理和搜索应用。按照图2的场景库开发逻辑,先通过匹配产品开发需求、加入标准法规场景、第三方描述场景、危险场景、常见corner case场景等形成功能场景描述集;再按照描述集针对性路采,通过场景挖掘提取和概率分析形成带有场景参数的逻辑场景;最后结合驾驶习惯、产品ODD等在逻辑场景的基础上细化参数形成具体场景。如下表1为本例落地的场景库描述集的案例展示,按照三大类分类方式总共收纳了约290多条场景:
对场景库的大纲目录进行管理,目的一是对接场景管理工具,对场景进行搜索和关联。二是当场景库大纲发生变化,比如新增或者修改时能快速的重新生成新的目录。本例把大纲和每条场景描述做成分层文件夹,存放切片结果。目录管理工具的代码流程图如下:
代码获取excel的大纲列表,根据分级信息,逐层创建目录。当需要修改时,重新运行程序,代码会自动处理修改的部分而保存没有修改的部分。这些建立完成的场景库,通过成熟的采集、分析方法和切片以及管理工具可以支持场景库本身的迭代建设,随着路采数据和相应法律法规的健全,场景库可以不断的丰富和更新,甚至可以支持因为产品本身定位变化,带来的场景库结构变化。
2.4 仿真场景补充
很多极端场景或者危险场景自然道路无法采集,比如积雪路面、紧急壁障、高速不同光照强度的隧道等等,这部分可以用仿真软件补充,本例尝试过IPG和VTD两款软件,都可以创建描述集里面的特殊场景。如下图7其场景和渲染效果:
通过仿真软件产生的场景主要当作corner case ,提高场景库的覆盖度。后期可以将仿真动画转成摄像头输出的视频格式加入场景库备用。
3 HIL测试
在没有视频暗箱和仿真环境组成的HIL台架的前提下,这些场景依然可以快速的投入迭代测试。我们通过研究sensor和视觉控制器本身的架构后发现,可以将保存的视频通过U口导入,经过视频转换板处理后,经MIPI口直接注入到视觉控制器的ISP模块处理。这个方法忽略了摄像头的镜头和CMOS元件,但依然对ISP模块以及算法策略软件有着直接的验证。本例大致的HIL环境如下图8所示:
为了验证这种场景库构建方法的有效性,进行了两组对比试验:第一组是选取某一段车道线清晰度较差、同时摄像头探测到的自车纵轴到车道线距离误差较大的场景,通过上述方式将这段场景提取出来,在软件版本没有迭代的情况下,注入控制器,对比迭代前后版本对同一车道线的识别精度,对比结果如下图9所示;第二组是选取一段红绿灯路口、自车逼近前方静止车,然后停车等灯的场景,待视觉控制器算法更新迭代后,再将提取的场景注入控制器,对比注入前后控制器输出的自车到前车的纵向距离,结果如图10所示:
由图9可以看到,在软件版本和硬件环境没有变更的前提下,注入视频前后控制器输出的两次数值(lane1_Curvature0,摄像头位置离左侧车道线的距离)几乎一样。由图10可以看到,软件版本更新前,摄像头探测到的两车距离稳定性和精度都较差,开发团队针对性的更改算法后,识别的到车道线距离则跟真值非常贴近。两组对比试验证明注入的场景摄像头的ISP和控制器的算法模块都能正确识别到,并且提取的场景本身的质量也得到保证,另外这种方式能非常高效地支持算法的迭代开发与快速验证。
4 结论
本文提出了基于摄像头开发ADAS功能所需的场景库建设思路,通过道路采集、结合matlab分析挖掘出典型场景、利用python将报文和视频同步切片保存作为具体场景内容的方法建设了可快速落地的场景库。并初步建立了场景管理工具;建立了基于MIPI口回注视频、canoe同步回注报文的HIL台架,验证结果表明这种方法能很好地支持软件和算法的开发迭代和测试验证。
参考文献:
[1]朱冰,张培兴,赵健,陈虹,徐志刚,赵祥模,邓伟文.基于场景的自动驾驶汽车虚拟测试研究进展[J].中国公路学报,2019(6):1-19.
[2]冯屹,王兆.自动驾驶测试场景技术发展与应用[M].北京:机械工业出版社,2020.2.
[3]王凤娇,宗岩,靳志刚.自动驾驶仿真测试场景设计[J].科学技术创新,2020(29):100-101.
[4]Eric Matthes. Python编程从入门到实践[M].北京:人民邮电出版社,2020.5.
[5]田思波,樊晓旭.自动驾驶测试场景标准体系建设的研究和思考[J]. 中国标准化,2020(4):87-91.