引言

如何学习自动驾驶?

  • 自动驾驶是集车辆、计算机、电子电气、人工智能、通信等多学科应用为一体的的复杂系统。针对自身专业背景结合自动驾驶发展进行学习;

  • 自动驾驶是通过智能系统来驾驶汽车从而取代了驾驶员,因此学习自动驾驶需要理解人类驾驶员驾驶汽车的过程。

自动驾驶与人工驾驶

人工驾驶流程:

短期记忆
长期记忆
动机
开车经验决策
控制
执行

自动驾驶流程:

Perception Localization
HDMap
Routing
Planning
Control
By Wire

由此可见,自动驾驶本质上是模拟人类驾驶员进行驾驶操作的过程,将人类驾驶员进行驾驶操作进行模块化解耦,众多开发者根据需求来针对性的研究其中某一个模块。

场景案例

假如说我们要外出游玩,需要开车从入住的宾馆行驶到游玩的景点。由于我们此前并不了解这段路径,采取的行为方式是:

  1. 驾驶员查看周围环境,根据车辆所在位置开车行驶;{短期记忆 ---- Perception & Localization}
  2. 利用导航软件来进行导航从而确定行驶路径;{长期记忆 ---- HDMap}
  3. 设定从宾馆到景点的路线;{动机 ---- Routing}
  4. 行驶的某一段路上我们需要行驶的轨迹(假如前方车辆减速刹车,我们要面临选择:或减速刹车、或变道及超车);{开车经验决策 ---- Planning}
  5. 决策给的指令进行对车操控;{控制 ---- Control}
  6. 操控车辆正常的运行 ;{执行 ---- By Wire}

1. 自动驾驶人才需求与挑战

1.1 自动驾驶的挑战

1.1.1 人工智能与算法的挑战

自动驾驶汽车所行驶的环境的复杂多样的,感知算法如何像人类一样理解周边的环境,准确的识别障碍物;决策规划算法如何像人类驾驶经验丰富的司机一样针对各种驾驶工况安全高效的应对

定位算法怎样提供实时地、厘米级的定位能力。以上都需要算法不断的迭代更新,同时需要更多数据来帮助人工智能算法不断提升认知,解决以上挑战则需要特定领域的算法人才。

1.1.2 软件工程技术的挑战

对于高速行驶的自动驾驶汽车,摄像头、雷达等传感器获取的数据可达到千兆每秒的级别,而自动驾驶系统需要基于这些数据在极短的时间内做出响应。一般情况,自动驾驶汽车端到端(从传感器感知-环境障碍物-决策-下发控制指令-在车上执行)的时间需要控制在200-300ms之内。

满足以上要求则需要及时可靠的系统框架保证实时性以及需要处理数据的云平台;这些需要有丰富经验的计算机人才来应对此类挑战

1.1.3 硬件层面的 挑战

自动驾驶汽车的普及需要更低成本、更高性能、更可靠的硬件来支持,这个层面需要生产技术的规模化以及硬件技术的创新。

1.2 自动驾驶的人才需求

请添加图片描述

2. Apollo开源平台介绍

Apollo自2017年发布第一个版本,到2022年10月已经发布11个版本,目前Apollo累计开源70万行代码,架构覆盖车辆、硬件、软件、云服务四个层次,以及单车智能、车路协同等多套方案,既能满足开发者对于专业领域深度学习的需求,同时也能帮助开发者对于自动驾驶有整体性的认识和理解。

2.1 Apollo7.0开源平台架构图

在这里插入图片描述

2.1.1 车辆认证平台

提供了开放的符合Apollo要求的线控车辆的接口的标准,同时发布了经过Apollo认证的线控车辆以及对应线控车辆代码

2.1.2 硬件开发平台

提供相关的硬件,包括:车载计算单元、摄像头、激光雷达等

2.1.3 开源软件平台

Apollo的核心部分,开源部分主要是在这个部分。

  • 基于 Ubuntu 18.04 LTS版本。Apollo 3.5 以前使用ROS,之后使用Cyber RT,并且已经在商业化项目(Robotaxi)得到应用
  • 自动驾驶应用模块:地图、定位、感知、预测、规划、控制等

2.1.4 云端服务平台

