查看原文
其他

进阶课程㊶丨Apollo实战——本机演示实战

阿波君 Apollo开发者社区 2022-07-29


Apollo是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。



上周阿波君为大家详细介绍了「进阶课程㊵丨Azure仿真平台使用」


此课程主要介绍了基于微软的一个仿真平台Azure,在该仿真平台运行自己的代码是不需要进行本地编译的,其使用流程有:首先是克隆Apollo在Github上的代码;然后在本地对相应的模块进行修改;最后在微软的Azure仿真平台选择目标场景对更新后的代码进行验证。


本周阿波君将继续与大家分享Apollo实战——本机演示实战的相关课程(本节课程基于Apollo 3.0版本)。下面,我们一起进入进阶课程第41期。


完整版视频学习  请戳『阅读原文』



  以下,ENJOY  


要使用Apollo进行实战,首先要对Apollo的代码结构有一个基本的认识。图1是Apollo项目的基本代码结构。包括Docker和Docs(主要放置一些文档)、Modules(核心模块算法都在该文件夹下)以及Scripts和Tools等。


图1 Apollo项目的代码结构


Modules下的文件目录结构如图2所示。


图2 Module文件夹目录结构


包括之前理论学习的Perception、Localization、Prediction 、高精地图等。Apollo是一个采用抽象类、工厂方法设计的高效易扩展的架构。小伙伴们可以根据自己的实际情况定制,快速搭建适应自己场景的自动驾驶能力。

 

图3是Apollo软件的架构图,也是核心的关系图。它的整个数据流转过程是:首先是通过高精地图和定位获得车辆周边的场景信息。然后通过感知模块侦测道路上的障碍物,即一些动态信息,比如旁边的车、行人、自行车等等。这些工作完成后将感知的信息传递给Prediction,预测感知障碍物的运行轨迹。最后将预测结果包装再传给Planning模块。Planning根据障碍物和周边静态的情况,比如有哪些车道可选,去规划路线。路线规划完成后,将生成的轨迹传到Control模块。Control模块通过Can总线协议跟车辆交互,例如应该打多大角度的方向盘,车辆现在的加速度是多少,当前是应该踩刹车还是继续跟车等。同时也会从Can总线协议层面了解到车辆本身的信息。


图3 Apollo各个模块之间的关系


从2.5版开始,我们引入了一些小的变更,其中一个是Relative Map逻辑单元。它的引入可以使得我们在一些可能并不需要高精地图的场景进行自动驾驶,包括早期车辆的Demo搭建等,使整个适配过程更加方便。


在3.0版本, 我们升级了系统里一些安全相关的模块,如图4所示,当发生紧急情况的时候可以直接利用熔断机制跳开PNC,直接对车辆下发刹车指令等。


图4 Apollo变更关系图


在介绍完整体的逻辑以及代码逻辑模块之后,接下来就是一步步的实战,图5是软件的安装流程。


图5 Apollo软件安装流程


自动驾驶的门槛比较高,要真正形成一个比较完备的闭环,还需要一辆车。要从事自动驾驶行业,就必须上手,要有实际的车辆,可以是小型实验用车或者真车。实车必须满足线控标准。图6列出了满足Apollo线控标准的车辆指标。


图6 满足Apollo要求的线控车辆指标

 

以上就是本节课程的主要内容了,更多话题讨论、技术交流,可以添加『Apollo小哥哥』为好友,进开发者交流群。




  





阿波君说:


在学习过程中,开发者不仅可以在Apollo开发者社区小程序上对课程内容进行提问,还可以在开发者微信群中交流学习心得,共同学习自动驾驶技术。

开发者社区还将在公众号上定期推送课程相关的技术干货,全程陪伴大家共同进步。祝Apollo开发者们顺利完成《Apollo自动驾驶进阶课程》的学习,在自动驾驶道路上越走越远!

阿波君还欢迎大家在小程序内晒出学习笔记,也可以加入开发者交流社群与大家交流互动,有好礼相送!



观看/阅读完该节课程后

在开发者社群

及小程序「社区问答」版块内

上传你的课程笔记截图

手写笔记/电脑文档均可

即可联络社区小助手获取

百度周边纪念品1份

赶快来撩吧~比心~





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

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