查看原文
其他

直播课程内容 | 无人驾驶行业及Apollo的Overview

David Zhou Apollo开发者社区 2022-07-29


从Apollo 1.0的诞生到Apollo 2.5的发布,逐步解锁了简单城市道路自动驾驶、高速公路自动驾驶等场景的应用,并发布了有关视觉感知的低成本方案赋能更多开发者。


在Apollo一岁之际,Apollo平台产品负责人David Zhou,为开发者讲述无人驾驶行业及Apollo平台的核心技术模块,他在Apollo开放平台建立之初就参与到了整个平台的搭建中,是百度自动驾驶团队早期成员之一。通过他的分享,将帮助更多想要使用Apollo 的开发者,熟悉无人驾驶行业,进一步了解Apollo,方便开发者更好更快的使用Apollo。


以下是David Zhou分享全内容:


(建议在Wi-Fi环境下观看)

https://v.qq.com/txp/iframe/player.html?vid=v068614isna&width=500&height=375&auto=0



无人驾驶行业及Apollo的Overview

 Apollo平台产品负责人 David Zhou 




距离人类学会直立行走至今大概有1百万年的时间,发明轮子至今大概有1000年,发明汽车至今大约有100年……此后,人类在交通运输业中最大的突破,莫过于无人驾驶了,而这项突破预计5-10年便可实现。



据数据显示,93%的交通事故是由于人为原因造成的,而无人驾驶的普及实现,会大大降低交通事故的发生概率。不用为停车难而发愁,道路交通状况更会得到45%的改善。


那么,什么是无人驾驶呢?



根据NHTSA(美国高速公路安全管理局)和SAE(美国汽车工程师学会)分析表明,目前无人驾驶划分L1-L5级别,L1级别为定速巡航,有自动控制功能,以防范车祸;L2级别为固定车道线,有大于2个功能融合成无人控制的危险探测和响应系统;L3级别主要为特定环境下无人驾驶,并判断是否恢复驾驶员模式;L4-L5为完全无人驾驶阶段,可以探测环境并在任意环境下无人驾驶。



其实人类的无人驾驶梦想由来已久,早从1986年开始,卡内基梅隆大学便着手研究无人驾驶技术,尝试做无人驾驶车辆了。之后随着无人驾驶相关技术发展逐步加快,相关科技公司也越来越多。而2017年百度正式开源Apollo自动驾驶平台,更是推动了整个自动驾驶行业发展的进程,让更多开发者参与到这项技术中。



近年来,随着自动驾驶技术发展,大量资本涌入无人驾驶行业,带动来整个行业发展,从大型车厂到科技巨头都在布局无人驾驶。百度在2017年9月发布Apollo 1.5时也提出了“双百计划”,3年内用100亿基金投资100家无人驾驶初创公司,大力扶持开发者发展自动驾驶技术。



同时,Apollo为开发者也搭建了一个自动驾驶平台,开发者可以使用Apollo更好更快的搭建属于自己的系统。在2017年7月Apollo 1.0中开放封闭场地循迹自动驾驶能力和资源,同年9月1.5版本中开放固定车道自动驾驶能力和资源,在2017年底2.0版本中开放简单城市路况自动驾驶能力和资源,今年4月2.5版本中开放限定区域高速道路自动驾驶能力和资源,迭代与发布速度非常快。


Apollo技术框架由4层构成。分别是:


• Reference Vehicle Platform

(参考车辆平台,指一辆能够受电子信号控制的车,我们管它叫线控车)

• Reference Hardware Platform

 (参考硬件平台,包含计算单元、GPS/IMU、Camera、激光雷达、毫米波雷达、人机交互设备、BlackBox等硬件)

Open Software Platform

 (开放软件平台:包括实时操作系统、承载所有模块的框架层、高精地图与定位模块、感知模块、决策规划模块、控制模块)

Cloud Service Platform

 (云端服务平台:包括高精地图、模拟驾驶的仿真服务、数据平台、安全和OTA服务等)


接下来我们通过介绍对应框架中的核心模块,来帮助大家更快了解Apollo。



HD Map



与普通地图不同,高精地图主要服务于自动驾驶车辆,通过一套独特的导航体系,帮助自动驾驶解决系统性能问题,扩展传感器检测边界。目前 Apollo 内部高精地图主要应用在高精定位、环境感知、决策规划、仿真运行四大场景,帮助解决林荫道路 GPS 信号弱、红绿灯的定位与感知以及十字路口复杂等导航难题。目前,Apollo 高精地图的自动化程度已经达到了 90%、准确识别率达到了 95% 以上,预计 2020 年可以覆盖全国所有的重点道路。


