2. Apollo学习路径

category
type
status
slug
date
summary
tags
password
icon
  • 土豆泥老师 (知乎:@土豆泥): 上海交通大学在读博士.

前情回顾

在上一节中,我们首先介绍了Apollo的开源平台框架,从下到上分为四个层次:硬件设备层、软件核心层、软件应用层、工具服务层,能够满足车辆硬件、软件工程以及自动驾驶算法等不同类型人才的学习需求。
它还包括四大核心能力:丰富的自动驾驶算法、优化的实时通信框架Cyber RT、开放车辆认证平台和硬件标准、车+云一体工具链。这些能力不仅帮助我们快速仿真验证算法,也使我们能方便地在实车部署,实现自主导航、泊车等功能。
了解了Apollo的概况,那对于开发者来说,到底如何来一步步学习呢?此处,我们将Apollo的学习路径分为上机仿真上车实践两个阶段。

一、上机仿真

上机仿真的目标主要是为了学习Apollo的软件框架与算法、掌握Apollo的调试工具,借助Apollo平台进行算法仿真。在上机仿真阶段,只要你有符合配置要求的电脑就进行学习,门槛很低。
具体而言,电脑配置要求为:
4核以上的CPU
16G以上内存
安装Ubuntu 18.04+系统
GTX1060以上显卡(感知需要,可选)
无论要学习什么算法,都应从学习Cyber RT开始。因为Cyber RT是车端工程框架的基础,任何扩展开发都离不开它。在掌握Cyber RT的基础上,就可以根据自己的需要来选择适合的算法模块进行学习。整体上,算法被分为感知和规控(PnC)两大类。对于每一类,Apollo都有对应的学习路线和工具链,下面我们分别具体介绍。

1. Cyber RT

学习Apollo,第一步就是通过Cyber RT学习自动驾驶的开发模式,这是期望从事自动驾驶软件开发的同学所需掌握的基础知识。
  • 通过Cyber RT了解分布式系统开发的模式,掌握Cyber RT中的Talker/Listener、Service/Client以及Parameter Service三种通信模式,并可以尝试从创建你的第一个reader/writer通信案例开始。
  • 掌握包管理、Cyber Monitor、Cyber Visualizer等开发工具,提升你的开发调试效率。
  • 更深一步可以学习Cyber RT API、软件包发布,对Apollo进行定制开发。
                                                                                                Cyber RT学习路径
Cyber RT学习路径

2. 感知模块

对于期望在自动驾驶感知软件开发方向深入的同学,可以学习了解Apollo中的感知模块。
  • 刚开始可以通过Apollo提供的传感器原始数据集和Cyber等工具,了解传感器数据特性。
  • 之后可以逐步了解感知流程和算法,Apollo提供了Lidar点云,单目等多模态、检测、分割等多任务的算法,学习时可以根据自己的兴趣点选择性的了解。
  • 这个过程中,可以通过Apollo提供的Dreamview/Visualizer等可视化工具,来直观了解感知数据的处理流程。
  • 更进一步,当你需要解决场景问题,而Apollo自带的感知模型无法满足你的需求时,你可以基于模型部署向导来部署其他的感知模型。
  • 再进一步,可以自己采集数据进行感知模型的训练,Apollo会提供相关的模型验证工具,来确保接入的效果。基于此,可以不断的迭代优化。
                                                                                         Apollo感知模块学习路径
Apollo感知模块学习路径

3. 规划与控制模块(PnC)

对于期望在自动驾驶决策规划软件开发方向深入的同学,可以学习了解Apollo中的决策规划模块,这也是开发者关注最多的技术方向之一。
  • 刚开始可以通过Apollo了解流程和算法,Apollo提供基于场景的规划管理,适用于高速城市、低速园区等多场景,同时提供了基于车道和开放空间的规划器。
  • 在了解规划流程的基础上,可以从云端的Studio仿真,下载场景数据,到本地Dreamview进行仿真调试,来进一步理解规划数据处理的流程。
  • 再往后,当Apollo自带的规划算法以及场景无法满足需求的时候,也可以自主扩展,并使用Studio云端的集群仿真服务,来进行效果评测和回归测试,这样就可以不断的迭代优化。
                                                                               Apollo规划控制模块学习路径
