一、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的核心模块和它们之间的关系展示出来。你看一眼就能明白整个系统是怎么串起来的:
1.5 开发环境搭建思路
嗯,这里要重点说一下。Apollo的开发环境搭建,说白了就是三步:
- 装Docker——这是最关键的。Apollo所有依赖都在容器里,你主机只需要装个Docker和NVIDIA驱动
- 拉代码——从GitHub上clone Apollo源码,建议用release版本,别追master分支
- 启动容器——运行脚本进入开发容器,所有工具链都在里面
避坑指南:我曾经在Ubuntu 18.04上折腾了三天,就为了装一个特定版本的CUDA。后来发现Apollo的Docker镜像里已经配好了,根本不需要手动装。所以记住:能用Docker解决的,就别自己折腾。
好了,这一章的内容就到这里。你先把这些概念理清楚,下一章我们开始动手搭建环境。