写点什么

自动驾驶从 0 到 1 之路

  • 2019-07-15
  • 本文字数:4128 字

    阅读完需:约 14 分钟

自动驾驶从0到1之路

About Pony.ai



从 0 说起



汽车是 1886 年诞生的,卡尔本茨先生建造的人类历史上的第一辆汽车,到现在只有短短 130 多年的历史。人类首次尝试无人驾驶的时间为 1925 年,当然这不是为了展示人工智能,而是用来展示无线电技术,它是用后面一辆车的无线电来控制前面一辆车的行为。之后的很多年,技术还是达不到让车辆自主行驶的水平。往往很多新事物的产生,都发端于科幻。比如,小说海底两万里中的潜水艇,成书的时候还没有潜水艇,但是在短短的一段时间之后潜水艇就出现了,所以科幻和科学是有密切关系的。自动驾驶也一样,在现实中还没有出现自动驾驶车辆的时候,科幻先描绘了自动驾驶的未来:


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    这个是 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 部分路测片段,包含了晚高峰、动态寻路和雨夜等场景:


    00:00 / 00:00
      1.0x
      • 3.0x
      • 2.5x
      • 2.0x
      • 1.5x
      • 1.25x
      • 1.0x
      • 0.75x
      • 0.5x
      网页全屏
      全屏
      00:00


      Pony.ai 部分路测片段



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


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


      00:00 / 00:00
        1.0x
        • 3.0x
        • 2.5x
        • 2.0x
        • 1.5x
        • 1.25x
        • 1.0x
        • 0.75x
        • 0.5x
        网页全屏
        全屏
        00:00


        PonyPilot 体验



        PonyPilot 内测版小程序


        离 1 还有多远



        我们自己认为自动驾驶会有这样的几个阶段:最早的就是原型车或者普通的展示,然后有些公司会往前走,做一个优秀的展示,第三个阶段就是我们现在在努力实现的,打造的无人驾驶车队的运营,只有通过这个阶段来验证系统的可靠性,去不断的收集数据,不断的算法迭代,才有可能达到商业化,它无法从一个优秀的展示,直接跨越到商业化产品,所以中间的阶段是目前头部公司一直在努力达到的一个阶段,这个阶段做好之后就会尝试在某个区域进行商业化的运营,这时自动驾驶就会真正进入到人们的生活,到最后才是自动驾驶进入城市或者千家万户。最终的目标还非常遥远(10 年计),但是自动驾驶的商业化没有那么远。



        最终自动驾驶会成为一个现实,我们的智慧交通、智慧城市也会真正的实现,也许到那时在道路上开一辆非自动驾驶的汽车是非法的,比如现在在马路上骑马就是非法的。我们期待着这一天的实现,谢谢大家。


        作者介绍


        李衡宇,Pony.ai 北京研发中心负责人,四川大学电子信息学硕士,前百度广告搜索部和自动驾驶事业部资深工程师,曾获“百度最高奖(百万美元大奖)”,目前在 Pony.ai 负责自动驾驶整体技术研发。


        本文来自 DataFun 社区


        原文链接


        https://mp.weixin.qq.com/s/_0wlfAE_Ccf3WOl-DUA1XA


        2019-07-15 17:183067

        评论 1 条评论

        发布
        用户头像
        最好的实施方案是与交通部的系统进行对接,比如 红绿灯控制系统对接,各种系统对接后进行实施。
        2019-07-25 16:44
        回复
        没有更多了
        发现更多内容

        第二周作业

        熊桂平

        极客大学架构师训练营

        第二周架构师训练营作业

        我是谁

        极客大学架构师训练营

        架構師訓練營 week2 總結

        ilake

        架构师训练营第二周作业

        赵孔磊

        电商小游戏火爆,开发者如何快速接入?看这里

        白开水

        egret 淘宝电商 淘宝小程序 淘宝小游戏 电商小游戏

        【架构师训练营第1期 02 周】 作业

        Bear

        极客大学架构师训练营

        架构师训练营第二周作业

        四夕晖

        依赖倒置原则

        架构师1期-框架设计学习总结

        ltl3884

        极客大学架构师训练营

        一个草根的日常杂碎(9月26日)

        刘新吾

        社会百态 生活随想 时评杂谈

        苹果A14 Bionic人工智能算力翻倍,AIOps产品落地加速引领AI生态建设逐步完善

        博睿数据

        人工智能 运维 APM 运维自动化 AIOPS

        Bilibili资深运维工程师:DCDN在游戏应用加速中的实践

        阿里云Edge Plus

        运维 CDN

        华为侯金龙:打造行业智能体,共建全场景智慧

        华为云开发者联盟

        华为云 经济 智能

        2020中国科技峰会系列活动青年科学家沙龙——AI学术生态与产业创新圆满召开

        极客播报

        人工智能 2020 中国科技峰会 青年科学家沙龙 中国科协

        LeetCode题解:589. N叉树的前序遍历,递归,JavaScript,详细注释

        Lee Chen

        大前端 LeetCode

        「架构师训练营」第二周课后练习

        L

        依赖倒置原则(DIP)

        leo

        极客大学架构师训练营

        【API进阶之路】太秃然了,老板要我一周内检测并导入一万个小时的视频

        华为云开发者联盟

        视频 API

        第二周总结

        orchid9

        「架构师训练营」第二周课后练习

        L

        Week 2 作业01

        Croesus

        训练营第二周作业 1

        仲夏

        架构师训练营第二周心得

        CmHuang

        架构师1期-框架设计作业

        ltl3884

        极客大学架构师训练营

        学习笔记:架构师训练营-第二周

        四夕晖

        面向对象 面向对象思想 面向对象编程

        架构师训练营第二周作业

        Shunyi

        极客大学架构师训练营

        深入剖析 | Coroutine原理

        九叔(高翔龙)

        Java 字节码插桩 协程 Coroutine

        面向对象设计原则

        leo

        极客大学架构师训练营

        架构师训练营作业一:食堂就餐卡系统设计

        zjzj2017

        UML

        Week 2 总结

        黄立

        请描述什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

        orchid9

        请用接口隔离原则优化 Cache 类的设计,画出优化后的类图。

        orchid9

        自动驾驶从0到1之路_文化 & 方法_DataFunTalk_InfoQ精选文章