百度Apollo系统学习-初章

前言

对新手来说要啃下一个大公司的顶级项目是很吃力的,特别是在没有前辈带着的情况下。所以我希望这个系列教程可以帮助更多的开发者理清百度的Apollo系统,文章会比较偏技术向(软件),所以很多套话和简介之类的教程中就不再提及了,而且因为本身能力精力有限所以有错误希望大家积极指出。这些文章会尽量跟着Apollo的版本不断更新并尽可能地保持简洁,有些不太适合用中文表达的会直接用英文方便大家对照。如有引用或借鉴请注明出处,谢谢!

Apollo版本

百度Apollo系统学习-初章
此图为百度官方给出的版本图,此时处于2019.7这个版本。下面会列出所有的版本,笔者建议主要关注1.0(初始版)、3.0(老架构终极版)、3.5(新架构初始版),其他版本主要都是一些功能的完善。

Apollo 1.0

初版的Apollo,只能在封闭场景(测试车道,停车场)中完成Automatic GPS Waypoint Following等简单任务,现在这个版本可以用来测试Apollo和车的兼容性。
主要硬件:工业电脑(IPC),GPS,IMU,控域网(CAN)卡
软件:基于Linux 4.4.32内核的Apollo Linux内核
百度Apollo系统学习-初章

Apollo 1.5

这一版加入了LiDAR,下图黄色处为更新或新加的模块。有了LiDAR感知能力得到了增强,所以在完成fixed lane cruising等任务时更加可靠了。
新增的硬件:LiDAR,GTX1080 GPU
软件:GPU驱动
百度Apollo系统学习-初章

Apollo 2.0

这个版本做了很多常用的自动驾驶任务。车可以在简单的城市道路上运行了,并且可以完成避障,识别交通信号灯,变道等任务。
新增硬件:摄像头(主要用于识别信号灯),Radar
百度Apollo系统学习-初章

Apollo 2.5

这个版本主要是2.0的优化,车可以在有防护的高速公路上运行了。
新增硬件:多了一个摄像头。
百度Apollo系统学习-初章

Apollo 3.0

2.5和3.0版本主要都是上层功能算法的优化完善,3.0算是原版Apollo的终极形态,它提供了一些应用场景(在Apollo官网上挂着的案例就是):Minibus,Valet Parking等,并且做出了一些集成的硬件平台产品。
新增硬件:超声波传感器,Apollo传感器Unit,Apollo硬件开发平台
软件:守护程序,监视器,新的硬件平台驱动
百度Apollo系统学习-初章

Apollo 3.5

需要重点关注的版本,Apollo发布了自己的Runtime Framework:Cyber RT,整体的软件组织更加有序和清晰。这个版本车已经可以在更加复杂的住宅和小镇区域行驶了,换上了360度全方位感知系统后感知能力大大增加。至此,Apollo系统算是进入了新的发展阶段,已经具备了基本的软件架构雏形以及硬件方案。
新增硬件:更高档的各式传感器,Apollo Extension Unit (AXU)
软件:基于新传感系统更新了算法,Cyber RT
百度Apollo系统学习-初章

Apollo 5.0

主要是软件方面的更新,可以看到3.5版本基本就是硬件定型版本,5.0主要是针对数据层面定义了内部的数据格式和通信方式,并且也提供了很多前期积累的驾驶数据与模拟器数据。
软件:Data Pipeline, Apollo Synthetic Data Set, 算法更新
百度Apollo系统学习-初章

Apollo 软硬件架构

Hardware/ Vehicle Overview

百度Apollo系统学习-初章

Hardware Connection Overview

百度Apollo系统学习-初章

Software Overview - Navigation Mode

百度Apollo系统学习-初章

预备知识

这里列举一些学习Apollo系统的预备知识,随着Apollo的更新,这些也会有所变化。这些知识分为2类,一类是只需要理解概念和理念,另一类需要开发者会使用。这里针对的是普通开发者,读者需要根据实际情况学习自己所需的知识。

理解

  1. ROS:Cyber RT中很多设计都借鉴了ROS
  2. 传感器基础知识,比如LiDAR、Radar、IMU都是什么:理解上层算法的基础
  3. 常见的自动驾驶算法(非算法开发者),比如计算机视觉、高清地图构建、PID控制等:理解系统是如何决策和运作的

掌握

  1. C++:需要比较高阶的知识,比如知道C++11的特性,会使用高级的数据结构,能理解面向对象编程,熟悉并发编程
  2. VSCode:官方钦定的调试工具
  3. Dreamland, Dreamview:官方模拟器环境工具
  4. Bazel:Apollo使用的编译工具
  5. Google Protocol Buffer:Apollo使用的“通信协议”
  6. Docker:Apollo系统运行在容器环境
  7. Ubuntu:基础的Linux使用

后续

初章主要是搬运和总结百度官方的介绍,下一章将从Cyber RT这一最核心的软件部件入手探究Apollo的奥秘。本教程将不再涉及环境配置及安装,因为官网的教程已经非常完备详细了。

参考链接

大部分内容可以在官方github找到。

  1. 百度Apollo项目技术文档
  2. Apollo Github项目地址
  3. 使用Docker Build
  4. 装载运行