引言
如何学习自动驾驶?
-
自动驾驶是集车辆、计算机、电子电气、人工智能、通信等多学科应用为一体的的复杂系统。针对自身专业背景结合自动驾驶发展进行学习;
-
自动驾驶是通过智能系统来驾驶汽车从而取代了驾驶员,因此学习自动驾驶需要理解人类驾驶员驾驶汽车的过程。
自动驾驶与人工驾驶
人工驾驶流程:
自动驾驶流程:
由此可见,自动驾驶本质上是模拟人类驾驶员进行驾驶操作的过程,将人类驾驶员进行驾驶操作进行模块化解耦,众多开发者根据需求来针对性的研究其中某一个模块。
场景案例
假如说我们要外出游玩,需要开车从入住的宾馆行驶到游玩的景点。由于我们此前并不了解这段路径,采取的行为方式是:
- 驾驶员查看周围环境,根据车辆所在位置开车行驶;{短期记忆 —- Perception & Localization}
- 利用导航软件来进行导航从而确定行驶路径;{长期记忆 —- HDMap}
- 设定从宾馆到景点的路线;{动机 —- Routing}
- 行驶的某一段路上我们需要行驶的轨迹(假如前方车辆减速刹车,我们要面临选择:或减速刹车、或变道及超车);{开车经验决策 —- Planning}
- 决策给的指令进行对车操控;{控制 —- Control}
- 操控车辆正常的运行 ;{执行 —- 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 多视角感知
- 视觉信号灯识别
- 视觉车道线检测
- 视觉障碍物识别
- 激光点云障碍物识别
- 多传感器融合障碍物识别
- 车路协同感知融合
2.2.2 基于场景的规划
- 公共道路规划器
- Lattice 规划器
- Navi 规划器
- RTK 规划器
- 基于模型的规划器
- 基于模型的开放空间规划器
2.2.3 精准的控制
- PID 控制器
- LQR 控制器
- MPC 控制器
- MRAC 双循环控制器
2.2.4 多融合定位
- RTK 定位
- 多软干起融合(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自动驾驶课程概述
每周六、周日以直播的形式进行课程学习。
参考文章及视频