跳到主要内容

百度 Apollo 自动驾驶平台

百度 Apollo(阿波罗)是百度面向汽车行业及自动驾驶领域的合作伙伴提供的软件平台,它是一套完整的软硬件和服务系统,包括车辆平台、硬件平台、软件平台、云端数据服务等四大部分。目前已在自动驾驶、智能汽车、智能交通三大领域拥有解决方案。其中,萝卜快跑(Apollo Go)就是百度 Apollo 提供的自动驾驶出行服务。

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

框架

百度 Apollo 的技术框架如下图所示。

可以看到该架构分为四层,其中除了 Cloud Service Platform 部分是运行在云端,其他的都是车端的系统。

  • Open Software Platform 自动驾驶系统最为重要的软件层。这一层包含了最底层的 RTOS(Real Time Operation System)和第二层的运行软件所需的框架环境(Runtime Framework),再到更上层的各个子模块(地图引擎、定位、感知、规划、控制、端到端、人机界面)。
  • Reference Hardware Platform 自动驾驶系统所依赖的硬件层。这里包含了控制器、GPS/IMU、LiDAR、Camera、Radar、HMI Device 和 Black Box 等硬件设备。
  • Drive-by-wire Vehicle 是线控的底层,不开放这个接口,就无法控制汽车。

开源软件平台

下面着重介绍 Open Software Platform 开源软件平台层。包括 RTOS 实时操作系统、Runtime 运行框架以及各种软件模块。

RTOS

RTOS(实时操作系统)可确保在给定的时间内完成特定的任务,对于高速运行的自动驾驶系统来说尤为重要。

Appllo RTOS 是 Ubuntu Linux 操作系统与 Apollo 内核相互结合的成果。我们知道,原始的 Ubuntu 系统其实并不是实时操作系统。因此,百度通过加入 Apollo 设计的内核,提高了它的实时性,使其成为 RTOS。

运行框架

运行框架是 Apollo 的操作系统,它是在 ROS 的基础上进行二次开发的版本。

ROS(Robot Operating System)是机器人操作系统,它提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。ROS 遵守 BSD 开源许可协议。

ROS 在机器人行业有着悠久的历史,目前有三四千个基础库支持应用程序的快速开发,ROS 根据功能将自治系统划分为多个模块,每个模块负责接收、处理和发布自己的消息,由于这些模块相互独立,只能通过运行时框架进行通信,因此调整任何单一模块都会很容易。这个其实很像微服务的概念,通过高内聚,低耦合的方式实现各个模块的稳定性。

为了使 ROS 能更好的和无人驾驶相结合,百度 Apollo 团队改进了共享内存的功能和性能、去中心化和数据兼容性。

软件模块

软件平台具有各种模块,这些模块包括MAP引擎、定位、感知、规划、控制、端到端驾驶以及人机接口,每个模块都有自己的算法库,且模块之间的关系非常复杂,这些模块我们后续会在单独的章节进行描述。