About Pony.ai:
从 0 说起
汽车是 1886 年诞生的,卡尔本茨先生建造的人类历史上的第一辆汽车,到现在只有短短 130 多年的历史。人类首次尝试无人驾驶的时间为 1925 年,当然这不是为了展示人工智能,而是用来展示无线电技术,它是用后面一辆车的无线电来控制前面一辆车的行为。之后的很多年,技术还是达不到让车辆自主行驶的水平。往往很多新事物的产生,都发端于科幻。比如,小说海底两万里中的潜水艇,成书的时候还没有潜水艇,但是在短短的一段时间之后潜水艇就出现了,所以科幻和科学是有密切关系的。自动驾驶也一样,在现实中还没有出现自动驾驶车辆的时候,科幻先描绘了自动驾驶的未来:
- 3.0x
- 2.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
这个是 1982 年的美剧《霹雳游侠》,90 年代引入中国,当时也是比较火热的一部剧,里面就有描绘自动驾驶的片段,如上。
很快过了 20 年以后,在科研上,就出现了这样的汽车,最著名的就是 DARPA Challenge,DARPA 是美国国防部下属的研究机构,现在所使用的 GPS 系统,就是这家机构在 70 年代资助的。DARPA 在 2004 年第一次举办了无人车挑战赛,在一个沙漠路段,让自动驾驶汽车完成行驶,当时没有车辆完成挑战。但是到了 2005 年,有 5 个团队达成了目标,到 2007 年,开始挑战模拟的城市道路,并且需要在限定时间内完成。这个挑战赛的难度越来越大,并且开始有科研机构参与进来,其中最著名的就是斯坦福大学和卡耐基梅隆大学的研究团队,现在很多自动驾驶领域的领导者,都是当时研究团队里的研究生和教授。他们也贡献了自动驾驶领域最有参考价值的文献,如:
“Towards 3D Object Recognition via Classification of Arbitrary Object Tracks”
“Tracking-based semi-supervised learning”
“Towards fully autonomous driving: Systems and algorithms”
所以在科研之后,工业界就开始关注这件事情,在最近的十几年还有很多事情让无人驾驶成为可能:
车辆技术:汽车的电子化和电动化。因为自动驾驶很多程序是需要电控系统的,如果是传统的液压或者机械控制方式,在反应速度和控制难度都会大很多。
算力 &芯片:算力的提升和芯片技术的进步,最优代表性的就是 CPU。
传感器:比如激光雷达,让自动驾驶能够达到更好的感知效果。
大数据:互联网带来的大数据技术。
所有的这些再结合机器学习算法的进步,让自动驾驶成为可能,并让工业界进入这一领域。
第一个是 Google,在 2009 年进入这一领域,并且收购了上述两个最优秀的大学科研团队。因此 Google 的无人车领先于世界,直到今天。
其他的公司也陆续进入了这一领域:
主要分为三类公司:高科技公司、汽车的一级供应商和主机厂。通过早期的文献,这些公司打造了自己的原型车。
当原型车出来之后,是否就是实现了从 0 到 1?不是的,原因可以参考上面的例子:现实非常骨感,即使我们根据前面的论文做出了原型车,在路上会遇到这样的情况,如逆行的电动车,这在挑战赛里是没有的。
还有这个场景,可以看到晚上会有一辆三轮车,并且上面会有非常庞大的物体,这对人工智能会是一个很大的挑战:如何判断这到底是个什么物体。
还有红绿灯,我们会发现每个城市,甚至不同的区域,红绿灯都有不同的模式,有各种的形状,以及逆光等等,都需要算法来解决,还有个更可怕的情况,如最右边的红绿灯,大家可以看到是个绿灯,但是真实的情况这个红绿灯坏了是不亮的,但是反绿。如果自动驾驶汽车要安全行驶就必须要解决这些问题,这些都是前面那些论文里不曾提及的。
工业界打造自动驾驶汽车,一定会商业化,并且创造市场价值,这不是做一个研究,所以最终的目标一定是:扩大车辆的数量,覆盖的范围,行驶的里程,运营的时段。所以这就带来了很多工程上的挑战。这里只是列举了其中一些:稳定性、可靠性、可扩展性、自动化、复杂场景处理、Corner case、大规模地图生成、地图增量快速更新、大数据存储和计算、BI、HMI、Control Center,所有的这些都需要我们去面对。
打个比方,就是从第一辆的奔驰车->5、60 年代的奔驰车->到现在的奔驰车。我们需要一次次的迭代。类比一下汽车换代,也许我们做出的第一辆原型车就是左边这辆车,但是我们最终的目标,是达到最右边或者中间的状态,虽然都是自动驾驶汽车,但是有非常大的不同。比汽车换代更难的是,我们的系统在升级换代时,是需要保持同步的测试的。
方法是我们会有一个非常快的迭代和流程,一个工程师如果要开发一个功能,或者修复一个 bug,会先在代码上做更新,然后在模拟仿真的环境下测试,测试的环境或者场景来自我们从各个地方采集的数据,如果都完成了之后,我们会进行场地测试或者路测,来验证是否达到预期,中间任何步骤如果不符合预期,会重新回到第一步骤,然后再次验证。实际这个流程是非常快的,一般当天就会有结果。如果测试结果 OK,每周都会同步到我们所有的测试车辆上。并且每个工程师都可以独立、并行的来做这件事情,这就保证了一个非常快的迭代节奏。
这是软件的迭代节奏,硬件上虽然不如软件这么快,但是我们也在保持一个非常快的节奏。
在技术上,我们也做了很多的创新,比如车载操作系统,我们放弃了 ROS,打造了自己的 PonyBrain 操作系统,目的是让系统更好的适应自动驾驶的场景。ROS 是一个分布式系统,并且它的时序是无法保证的,跟自动驾驶集中式的处理是相悖的,所以用我们自己打造的系统会有更高的效率,从我们实测来看,在同样的场景,我们系统的性能要高一个数量级。保证了车辆会有更大的空间去做算法的开发,并且能够保证安全性。如果实时性比较差的话,车辆在高速行驶中的安全性就得不到保证,因为 0.1 秒的差距就有产生很大距离的误差。
在数据上,我们也面临非常大的挑战,首先它跟互联网数据一样都很大,单辆车就会产生 PB 级的数据,远远多于一个互联网用户产生的数据,并且来源和互联网数据也不同,它的数据来自于客户端、大量的传感器数据以及模块运行日志。所以我们会自己打造一套数据系统,当然我们会利用之前已经有的技术,以及互联网的经验积累。
仿真系统,这个对我们也是非常重要,如果要保证算法的快速迭代,没有仿真的验证就会很慢,原因是很多的验证不可能去做实测,左边显示的是我们路测时候的场景,所有我们在路测过中认为是很重要的场景或者 case,都会收集到仿真系统中,所有代码的改动,都会触发重新测试这些 case,它可以保证我们的系统是进化的,而不是解决了一个问题,又冒出另外一个问题。仿真系统还有另外一个功能就是可以创造一些场景,因为某些场景在现实中是很难收集得到的。
高精地图也是一个绕不开的话题,与传统导航地图相比,我们的数据量非常大,并且要求厘米级的精度,而导航地图到米就足够了。最后就是更新的频率,导航地图可能一个月更新一次,对于自动驾驶,我们最早是天级别的,后来发现不够,又采用增量和全量更新的方式做到了小时级别,后来发现小时级还是不够,因为经常会有人把路封住,比如修路,这时单纯靠感知的能力不是特别理想,如果我们的第一辆车感知到这个场景,我们就会下发到其他所有车辆,告诉他们这个地方是不通的,所以我们可以达到分钟级别的响应。
传感器的融合,最核心的传感器有毫米波雷达,摄像头,激光雷达等,这几个传感器都有各自的优点,目前还无法互相取代。那么如何去使用这些传感器,达到安全驾驶,我们的思路是把传感器的数据融合起来,这里展示的是,把激光雷达的数据和摄像头的数据进行了融合。激光雷达的一个特性是有非常准确的距离数据,摄像头的优点是分辨率非常高,并且有色彩和纹理,如果能把更多类的传感器数据融合在一起,那么后面无论是传统方法还是深度学习方法,都能取得一个更好的效果,从源头上解决感知效果的问题。当然这里有很多很难的技术,比如传感器的标定,我们需要把所有的传感器结果投影到一起,它们之间的 3D 关系,是一个很难的问题。还有就是时间的同步,每种传感器触发的时间都是不一致的,如果误差在零点零几秒,我们就无法做到图中的情况,做不到时间上的同步。
这是我们通过一系列创新和迭代达到的效果,这是加州车辆管理局(DMV)公布的,各家在加州获得牌照进行测试的一些自动驾驶公司的数据(不包括中国路测的数据),最重要的两个数据是里程和 MPI ( 平均多少公里以后需要人工接管,这个数据越高越好,表示车辆智能化程度越高 ) 。
这是 Pony.ai 部分路测片段,包含了晚高峰、动态寻路和雨夜等场景:
- 3.0x
- 2.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
Pony.ai 部分路测片段
Pony.ai 在做的一个未来自动驾驶的可能落地模式:自动驾驶出租车(Robotaxi)。这里的技术挑战是什么呢?在很多公司的展示中,我们看到的是从 A 点到 B 点的展示,它只有一条固定路线,甚至是固定车道,并且容易过度拟合。而区域内出租车是多点动态寻路,面临的场景是该地区内的任何路线或车道,复杂性呈指数级增长。
2018 年 12 月,我们发布了 PonyPilot 项目的同名内测版小程序。通过小程序,试乘者在覆盖区域内可以自由选择想去的目的地。目前除了内部员工外,该小程序的权限为邀请制,未来考虑开放为可自由下载。
- 3.0x
- 2.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
PonyPilot 体验
PonyPilot 内测版小程序
离 1 还有多远
我们自己认为自动驾驶会有这样的几个阶段:最早的就是原型车或者普通的展示,然后有些公司会往前走,做一个优秀的展示,第三个阶段就是我们现在在努力实现的,打造的无人驾驶车队的运营,只有通过这个阶段来验证系统的可靠性,去不断的收集数据,不断的算法迭代,才有可能达到商业化,它无法从一个优秀的展示,直接跨越到商业化产品,所以中间的阶段是目前头部公司一直在努力达到的一个阶段,这个阶段做好之后就会尝试在某个区域进行商业化的运营,这时自动驾驶就会真正进入到人们的生活,到最后才是自动驾驶进入城市或者千家万户。最终的目标还非常遥远(10 年计),但是自动驾驶的商业化没有那么远。
最终自动驾驶会成为一个现实,我们的智慧交通、智慧城市也会真正的实现,也许到那时在道路上开一辆非自动驾驶的汽车是非法的,比如现在在马路上骑马就是非法的。我们期待着这一天的实现,谢谢大家。
作者介绍:
李衡宇,Pony.ai 北京研发中心负责人,四川大学电子信息学硕士,前百度广告搜索部和自动驾驶事业部资深工程师,曾获“百度最高奖(百万美元大奖)”,目前在 Pony.ai 负责自动驾驶整体技术研发。
本文来自 DataFun 社区
原文链接:
https://mp.weixin.qq.com/s/_0wlfAE_Ccf3WOl-DUA1XA
评论 1 条评论