Apollo规划控制模块学习路径

二、上车实践

使用Apollo进行学习的第二阶段,便是上车实践。通过上机仿真的学习,我们可以方便的学习理解各独立的模块,但是无法集成验证,缺乏非常重要的车辆硬件层。通过上车,我们要解决车辆闭环和集成验证的问题
在最开始,我们需要一台符合Apollo要求的车辆及相应的设备。通过学习Apollo车辆适配流程,可以掌握自动驾驶线控设计,并最终开发出适配Apollo的线控车辆。之后,通过上车循迹闭环流程,可以完成车辆集成闭环验证。最后,通过感知避障闭环的流程,可以了解车辆的安全操作,测试流程,以及定位、控制调车。
为了帮助开发者解决这些问题,19年三月份Apollo发布了开发套件D-kit。D-kit是纯电线控底盘,适配了Apollo线控协议,搭配了摄像头、激光雷达、组合导航、IPC以及结构件,易于扩展。D-kit车辆属于低速小型车,适合封闭园区场景,减小了对测试场的约束要求。同时,还有专为D-kit适配的软件配置场景,开发者不用再为软件适配而烦恼。
因而,有了D-kit,你可以马上专注并实践Apollo相关的软件能力。不用再为硬件驱动、适配等事情苦恼,最大限度的降低学习Apollo的门槛。
在开发套件的选择上,提供了Lite S、Standard S以及Advanced多种型号,提供了多种底盘规格、传感器布置方案以及多重安全保障。此外,针对开发者调车场景,提供了调车辅助工具,更方便开发者日常的调车使用。
                                                                                                  D-kit开发套件
D-kit开发套件
接下来,再详细介绍一下上车实践的各个步骤

1. 车辆适配

  • 对于有能力自己定义车辆的开发者,比如车辆相关专业的同学,可以基于Apollo的线控标准,开发符合Apollo要求的线控车辆与数据总线通信协议(DBC)。
  • 之后基于Apollo提供的车辆适配手册和工具,开发与车辆通信的canbus驱动。
  • 最后通过teleop等工具,开环的验证车辆的适配情况。整个适配流程,配备了非常详细的技术指导手册。
                                                                                          Apollo车辆适配流程
Apollo车辆适配流程

2. 车辆集成

上车实践第二个重要的场景是车辆的集成。基于Apollo,我们可以学习到自动驾驶车辆集成的完整流程,从传感器布置设计到硬件拓扑,再到底盘标定、传感器标定,最后是循迹闭环的验证。
  • 首先进行传感器布置设计和硬件拓扑链接,这为自动驾驶系统运行提供了物理基础保障。
  • 通过使用Fuel的车辆集成工具,了解车辆标定原理和流程,让每台车辆的物理差异在软件层面打平。
  • 同时,了解传感器标定的原理和流程,把不同传感器的自身坐标系,统一到车身坐标系,为感知模块提供统一的参考系。
  • 最后是循迹闭环,通过循迹闭环验证,可以评测车辆线控性能情况。
                                                                                          Apollo车辆集成流程
Apollo车辆集成流程

3. 实车测试和调试

  • 自动驾驶安全是第一位的,首先我们可以基于D-kit的多重安全机制,学习正确的实车操作方式。
  • 然后,通过Apollo的智能数据采集器,了解基于实车的功能测试和路测的核心流程。
  • 最后,基于Dreamview和Cyber RT提供的各种调试工具,可以学习实车控制调参,定位调试等等操作。
                                                                 采用D-kit套件和DreamView进行泊车调试
采用D-kit套件和DreamView进行泊车调试

结语

这一节,我们按照上机仿真和上车实践的顺序介绍了Apollo的学习路径。但在开始上机仿真的正式学习之前,我们先了解另外一个工具:Apollo Studio 云实验平台。Apollo Studio 云实验平台提供了云端的代码调试和仿真环境,无需安装配置环境,在线就能对Apollo进行学习,对新手朋友十分友好。
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...