* GitHub相关模块地址:

https://github.com/ApolloAuto/apollo/tree/master/modules/map

  相关技术阅读:Apollo 高精地图解析



Localization



有了地图应该怎么做定位呢?目前Apollo用的是这几种定位融合方案。


大家都知道GPS主要依靠卫星定位,但其信号容易受到干扰,如玻璃幕墙会不断反射GPS信号,所以GPS定位精度大概在米级别。为了提高其精度,我们可以通过建立RTK基站,将两者信号做叉分,这样环境因素就可以忽略不计,从而提高GPS的精度到10厘米左右。但光靠RTK也是不行的,因为只有车辆靠近RTK基站范围内10英里左右才能发挥其作用。再加上GPS和RTK的计算结果是实时的,存在可能跳变的因素,这时就需要用到IMU惯性导航了。


它可以根据车辆的位置和各种速度的叠加做积分,这样就可以预算出车辆的行径位置,从而提高车辆定位的精确度。然而遇到桥洞或隧道一些道路时,GPS的信号也会变差,这时候我们需要用点云,或视觉定位。这样通过配合点云地图和实时数据的采集来分析车辆位置,再加上摄像头为主的视觉定位,还有GPS+RTK和IMU的配合,我们的车辆定位就可以达到厘米级的精度。


* GitHub相关模块地址:

https://github.com/ApolloAuto/apollo/tree/master/modules/localization



Sensing and Perception



要使无人驾驶车辆上路,不仅需要知道车辆在哪里还需要了解车辆周边的环境。


这个功能我们是通过Sensor传感器来做到的,目前主流的传感器包括摄像头、雷达和激光雷达。


每一种传感器都是既有长处也有短板。例如摄像头对于障碍物分类有很好的表现,但想对障碍物速度做准确判断,摄像头就很难做到了。对于雷达(Radar)来说,在距离和速度判断上有优势,穿透力非常好,但对于障碍物的分类能力,就比较弱了。激光雷达通过主动发射能量,依靠回波来检测,所以对于判断障碍物的远近,例如暗光条件下障碍物的状态有优势。但是激光雷达目前还非常昂贵。所以,我们要把这些传感器融合在一起,发挥各自所长。


通过多传感器融合我们就可以通过对障碍物的识别、分类和目标跟踪,来感知车辆周围的环境。在Apollo上,多传感器融合依赖于Perception fusion DAG框架。通过构造算法Subnode,将DAG描述连接到一起,开发者就可以完成定制的多传感器感知和融合。


* GitHub相关技术文档地址:

https://github.com/ApolloAuto/apollo/blob/master/docs/specs/3d_obstacle_perception.md

https://github.com/ApolloAuto/apollo/blob/master/docs/specs/perception_apollo_2.5.md

  相关技术阅读:自动驾驶传感器“一哥之争”,这事儿你怎么看?



Planning



基于前面我们所讲述的模块再加上Routing、Prediction,就可以简单地规划一条有效的路径来自动驾驶。首先需要车辆对路况有基本的判断,前方是否可停车、跟随、超车,侧方是否绕道等等,从而确保车辆能够实现安全而高效的决策行驶。

     


这里我们引用之前关于DP路径算法的分享,来帮助开发者了解如何规划出一条有效的路径。


DP速度算法的基本思路是,在DP路径算法生成一条可行驶的路径后,从起点开始,考虑避开路径中的所有障碍物,并且让加减速最为平顺,以最优的速度曲线(即t-s平面中的绿色曲线)安全抵达终点,这也可以使用动态规划的思路求解。


在Apollo中,我们将算法求解过程离散化。这样降低了受道路中心线的影响,适应了复杂路况。解决了decision 的基于规则优化的痛点。通过DP速度算法逻辑,我们可以完成s,t坐标系下的DP规划。在此基础上,进一步做QP优化和迭代调整,就可以得到有效的Planning结果。


* GitHub相关技术文档地址:

https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_path_optimizer.md

https://github.com/ApolloAuto/apollo/blob/master/docs/specs/qp_spline_st_speed_optimizer.md

  相关技术阅读:Apollo Planning模块源代码分析



Vehicle Control



我们将GPS和IMU提供的信息作为输入,处理后生成规划信息(包括路径和速度信息),提供给控制模块使用,然后来实现车辆控制。


