当量产慢慢在靠近:怎样的自动驾驶方案更「有戏」?
2019-10-21 博客文章

在过去差不多十年的时间里,自动驾驶取得了飞速的发展和进步,这项汽车与计算机极致融合的产物,开始从科研走向应用。尤其是近两年,自动驾驶慢慢告别了“期货”时代,那些将要到期的flag,催促着技术驶向量产。

但是“科研千样好,量产万般难”,自动驾驶方案真正实现落地应用却是一件无比复杂的事情,远胜于开发原型方案。让汽车能够真正安全、高效地自动驾驶,适用于真实的行驶场景,需要精耕无数细节,打造面向量产的自动驾驶解决方案。

这也意味着,从硬件到软件,从模块到整体,从开发到应用,从测试到迭代,自动驾驶方案的量产容不下一块短板。在近日的SAE 2019汽车智能与网联技术国际学术会议上,Nullmax技术总监苗乾坤博士发表了题为《面向量产的全栈自动驾驶解决方案》的演讲,针对如何全方位打造可量产的方案进行了深入的介绍。


智能驾驶新命题

作为最终的使用者,消费者对于自动驾驶有着各种各样的思考,他们不仅关心用到了哪些技术,技术是否足够安全,用户体验是否够好,能否满足消费者的需求、解决痛点,同时他们也像行业专家样,同样关心着:技术到底能不能量产和大规模的使用?


现阶段用到的智能驾驶技术,大多还停留在L2级别的自动驾驶,如预警、纵向控制这些功能。而到2020年、2021年时,智能驾驶需要解决的问题,将会是去处理一些复杂场景的应用,把横向控制也更多地加入到智能驾驶中。

此外,城市道路或者高架路上拥堵时处理近距离的启停、cut-in等,以及自动泊车功能,都是接下来自动驾驶有望量产的主要功能。

这些功能有哪些关键的地方呢?

安全始终是第一位。自动驾驶汽车是否足够安全,决定是否可以放心使用,功能可否大规模地应用,以及能否持续地发展给大家以信心。所以我们重点思考如何去形成冗余的世界模型以及安全的驾驶规则。

第二点是高效。高效包含两个层面的含义:一是高效地开发自动驾驶功能;二是自动驾驶的功能是否足够丰富实用,可以满足日常的需求,高效地解决用户在出行中的痛点。

第三点是经济。车厂对此的考虑会比较多,因为车厂对成本的控制和性价比的要求非常高,所以如何降低成本、提高方案的性价比,是决定自动驾驶能否量产的第三大关键。

如今的车辆上其实都已经有了一些智能驾驶的功能,所以也有设想:可否通过升级现有车辆去实现更多的自动驾驶功能?比如从L2升级到L2+,升级到L3,甚至是L4、L5级别的自动驾驶功能?其实,这里面有一定难度。

首先,现在的L2系统几乎都是使用的一套适用于原有功能的架构设计,与L3、L4等更高级别的自动驾驶相比,两者之间的架构区别较大。比如,现在常使用1个前置摄像头加1个前置毫米波雷达,实现车辆纵向的控制的一些功能;或是使用鱼眼相机、环视系统,做泊车、环视的解决方案。但是当涉及到更高级别的自动驾驶时,它的局限性会显现出来。

其次,现在的开发模式,主要是由供应商提供一整套解决方案,如果再进行升级,或是融合一些自己的技术或其他供应商的方案,将会非常困难。因为彼此的架构、设计的理念,并不一样。

所以,需要一套面向量产的全栈的解决方案,可以对整个系统进行优化,进行合理的配置规划,以实现功能的差异化,满足不同用户的需求。


从场景和功能出发

Nullmax希望通过可量产的自动驾驶全栈解决方案,打造安全、高效、经济的出行方式,为大众提供真正的便利和舒适。

目前,Nullmax主要发布了两大方面的应用:一是MAX 1.0,面向前装量产提供自动驾驶功能的解决方案;二是自动驾驶共享出行,我们已经在上海临港地区完成了Robotaxi试运营项目的第一阶段工作。

MAX1.0是一套非常完整的自动驾驶系统,从整个系统的启动、退出,到环境感知、规划、控制,以及车辆的状态监控、驾驶员监控,还有交通标识,如红绿灯的检测,全部包含其中。


整套系统的功能主要应用于三类场景:一是高速代驾(HWP),在高速公路或者高架路这种结构化道路上帮助驾驶员完成长距离驾驶的任务,它包含有ACC、AEB、LCC等常见的一些L2的功能,以及自主变道、自动超车,上下匝道、进出匝道等更高级、复杂的功能。

二是拥堵跟车(TJP),在面对交通比较拥堵的情况时,系统能够实现智能地启停,应对近距离的cut-in,帮助驾驶员完成驾驶操作。

三是自主泊车(AVP)。它可以在停车场自动寻找停车位,自动地绕障,还可以通过APP一键叫车,到指定地点接上驾驶员或乘客。

这三类场景是我们与车厂、Tier1交流后,一致认为在未来短期内可以实现的L2+及以上功能。