运营相关的云服务和研发相关的云服务

2.2 丰富的自动驾驶算法

2.2.1 多视角感知

  1. 视觉信号灯识别
  2. 视觉车道线检测
  3. 视觉障碍物识别
  4. 激光点云障碍物识别
  5. 多传感器融合障碍物识别
  6. 车路协同感知融合

2.2.2 基于场景的规划

  1. 公共道路规划器
  2. Lattice 规划器
  3. Navi 规划器
  4. RTK 规划器
  5. 基于模型的规划器
  6. 基于模型的开放空间规划器

2.2.3 精准的控制

  1. PID 控制器
  2. LQR 控制器
  3. MPC 控制器
  4. MRAC 双循环控制器

2.2.4 多融合定位

  1. RTK 定位
  2. 多软干起融合(MSF)定位

2.3 Cyber RT 实时通信框架

2.3.1 Cyber RT 功能:

将自动驾驶的各个算法模块,组织起来、处理数据的能力,同时需要保证数据梳理过程的实时性和可靠性

2.3.2 Cyber RT 优点:

  • 易于部署、忽略底层调度和通信机制、提供很好的实时性和可靠性;
  • 通过可视化诊断工具加速自动驾驶开发
  • 专注于自动驾驶的组件模块,简化自动驾驶搭建时间

2.4 硬件开发/车辆认证平台

2.5 Apollo 工具链

Apollo 工具链通过云端的方式来解决数据运用效率的问题,通过与仿真结合去降低实车测试成本,可以极大的提升研发效率

3. 如何使用Apollo开始学习

3.1 上机学习

3.1.1 实施框架——Cyber RT

  • 掌握 Cyber RT 开发工具
  • 使用 Cyber RT API 进行 Apollo 开发

如何通过 Apollo 学习自动驾驶通信

通信学习:

  • 分布式系统开发模式:三种通信模式(talk-listen、service-client、共享内存通信)等
  • 系统开发调试

掌握Cyber开发工具:

  • Cyber Visualizer:可视化
  • Cyber monitor:消息展示
  • Cyber recorder

3.1.2 决策与规划——Dreamview/Dreamland

  • 了解 Apollo 决策规划流程和算法;{源码与文档的学习}
  • 使用 Dreamview 进行控制在环的规划调试;{Dreamland Scenario Editor / Dreamview Simulation}
  • 基于 Apollo 开发新的规划场景和算法;{规划扩展文档的学习}
  • 使用 Dreamland 进行控制在环的规划仿真评测;{Dreamland的学习}

3.1.3 感知——Dreamview/Visualizer

  • 了解传感器特性
  • 了解 Apollo 感知流程及算法
  • 使用 Dreamview/Perception Visualizer 进行开发调试
  • 扩展部署新的感知模型
  • 扩展训练新的感知模型并验证

3.2 上车学习

3.2.1 线控协议——车辆适配工具链

  • 了解 Apollo 线控标准
  • 开发符合 Apollo 要求的线控车辆与 DBC
  • 在 Apollo 中开发与车辆通信的 CANBus 驱动
  • 使用 teleop 开环验证车辆

3.2.2 集成——Fuel云服务/D-KIT

  • 学习传感器布置与链接
  • 了解车辆标定与传感器标定
  • 了解循迹原理
  • 通过循迹实现控制与线控实车闭环验证

3.2.3 测试与调车——Dreamview/D-KIT

  • 了解车辆安全操作
  • 了解基础测试流程和实车数据录制
  • 了解实车控制调参
  • 了解实车定位调试

3.2.4 Apollo D-KIT 开发套件

  • 开源开放的Apollo平台——降低软件门槛
  • 底盘与感知一体式套件——降低硬件门槛
  • 车+云研发模式——降低工程门槛
  • 丰富学研方案与应用——赋能人才培养

4. Apollo自动驾驶课程概述

每周六、周日以直播的形式进行课程学习。
在这里插入图片描述
在这里插入图片描述

参考文章及视频

星火第一讲-使用Apollo 学习自动驾驶

Logo

为开发者提供自动驾驶技术分享交流、实践成长、工具资源等,帮助开发者快速掌握自动驾驶技术。

更多推荐