| 栏目说 |

3月起,小马智行自动驾驶技术沙龙活动相继开启,带来数场干货满满的技术分享。分享主题涉及自动驾驶研发的方方面面,从系统基础架构、高精度地图与定位到大数据、感知、路径规划等。

为了传播这些好内容,今天起,小马智行公众号推出新栏目“攻城狮说”,在这里,你将看到可爱又专业的工程师们带来前沿精彩的技术分享!

 萧伯纳曾说:“你有一个苹果,我有一个苹果,我们交换各自还是只有一个苹果;你有一种思想,我有一种思想,我们交换每人就有两种思想。”

1+1>2,让分享引领进步。

攻城狮说 #01期

工程师 | 李衡宇(小马智行北京研发中心负责人,目前负责小马智行自动驾驶整体技术研发,四川大学电子信息学硕士,曾获“百度最高奖”。

本期划重点

»  由0说起:从科研到工业界

»  原型车标志着从0到1吗?

»  自动驾驶的通关升级

»  走进千家万户的进阶之路


由0说起:从科研到工业界

汽车是1886年诞生的,卡尔本茨先生建造了人类历史上的第一辆汽车,到现在只有短短130多年的历史。

人类首次尝试自动驾驶的时间为1925年,当然这不是为了展示人工智能,而是用来展示无线电技术,它是用后面一辆车的无线电来控制前面一辆车的行为。之后的很多年,技术还是达不到让车辆自主行驶的水平。

往往很多新事物的产生,都发端于科幻。比如,小说《海底两万里》中描绘了一艘神奇的潜水艇,其实成书的时候还没有潜水艇,但是在短短的一段时间之后潜水艇就真的出现了,所以科幻和科学是有密切关系的。自动驾驶也一样,在现实中还没有出现自动驾驶车辆的时候,科幻先描绘了自动驾驶的未来。

1982年的美剧《霹雳游侠》,90年代引入中国,当时也是比较火热的一部剧,里面就有描绘自动驾驶的片段。

科研与DARPA挑战赛

20年以后,在科研上,就出现了这样的汽车,最著名的就是  DARPA Challenge。DARPA 是美国国防部下属的研究机构,很多对世界产生巨大的影响的技术,比如GPS 系统,UNIX,甚至互联网本身都可以追溯到DARPA的资助项目。

DARPA 在2004年第一次举办了无人车挑战赛,在一个沙漠路段,让自动驾驶汽车完成行驶,当时没有车辆完成挑战。

但是到了2005年,有5个团队达成了目标。到2007年,开始挑战模拟的城市道路,并且需要在限定时间内完成,这个挑战赛的难度越来越大,并且开始有科研机构参与进来,其中最著名的就是斯坦福大学和卡耐基梅隆大学的研究团队。现在很多自动驾驶领域的大咖,都是当时研究团队里的研究生和教授。这里列举几位:Thrun被誉为谷歌无人车之父;Urmson曾任Waymo的CTO,后来创建Aurora;David Hall看到挑战赛上摄像头表现不佳,于是发明了Velodyne激光雷达;Levinson当时还是Thrun的研究生,后来创建了Zoox。他们也贡献了自动驾驶领域早期最有参考价值的文献,列举一些:

  • “Towards 3D Object Recognition via Classification of Arbitrary Object Tracks”

  • “Tracking-based semi-supervised learning”

  • “Towards fully autonomous driving: Systems and algorithms”

在科研之后,工业界就开始关注这件事情。当然最近十几年还有其他因素让自动驾驶成为可能。

 车辆技术:汽车的电子化和电动化。因为自动驾驶很多程序是需要电控系统的,如果是传统的液压或者机械控制方式,在反应速度和控制难度都会大很多。

 算力&芯片:算力的提升和芯片技术的进步,最有代表性的就是GPU。

◆ 传感器:比如激光雷达,让自动驾驶能够达到更好的感知效果。

 大数据:互联网高速发展带来的大数据技术。

所有的这些再结合机器学习算法的进步,让自动驾驶成为可能,于是工业界开始进入这一领域。

工业界

第一个是 Google,它在2009年进入这一领域,并且收购了上述两个最优秀的大学科研团队。Google 的自动驾驶技术领先于世界直到今天,和此不无关系。随后,其他的公司也陆续进入了这一领域。

主要分为三类公司:高科技公司、汽车的一级供应商和主机厂。由于最优秀的团队被谷歌收了,很多公司只能通过参考刚才提到的早期文献,打造了自己的原型车。


原型车标志着从0到1吗?

当原型车出来之后,是否就是实现了自动驾驶的从0到1呢?

不是的,现实非常骨感。即使根据前面的论***出了原型车,在路上可能会遇到逆行的电动车。而这在DARPA挑战赛里是不存在的。

逆行的电动摩托车

还有下面这个场景,晚上行驶时遇到一辆三轮车,车上装满了庞大的货物,这对人工智能也会是一个挑战——如何判断这到底是个什么物体,并作出正确的反应。

载满货物的三轮车

还有红绿灯,我们会发现每个城市,甚至不同的区域,红绿灯都有不同的模式,有各种的形状,以及逆光等等,都需要算法来解决。

举个我们在实际路测中碰到的丧心病狂的例子,上图中最右边的红绿灯,大家可以看到好像是个绿灯,但真实的情况这个红绿灯坏了是不亮的,但是反绿。如果自动驾驶汽车要安全行驶就必须要解决这些问题,而这些都是前面那些论文里不曾提及的。

工业界打造自动驾驶汽车,最终的目标一定是商业化,并且创造市场价值。这不同于一个研究,为了实现商用,需要不断扩大测试车队规模,扩大路测范围,增加行驶里程,覆盖更多运营时段,这带来很多工程上的挑战。这里只是列举了其中一些:稳定性、可靠性、可扩展性、自动化、复杂场景处理、Corner case、大规模地图生成、地图增量快速更新、大数据存储和计算、BI、HMI、Control Center,所有的这些都需要我们去面对。

自动驾驶的通关升级

迭代

从第一辆的奔驰车到五六十年代的奔驰车,再到现在的奔驰车,需要一次次的迭代。

类比一下汽车换代,小马智行第一辆自动驾驶原型车就是上图中左边这辆车,但是我们最终的目标,是达到最右边或者中间的状态,虽然都是自动驾驶汽车,但是有非常大的不同。比汽车换代更难的是,我们的系统在升级换代时,是需要保持同步的测试的,就像给一辆在高速行驶中的汽车换轮子。

快速迭代的流程

小马智行会有一个非常快的迭代和流程,一个工程师如果要开发一个功能,或者修复一个 bug,会先在代码上做更新,然后在模拟仿真的环境下测试,测试的环境或者场景来自我们从各个地方采集的数据,如果都完成了之后,我们会进行场地测试或者路测,来验证是否达到预期,中间任何步骤如果不符合预期,会重新回到第一步骤,然后再次验证。

实际这个流程是非常快的,一般当天就会有结果。如果测试结果通过,每周都会同步到我们所有的测试车辆上。并且每个工程师都可以独立、并行地来做这件事情,这保证了一个非常快的迭代节奏,让我们的技术快速进步,日新月异。

这是软件的迭代节奏,硬件上虽然不如软件这么快,但是我们也在保持一个非常快的节奏,两年的时间,已经迭代到第三代。 

车载系统

在技术上,我们也做了很多的创新,比如车载操作系统,我们放弃了 ROS(机器人操作系统),打造了自己的 PonyBrain 操作系统,目的是让系统更好地适应自动驾驶的场景。

ROS 是一个分布式系统,时序无法保证,这跟自动驾驶集中式的处理相悖,另外,我们自己打造的系统会有更高的效率。从我们实测来看,在同样的场景,我们系统的性能要高一个数量级,这使得我们有更多的空间留给算法使用并且更加安全,因为车载计算的实时性对于高速行驶的汽车至关重要,0.1秒的时间就会产生几米的误差。 

数据基础架构

在数据上,我们也面临非常大的挑战,首先它跟互联网数据一样都很大,单辆车就会产生 PB 级的数据,远远多于一个互联网用户产生的数据,其来源也和互联网数据不同,它的数据来自于客户端、大量的传感器数据以及模块运行日志。所以我们会自己打造一套数据系统,当然也会利用之前已经有的技术以及互联网的经验积累。

仿真系统

仿真系统,这个对自动驾驶研发也非常重要,如果要保证算法的快速迭代,就必须有强大的仿真系统。否则验证过程就会很慢,比如很多极端场景验证的代价很高,做大量实测的时间周期很长。

上图左边显示的是我们路测时候的场景,所有我们在路测过中认为是很重要的场景或者 case,都会收集到仿真系统中,所有代码的改动,都会触发重新测试这些 case,它可以保证我们的系统是进化的,而不是解决了一个问题,又冒出另外一个问题。仿真系统还有另外一个功能就是可以创造一些场景,因为某些场景在现实中是很难收集得到的。

高精度地图

高精地图也是一个绕不开的话题,与传统导航地图相比,自动驾驶所需的地图数据量非常大,并且要求厘米级的精度,而导航地图到米就足够了。

最后就是更新的频率,导航地图可能一个月更新一次,对于自动驾驶,我们最早是天级别的,后来发现不够,又采用增量和全量更新的方式做到了小时级别。后来发现小时级还是不够,因为经常会有人把路封住,比如修路,这时单纯靠感知的能力不是特别理想,如果我们的第一辆车感知到这个场景,我们就会上报到控制中心,再下发到其他所有车辆,告诉他们这个地方是不通的,需要避开,从而达到分钟级别的响应。

传感器融合

传感器融合,最核心的传感器有毫米波雷达,摄像头,激光雷达等,这几个传感器都有各自的优缺点,目前还无法互相取代。那么如何去使用这些传感器,达到安全驾驶,我们的思路是把传感器的数据融合起来。

这里展示的是,把激光雷达的数据和摄像头的数据进行了融合。激光雷达的一个特性是有非常准确的距离数据,摄像头的优点是分辨率非常高,并且有色彩和纹理。如果能把更多类的传感器数据融合在一起,那么后面无论是传统方法还是深度学习方法,都能取得一个更好的效果,从源头上解决感知效果的问题。

当然这里有很多很难的技术,比如传感器的标定,我们需要把所有的传感器结果投影到一起,确定它们之间的 3D 关系,是一个很难的问题。还有就是时间的同步,每种传感器触发的时间都是不一致的,如果误差在零点零几秒,我们就无法做到图中显示的精确融合。

走进千家万户的进阶之路

上图数据来源是加州车辆管理局(DMV)年初公布的《2018年自动驾驶接管报告》,里面包含了2018年在加州获得牌照进行测试的自动驾驶公司的行驶数据(不包括中国路测的数据),其中最重要的两个数据是里程和 MPI ( 平均多少公里以后需要人工接管,这个数据越高越好,表示车辆智能化程度越高 ) 。通过一系列创新和迭代,小马智行自动驾驶技术水平日益精进,位列第五。

Pony.ai 在探索一个未来自动驾驶的可能落地模式:自动驾驶出行(Robotaxi)。这里的技术挑战是什么呢?在很多公司的展示中,我们看到的是从 A 点到 B 点的展示,它只有一条固定路线,甚至是固定车道,并且容易过度拟合。而小马智行现在已经能实现区域内多点动态寻路,面临的场景是该地区内的任何路线或车道,复杂性呈指数级增长。

2018年12月,小马智行发布了 PonyPilot 项目的同名内测版小程序。通过小程序,试乘者在覆盖区域内可以自由选择想去的目的地。目前除了内部员工外,该小程序的权限为邀请制,未来考虑开放为可自由下载。

PonyPilot 内测版小程序

自动驾驶的发展可能会有这样的几个阶段:最早的就是原型车或者普通的展示;然后有些公司会往前走,做一个优秀的展示;第三个阶段就是我们现在在努力实现的,打造自动驾驶车队的运行,只有通过这个阶段来验证系统的可靠性,去不断的收集数据,不断的算法迭代,才有可能达到商业化。自动驾驶无法从一个优秀的展示,直接跨越到商业化产品,所以中间的阶段是目前头部公司一直在努力达到的一个阶段。

这个阶段做好之后就会尝试在某个城市或区域进行商业化运营,这时自动驾驶就会真正进入到人们的生活,并形成闭环。

最终自动驾驶会无处不在,智慧交通、智慧城市也会真正的实现,也许到那时,在公共道路上手动驾驶汽车将是非法的,就像现在在马路上骑马一样。

我们期待着这一天的到来,谢谢大家。