在许多人的印象中,自动驾驶的测试是一项有些朴实无华的工作,测试人员坐在车里不停地重复行驶,非常重要但又难以出彩。不过事实并非这样,实车测试只是测试工作的一个部分,大量有趣的技术和精彩的瞬间其实出现在实车之外。
比如,开发各种各样的测试工具,打造自动化的测试流水线,找出万中无一的特殊场景,等等。而在Nullmax,测试工作还有更多精彩有趣的地方,特别是富有特色的自动驾驶感知测试,堪称「问题杀手」。
作为Nullmax量产工程的重要一环,感知测试聚焦于核心的感知层面,将测试的环节前移和细化到系统的上游,通过大量的技术手段来更早地发现问题、解决问题。
以数据说话,用技术「找茬儿」
对于感知测试来说,最基础的工作是针对各项感知任务展开深入细致的测试,结合完善的测评体系和详细的测试指标进行全面的定量分析,用数据和事实发现问题,改善性能。
比如测试一项感知任务,那么场景既要包括直道也要包括弯道,还要涵盖和白天和夜间,并且需要考虑不同类型的车辆目标,输出详细的测试报告。并非是仅仅告知好或者不好,哪里好或者哪里不好,而是既要有性能的整体评估,还要有各种场景下每项指标的具体数据。
除此之外,感知测试还开发了一整套无监督发现问题的自动化脚本,配合感知的日常开发。当工程师修改完代码以后,可以通过这套脚本和高效的自动化数据平台,预先检查任务效果,发现潜在的问题。这样可以将感知测试的环节进一步前移,而不是在感知交付后再进行测试。
这套无监督发现问题的方法,可以在没有“参考答案”的无真值情况下,根据时序和物理异常值去筛选出问题数据。比如,在相机输入的连续帧图片中,障碍物速度的不合理变化,障碍物类型的来回跳变,车身倾角的左右大幅摆动,明显不合真实世界的运动逻辑,再比如车身尺寸、速度、位置明显违背物理常识等等,这些异常背后很可能存在一些感知的问题。
有了这些自动化的脚本,这种异常数据很容易找出,潜在的问题能够被轻松发现,也不需要测试人员进行监督,可以极大程度地节省开发和测试时间。
感知测试也会「自动驾驶」
实际上,这些无监督发现问题的手段只是Nullmax高效感知测试的一部分。Nullmax在感知层面构建了完整的CI/CD流程,持续集成、持续测试、持续开发,以大量自动化的工具提升感知环节的开发、测试、集成效率。
比如,在开发一个功能或者修复某个bug之后,工程师其实既不知道最终的效果,也不清楚这些功能和改动是否会带来负面的影响。因为有时候代码会牵一发而动全身,有一定的概率出现A任务代码影响B任务效果的情况。这种情况很少被关注,而且在初期的时候不易发现,但是一旦暴露在系统层面,就到了偏晚的阶段,需要耗费更大的力气去解决。
但是感知层面有了完整的自动化流程后,通过回归测试,就可以自动化地验证问题,避免这类情况。比如,感知软件解决测距测速不准的问题,那么工程师在修复代码后可以直接根据问题的编号找到对应的数据,借助数据回灌初步评估修复效果,然后再将代码上传到软件仓库。
在这之后,云端的一整套感知测试环境,自动化地评估修复的效果,确认是修复了单一具体问题,还是为一系列的类似情况带来了全面的提升,包括有没有因为修复带来其他的问题。这套环境会根据当次的提交内容和关联的Bug ID,自动化地抽取数据库中对应标签的大量问题数据进行测试。
Nullmax这一整套感知的CI/CD流程不需要任何的手动操作,通过背后高效的自动化数据平台,感知开发、测试、集成的整套流程可以完全自动化地完成,不仅极大程度降低了人力和时间的需求,同时更加全面、深入地检测了感知问题的修复效果。
在自动驾驶行业,部分企业将CI/CD运用到了系统层面的开发当中,Nullmax更进一步,将CI/CD深入地运用到感知层面,这使得Nullmax的整体开发尤为高效。因为感知作为自动驾驶的上游环节,存在的问题很容易传递到下游的规控,影响系统的表现,Nullmax将CI/CD深化到感知层面,可以将大部分问题扼杀在摇篮当中。
并且在软件发版环节,Nullmax为感知部分的集成设置了节奏差,留出了发现问题、解决问题的时间。项目的开发过程当中,自动驾驶的软件系统会定期发版,将感知、规控、通信、中间件等所有内容整合打包。在这之前,Nullmax会将感知部分先行单独发版,然后通过自动化工具和测试人员进行测试,输出具体报告,评估前期问题的修复情况。
如果感知版本符合预期,就可以在之后的系统发版时直接集成,如果存在问题,那么也还有时间继续修改和测试。这样可以极大程度地避免上游的感知问题影响系统整体,而且更利于问题的定位和系统的改进,将系统发版和项目开发的效率大幅提升。
数据「在环」,「双商」在线
为了更好地支持自动驾驶系统的开发和落地,Nullmax打造了AI数据中枢,一套以视觉为核心、高度自动化的一站式数据平台,涵盖数据采集、挖掘、标注、模型训练、测试以及软件的发版等全部环节。
在这当中,感知测试在数据管理的部分做了大量的工作,将开发所需的数据采集、管理的工具部署到了平台之上,使得感知测试的数据能够高效闭环,不仅可以更好采集数据,而且可以更好地利用数据。
当感知、系统实车测试的时候,又或者专门的数据采集时,这些工具可以在车上自动化地为数据打上标签,并且之后在云端完成更进一步的细致处理,将所有感知的数据分门别类,标注各项属性,包括所属的问题种类、关联的Bug ID等等。
这样在后续修复bug的时候,只需要输入对应的Bug ID,这一类型的所有问题都可以直接关联。当工程师上传修复代码的时候,同类型、关联类型的问题也都可以自动化地测试一遍,确认问题彻底修复。所有前期收集的数据,最后都可以直接为功能的开发、测试和迭代发挥作用。
实际上,Nullmax的自动驾驶测试,包括感知测试在内,都是技术性很强的重要工作,而且当中的「AI含量」越来越高。不仅在当前的研发和应用当中,测试工作变得更加智能高效,在大模型技术愈加成熟的今后,测试工作也会更具想象力。
结语
自动驾驶需要通过测试及早全面地发现问题,快速提升性能,同时也要通过测试来验证系统安全可靠,功能、性能符合要求。Nullmax将自动驾驶的测试细化、前移到上游的感知层面,不仅让整个开发的过程更加高效,也令量产的质量更有保证。