一、Apollo简介与环境概览

大家好,我是你们这趟自动驾驶之旅的向导。今天咱们聊聊Apollo——这个百度开源出来的自动驾驶平台。

说实话,我第一次接触Apollo是在2017年。那时候我刚从传统嵌入式开发转到自动驾驶领域,面对一堆传感器和算法,头都是大的。后来发现Apollo把很多底层的东西都封装好了,这才算真正入了门。

1.1 Apollo是什么?

Apollo是一个完整的自动驾驶开源平台。它不只是一个算法库,而是一整套解决方案——从硬件选型、传感器标定,到感知、规划、控制,再到高精地图和模拟仿真,全都给你安排得明明白白。

你想想看,一个自动驾驶系统涉及多少个模块?感知、定位、预测、规划、控制、高精地图、人机交互……每个模块单独拎出来都是一个大课题。Apollo把这些模块整合在一起,提供了标准化的接口和通信机制。

核心特点:

  • 模块化设计——每个功能独立成模块,可以单独开发、测试、替换
  • 多版本演进——从1.0到现在的8.0,功能越来越完善
  • 生态丰富——有仿真平台、数据平台、云端训练平台
  • 社区活跃——全球开发者都在贡献代码和方案

1.2 核心模块介绍

我个人习惯把Apollo的核心模块分成三层来看:

第一层:感知与定位层

  • 感知模块:处理摄像头、激光雷达、毫米波雷达的数据。识别车道线、交通标志、行人、车辆等障碍物
  • 定位模块:融合GPS、IMU、激光雷达点云,实现厘米级定位。我在项目中遇到过GPS信号丢失的情况,全靠激光雷达的定位算法撑着
  • 高精地图:提供道路拓扑、车道线、交通规则等先验信息

第二层:决策与规划层

  • 预测模块:预测周围车辆和行人的运动轨迹。说白了就是猜别人下一步要干嘛
  • 规划模块:包括路径规划、速度规划、轨迹规划。决定车怎么走、走多快
  • 决策模块:处理交通规则、避让策略、变道时机等

第三层:控制与执行层

  • 控制模块:把规划好的轨迹转换成油门、刹车、转向的控制指令
  • 车辆接口:通过CAN总线与车辆底盘通信

小提示:刚开始学的时候,别想着把所有模块都搞懂。我建议先从感知和规划入手,这两个模块最直观,也最容易看到效果。

1.3 硬件与软件需求概览

搭建Apollo开发环境,硬件和软件都有一定门槛。我踩过的坑不少,这里直接给你列个清单:

硬件需求

组件 推荐配置 备注
CPU Intel i7 或 AMD Ryzen 7 以上 至少8核,编译代码时你就知道核多的好处了
GPU NVIDIA GTX 1080 或 RTX 系列 用于感知模块的深度学习推理
内存 32GB 以上 16GB也能跑,但你会很痛苦
硬盘 SSD 512GB 以上 Apollo源码+数据包,轻松吃掉100GB
操作系统 Ubuntu 20.04 / 22.04 官方推荐,其他系统兼容性差

警告:千万不要用虚拟机跑Apollo!我曾经试过,编译一次要两个小时,跑仿真卡成PPT。老老实实装双系统或者用实体机。

软件需求

  • Docker:Apollo所有依赖都打包在Docker镜像里。你不需要手动装CUDA、OpenCV、PCL这些库,省心很多
  • Git:版本管理,拉取代码必备
  • VS Code / CLion:推荐VS Code,插件丰富,调试方便
  • Dreamview:Apollo自带的可视化工具,能看到车辆状态、感知结果、规划轨迹

1.4 整体架构图

下面这张图是我自己画的,把Apollo的核心模块和它们之间的关系展示出来。你看一眼就能明白整个系统是怎么串起来的:

Apollo 核心模块架构图 感知与定位层 摄像头感知 激光雷达感知 毫米波雷达 高精定位 决策与规划层 障碍物预测 路径规划 速度规划 决策仲裁 控制与执行层 横向控制(转向) 纵向控制(油门/刹车) 车辆CAN接口 数据流方向:传感器 → 感知定位 → 决策规划 → 控制执行

1.5 开发环境搭建思路

嗯,这里要重点说一下。Apollo的开发环境搭建,说白了就是三步:

  1. 装Docker——这是最关键的。Apollo所有依赖都在容器里,你主机只需要装个Docker和NVIDIA驱动
  2. 拉代码——从GitHub上clone Apollo源码,建议用release版本,别追master分支
  3. 启动容器——运行脚本进入开发容器,所有工具链都在里面

避坑指南:我曾经在Ubuntu 18.04上折腾了三天,就为了装一个特定版本的CUDA。后来发现Apollo的Docker镜像里已经配好了,根本不需要手动装。所以记住:能用Docker解决的,就别自己折腾。

好了,这一章的内容就到这里。你先把这些概念理清楚,下一章我们开始动手搭建环境。

可可精品资料库