前装量产之外,我们同步在做L4及更高级别的自动驾驶共享出行。方案采用基于摄像头的以视觉为主、多传感融合的感知,不使用激光雷达,目前已经在准备试运营。它可以极大程度地丰富当前的交通出行体系,为消费者提供更加安全、高效、便捷的出行体验。

与高速代驾、拥堵跟车、自主泊车这些前装方案的功能相比,Robotaxi有不一样的难点,比如需要处理红绿灯,会遇到车道线磨损的情况,会面对复杂的车流、人流,需要处理十字路口、靠边停车等各类复杂的工况。


可量产的全栈方案

自动驾驶方案需要用到大量技术,系统需要配置传感器,基于传感器会有感知算法,感知出来结果后构建世界模型,形成车辆对周围世界的理解,接下来通过决策规划来安排一系列的动作完成从A点到B点的过程,最后基于规划的结果去操作车辆。

Nullmax方案可以采用不同配置,根据客户的实际需求去做定制化开发。比如打造功能齐全的系统时,可以使用12个摄像头、5个毫米波雷达、12个超声波雷达,而做降级使用的功能时可以减少硬件的数量,比如5个摄像头、5个毫米波雷达、12个超声波雷达。


在Nullmax的方案中,前置有中远近三种不同距离的摄像头,车身周围也有对应的摄像头,包括鱼眼相机,从而实现对车辆周围360度的环境感知。在我们看来,摄像头包含了足够多自动驾驶所需的信息,是极其重要的基础传感器。

从整个系统的设计阶段开始,Nullmax使用的就是可量产的嵌入式ECU,而不是为了满足早期的开发需要、提高初期的开发效率而使用工控机。虽然工控机算力更强,但它在实际落地的时候无法量产应用。

Nullmax的方案将QNX作为基础的操作系统。计算机操作系统有Windows、Linux,但是汽车系统跟其他消费级别的操作系统不太一样,它对实时性、安全性要求非常之高。目前,很多车上关键的控制系统、导航系统,使用的也都是QNX,因为它安全稳定、实时性好,所以它也是众多车厂的基础操作系统的选择。

为了满足算法的开发需求,还需要在基础操作系统上对底层的硬件进行抽象,所以Nullmax基于此开发了自己的自动驾驶平台MaxOS。它比ROS更适用于自动驾驶,Nullmax开发的这样一套软硬件的中间件,可以实现高性能的计算、高并发的处理。同时,它还有众多其他的优势,如实现模块化的开发。因为有了中间件以后,方案可以移植到不同的平台上,应用至不同厂家的车辆;同时,如果客户已有了某些模块,无需重复购买,也可以将这些已有模块接入进来。

在自动驾驶平台之上,运行着各类感知、规划、控制的算法。

比如感知算法,会有目标检测、图像分割、目标跟踪、在线标定、融合、建立世界模型等等。举例来说,摄像头或者雷达在安装时需要进行标定,但是车辆长期在路上行驶,会因为振动等原因造成传感器位置的变化,一些参数需要再标定。但如果车辆售出之后还需要经常去4S店标定的话,这并不是一个明智的量产做法。所以需要开发一套在线标定的算法,让车辆行驶的时候可以后台自动采集数据进行标定,标定参数实时更新,不对驾驶性能造成影响。此外,还有SLAM技术、ISP技术等等,都会涉及和应用。

在融合感知信息时,我们会进行三个层面的融合:

第一层是同一个传感器里,用不同的算法做计算,比如用深度学习的算法或者图像处理的算法去做一些检测。

第二层是不同传感器之间。不同传感器可能是同一类型,也可能是不同类型。比如前置的3个摄像头的视角不一样,它们对不同位置物体的检测精度和结果可能也不一样,它们之间可以融合。又比如,摄像头和毫米波雷达的特性不同,对障碍物的物体探测和测距测速各有所长,通过这两种不同类型的传感器融合可以得出稳定可靠的结果。

第三层是世界模型层面。车辆周围的物理世界遵循着一定的物理规律,比如一辆车不可能平白无故地出现在正前方,而是有一个连续变化的过程,所以需要考虑到这个过程,并且其速度、运动学特性都是在一定范围内变化。从这个层面再进行一次融合,可以得到一个更加安全冗余的世界模型。

Nullmax方案的特点之一是不依赖高精地图。在自动驾驶领域,高精地图主要用来解决三个问题:一是辅助感知,二是车道级的路径规划,三是高精定位。而通过视觉感知、多传感器融合、车道线识别、局部路径规划、导航地图、视觉定位等方法在不依赖高精地图的情况下也可以实现自动驾驶。

“不依赖”并不意味着“不使用”,如果有高清地图接入系统会更安全。“不依赖”主要是考虑到高精地图的更新有一定周期,完全依赖高精地图才能行驶的话会存在一些问题,比如在遇到道路的临时变化、临时施工或车道线变更等情况时,如果地图未及时更新导致自动驾驶车辆无法安全行驶的话,这并不是一套安全的方案。