那么,如何控制车辆转向及速度呢?这就需要我们了解车辆动力学参数,一是刹车和速度的表,二是油门和加速度的表。从参数图中,我们可以看到最左边,当刹车达到40%~50%以上时,曲线就不是那么平滑了,这是因为车辆中像ABS这样的系统启动了,车辆会有很大的抖动。当车辆有了控制信号之后,我们通过Can Bus通讯协议中的DBC file将信号传递给车辆的线控系统,实现油门、方向盘、换挡、转向灯等控制。


* GitHub相关技术文档地址:

https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_add_a_new_vehicle.md

  相关技术阅读:Apollo Control 模块源码解析



Simulation



之后,我们就需要仿真平台来训练车辆。无人驾驶和普通驾驶最大的区别在于无人驾驶是由电脑和计算机来决定车辆的状态。在日常生活中,一位优秀的驾驶员需要具备多年的驾驶经验,可以处理多种复杂的路况,而使每个人都成为“老司机”就比较难了。相比之下,无人车的优势在于,当一辆车拥有复杂路况的经验,可以通过电脑让所有的车辆都具备同等的经验,并且可以将这些路况上传至云端,做成数量庞大的集合,当有算法更新时,就可以将所有路况再重新跑一次,这点是人类驾驶员无法实现的。所以这类测试就需要在仿真平台上实现。


Apollo仿真平台内置高精地图的仿真场景,支持感知、规划、控制多算法模块验证,让自动驾驶算法验证更为严谨。让车辆不仅能“看得见”路况,更能了解路况信息。


相关技术阅读: Apollo仿真平台如何Hold住99.9999%的复杂场景? 







大家通过前面对Apollo的了解介绍,我们来放眼一下未来。2018年对于无人驾驶来说可谓是非常有意义的一年,我们可以从任何行业来看,都像创业公司会有A轮、B轮、C轮这个过程,A轮可能是讲场景做demo,B轮是做产品,C轮看数据和商业模式。前面我们也讲到,近年来大量资本无人驾驶行业市场,尤其在2018年以前,无人驾驶行业像处于A轮的状态,随着自动驾驶技术的发展,整个行业呈爆发式增长,在我看来,2018年将是一个拐点。从国外自动驾驶科技公司Waymo来看,最近在做数据、服务与车辆业务的拆分;从车厂奥迪来看,最新发布了具有L3级别的奥迪A8车辆。无论是科技公司还是车厂,都在布局行业的同时,做出实际行动。



Apollo 3.0即将在今年7月发布,我们将为开发者带来硬件能力方面的升级支持,届时会有更多量产级别的Apollo产品与开发者见面。



回复“PPT0613”获取完整PPT



QA

问答



1、感谢老师的精彩演讲,作为热爱自动驾驶的我来讲,Apollo给了我强大的开发力量,那么您认为Apollo成功的终态是什么呢?


David:

我们来做个选择题,第一,Apollo觉得自己很厉害;第二,开发者认为Apollo很厉害;第三,我们的开发者和合作伙伴觉得自己很厉害。从Apollo角度来说,我们选择第三个,Apollo希望能够成就开发者和合作伙伴,我们提供技术支持,开放资源能力,就是希望加速整个行业的积累和创新,促进开发者及合作伙伴达成双赢,当开发者和合作伙伴认为自己很厉害的时候,才是我们认为Apollo的成功。



2、如果出现信号问题影响了云端大脑的使用,还能保证车辆的正常自动行驶吗?有没有什么具体的设计来有效解决此类问题?


David:

这个多虑了,一个有经验的司机是看过很多场景,处理过很多复杂路况的。在Apollo云端,所有的自动驾驶车辆看到无法运行的场景时,我们会存储下来,通过仿真平台的虚拟场景来不断训练,每次有代码和软件更新时,我们会重跑所有的场景以便车辆应对各种路况。这个过程完全在云端进行,当完成之后它生成的感知模型,PNC模型及代码,是完全下放在本地的。所以无人车在路上行驶时,不需要依赖云端大脑来进行决策,是否有信号都不影响车辆安全和行驶的能力。这是无人车设计时重要的能力要求之一。



3、请问高校学生想学习Apollo的话,从哪方面入手呢?


David:

自动驾驶系统比较复杂,很多初学者都不知道从哪下手。好在Apollo为开发者提供了开源平台,开发者可以从Apollo GitHub (http://github.com/apolloauto )上,下载很多code学习Apollo代码。每个branch里面有详细的说明文档,告诉大家如何快速安装Apollo,FAQ和how to里有很多topic帮助优化Apollo,spec里面还有很多技术文档。同时,开发者也可以通过参加我们举办的一些线下公开课、线上的直播课程、社群分享来更好的学习和使用Apollo,同时也可以参考我们的技能图谱来了解自动驾驶技术。




Apollo


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存