高效交付有章法,Nullmax量产工程深度解析
发布时间:2024-04-19
自动驾驶的量产落地,从来不是一件简单的事情,尤其要在有限的周期内,将复杂的软件系统与众多的硬件完美匹配在一起,稳定且安全地实现各种行车、泊车功能。因此如何紧锣密鼓地开展各项工作,将千头万绪的开发和验证事项有条不紊地推进,也就成了自动驾驶交付的关键。在这当中,量产工程发挥着至关重要的作用。在Nullmax看来,量产工程并非看不见、摸不着的「玄学规律」,实际上它是一系列流程、方法、工具、经验的综合运用。通过量产工程,需求和技术可以平稳落地,自动驾驶复杂的万丈高楼也可以平地而起。
对于自动驾驶的量产开发而言,关联件的联调是一个重要节点,在量产样车下线后,软件系统需要与关联的硬件适配打通,然后进行性能和功能的深度优化。
在取得量产样车以后,Nullmax最快可以在1-2周的时间内完成软件和关联件的适配打通,然后进入后续的性能优化和功能开发阶段。Nullmax快速适配的背后,源自于三方面的工程积累。
一是Nullmax拥有一套标准化的适配流程。针对执行件、传感器等关联件,Nullmax形成了一整套验收和操作的规范,可以全面、细致、快速地确认是否符合量产标准,并推动多项开发工作同步进行。在关联件存在问题的情况下,Nullmax还可以联合OEM推动硬件达到要求,处置项目开发中的风险项。二是Nullmax非常了解整车及关联件,可以直接触达最根本的问题。Nullmax不仅精通算法和软件,而且对芯片、传感器、执行器等关键硬件同样有着深入的理解。Nullmax擅长从系统层面思考如何实现软硬件完美融合,这是快速完成问题定位并协同对应的Tier 1、Tier 2解决问题的核心所在。
比如感知效果不佳时,就需要快速判断到底是算法还是相机ISP,又或者其他环节存在问题。Nullmax拥有出色的视觉感知能力,对ISP、CMOS、镜头等细节足够了解,并且对系统上下游有充分的理解以及丰富的实战经验,所以在量产过程中常常能够第一时间发现和解决问题。
三是Nullmax构建了平台化的技术架构,尤其是专门的自动驾驶中间件。不同车型的硬件差异极大,不仅性能、响应曲线有差别,而且关联件的接口也不一样。如果没有做好平台化,让系统适配一款新车往往需要大量的修改,工作量巨大,效率过低。
Nullmax考虑到量产的种种差异,因此开发了中间件系统。将上层的软件算法与底层的硬件隔离开来,软件和硬件解耦,这样在面对不同的硬件配置时只需要进行少量的修改。比如更换了芯片平台,那么系统只需要修改底层的适配,如果车辆的CAN矩阵发生变化,也只需要调整信号接口,而上层的软件算法不用修改。
关联件的联调只是量产的一个环节,而且量产应用在品质上有着远超demo的严格要求,因此从需求的沟通到最终的交付,实际上是一个长周期的过程。Nullmax拥有一整套标准化的量产流程,保证项目如期高质量的交付。比如在项目定点之后,Nullmax会根据客户的要求进行极其细致的分析,确认正式的需求文档,推动项目的具体开发。这份需求在早期不会完全固化,而是会考虑需求和技术的演化,在项目中保持迭代。
而在需求确认之后,Nullmax会设计系统的架构,分析传感器、计算平台等硬件配置,并明确关联件的量产要求。这样在取得量产样车后,就可以快速完成关联件的验证和适配,将平台化软件系统的接口调配打通。
项目初期,Nullmax会与客户确定项目的时间周期和重要节点,制定具体的开发计划,确保整个开发工作高效、可控。一方面,Nullmax会按照计划进行大的软件迭代,配合项目的集成和验证。另一方面,内部推进高频快速的小版本迭代,以周或者日为单位来进行软件发版,快速改进问题、提升性能。如果新项目的配置和需求变化不大,那么开发的节奏实际可以更快,周期大幅缩短。Nullmax可以根据样车的下线计划,匹配联调的节奏,提高开发效率。比如在第一阶段,先将车辆横向、纵向的控制调通,实现ACC、AEB等基础功能的运行,在第二阶段,再优化性能或者增加复杂功能。
通常在样车和关联件比较成熟之后,Nullmax会对软件系统和关联件进行深度的联调。因为对于整个系统而言,软件和硬件不是完全割裂,很多地方需要共同优化才能实现最佳的效果。一般完成联调以后,关联件的接口和响应曲线固化下来,开发工作就可以进入新的阶段,专注功能性能的提升。
当系统提升到一个较为成熟的阶段,Nullmax会通过大范围的实车路试,全面检验系统的性能,同时利用路试收集的大量数据,完善和迭代系统。
Nullmax开发了多种的测试工具,来提升测试的效率,包括借助软件在环、仿真等手段回灌收集的收据,验证系统的改进效果,而不用一直进行大范围的实车路试。比如路试中发现的某个AEB误触发情况,完成改进之后,很难复现完全一样的场景,但是通过数据回灌就可以快速验证效果。最终,经过持续的迭代,达到客户的全部功能和性能要求后,Nullmax就会向客户交付最终版本的自动驾驶系统。
Nullmax在量产工程上有着深入的安全考量,并将安全视为自动驾驶最关键、最基础的要求。在项目开始阶段,Nullmax就会将功能安全、预期功能安全和信息安全加入到需求当中,而不仅仅是达成功能、性能的指标,还要确保交付的系统足够安全。
功能安全层面,Nullmax会按照ISO 26262的标准,将需求进行非常细致的拆解,深入到子系统层面。完成编程以后,也会在子系统和系统层面进行测试,确保达到要求。
比如最基础的ACC、AEB功能,如果要达到ASIL B等级,Nullmax就会思考系统需求是什么,拆解出的感知需求、规控需求包含哪些事项,诊断需要完成哪些任务,整个链路的架构设计需要注意什么,等等。而在预期功能安全方面,Nullmax会通过覆盖不同天气、路况、路段等场景要素的大规模路测,挖掘出各种未知的危险场景。
预期功能安全根据已知、未知和安全、危险,将所有场景分为四类:已知的安全场景,未知的安全场景,已知的危险场景,未知的危险场景。其中,已知的危险场景,通过常规的测试手段可以完成系统验证和改进。所以功能安全的关键在于未知的危险场景,大规模的路测可以通过不同场景要素的组合找出这些场景,最大限度地把问题暴露出来。
Nullmax相信通过功能安全目标的拆解、执行和测试,可以极大程度地避免由于系统因素带来的安全问题。同时,预期功能安全也可以有效减少未知的危险场景,这些安全措施的搭配最终可以实现极高的安全性。实际上,除了软件在环、仿真、路测以外,Nullmax还会进行大量其他的测试。比如在系统和子系统层级之下,Nullmax会进行大量的单元测试,以后单元测试之后软件模块的集成测试,还有代码的覆盖度测试、静态测试,保证代码的质量。
这样的话,安全就不仅是从最顶层贯彻,还是从底层做起,从而实现最小颗粒度的安全,最终保证整个系统的安全。
Nullmax在量产工程上还有许多独特的实践,比如把控技术全局的系统工程团队,将问题扼杀在摇篮的感知测试团队,等等。所有这些流程、方法、工具、经验乃至团队的组合搭配,共同构成了Nullmax深厚的量产工程能力,让自动驾驶的落地变得规范而高效。