另一个考虑就是,车辆并不是任何时候都需要比较高精度的定位和地图。比如在高速上的大直道行驶时,只需要比较精确的横向定位信息,对纵向信息的精确度和依赖性可能并没有那么高,普通的GPS就能满足需要。但在一些复杂的路口,对精度要求比较高,这时可以借助视觉SLAM融合GPS/IMU等方法去实现高精定位。

换言之,在有高精地图的情况下车辆可以驾驶得更好,而在没有高精地图的时候,车辆依然可以安全行驶。这是我们的一大初衷。

另一特点是不依赖激光雷达。激光雷达价格昂贵,大多也不满足车规级标准,另外在高速场景下使用激光雷达也有一定局限性。激光雷达在识别近距离障碍物时激光点云比较稠密,但在识别远处障碍物时点云非常稀疏,高速行驶对感知距离的要求比较高,可能会存在一些安全隐患。所以,我们认为激光雷达可以使用,但是在没有激光雷达的情况下车辆也应该可以很好地行驶,它相当于另外一层冗余。

此外,还有非常重要的规划、控制,涉及到的技术主要有行为决策、路径规划、速度规划、行为预测,基于这些决策规划对车辆做横向和纵向的控制,进而实现一些复杂的功能。比如进出匝道,通过复杂的十字路口,处理一些国内常见的近距离cut-in,实现一些大车流情况下的主动变道。

除了预测未来时间窗口的场景变化外,像是运用多种策略处理不同的cut-in场景,也是规划、控制方面比较有技术挑战的地方。


面向落地通盘考虑

Nullmax的测试从场景出发,构建了一套完备丰富的场景库,包括日常行驶的场景、从事故搜集的高风险场景、行业的标准场景等。Nullmax会对场景进行定量化和表达化的分析,基于一套自主研发的场景描述语言,用类似编程的方式进行构建。


在场景库的基础上,Nullmax会对方案进行各种层次的测试。既会有模型、软件、硬件层面的测试,也会有实车的测试。根据Nullmax的测试体系制定的评价方法和标准,我们会从安全、性能以及用户体验三个维度去衡量功能的好坏。

相比于仅关注测试里程或是测试数量,我们更关注有效测试的场景。在收集了大量场景后,我们将筛选出关键的场景,像上下匝道,高速过弯、换道,通过环岛,都是我们重点测试的场景。

为了确保方案的安全性,Nullmax从功能安全、预期功能安全、网络信息安全这三个维度进行通盘的考虑。Nullmax并不是在整个系统开发之后再去考虑安全,而是从系统的功能、算法设计之初,就将安全的理念贯彻其中,因为这是整个研发过程中就应该去考虑和落实的关键地方。

除此之外,系统还会进行另一层的验证或限制。因为即使算法考虑到了安全,但最终它对控制器发出的指令或数据也有可能是非正常的,或是不符合一些控制的要求,这需要再做一次额外的检查,如果有问题的话则进行一些限制。

产品功能通常需要不断地进行迭代,因此Nullmax自主研发了所有需要的算法和软件,打造全栈式的方案。因为某些模块如果依赖于第三方的话,整体的开发效率可能会受到影响,比如对系统进行升级或定制化开发时,需求难以第一时间得到响应。所以Nullmax自主研发了整套完整的技术栈,包括感知、规划、控制的算法,整体系统的运行,模块之间的信息交流,以及软件在车载嵌入式设备上的性能优化。

产品迭代的另外一个特点是,自动驾驶行业已经度过了比拼算法的阶段,如今更多的是基础架构和软件生态的比拼。因此打造好的数据框架,源源不断地收集数据,把数据作为输入去迭代模型和算法,至关重要。

数据驱动需要打造完整的闭环,建立从数据采集、数据清洗、数据标注,到模型训练、模型测试,然后再部署到车上的一整套系统和技术架构。车辆行驶在路上时,将可以持续地采集问题场景的数据,然后去不断地循环迭代,持续升级功能。

同时,我们希望与Tier1、车厂合作,一起建立自动驾驶的软件生态。以往开发车辆功能和部件的模式是供应商供货、车厂去集成,而现在车厂也有软件和算法开发的需求,需要软件厂商、硬件厂商、车厂三方合作,推动自动驾驶功能的快速落地。

Nullmax的产品开发遵循汽车软件开发领域的ASPICE流程。因为规范的流程可以保证过程的可追溯性、产品的可靠性、测试的完备性以及明确的责任划分,避免遇到问题后难以找到根源或是相应的应对策略。

此外,Nullmax的方案也可以让智慧的汽车与智慧城市、智慧交通融合起来,实现协同感知、协同规划,获得比单车更好的驾驶效果,解决单车中可能存在的感知范围受限、车载计算能力有限等问题,进一步提升安全性。


随着行业的不断发展,量产已经逐步成为了自动驾驶最关键的关键词之一。量产需要解决大量工程化的难题,打造真正成熟好用的产品,而不再只是验证可行与否,这与科研或预研有着巨大的差别。Nullmax相信,可以量产的方案才是真正的好方案。