第3章:环境搭建实战

说实话,环境搭建这事儿,看着简单,做起来全是坑。

我见过太多人,代码写得飞起,结果卡在环境上三天出不来。我自己也踩过不少雷,今天就把这些经验掰开揉碎了讲给你听。

3.1 Apollo Docker环境部署

Apollo 官方推荐用 Docker,说白了就是为了省心。但你要是直接照着文档敲命令,大概率会翻车。

3.1.1 准备工作

先确认你的机器。我建议至少 16G 内存,200G 硬盘。别问我为什么,我试过 8G 内存跑 Apollo,编译到一半直接卡死。

系统方面,Ubuntu 18.04 或 20.04 都行。我个人习惯用 18.04,因为踩过的坑少一些。

注意:NVIDIA 驱动一定要装好。跑 Apollo 的感知模块需要 GPU,没驱动的话,你连可视化都看不到。

3.1.2 安装 Docker

这一步其实很简单,但很多人会漏掉一个关键步骤——把当前用户加到 docker 组里。

# 安装 Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 把当前用户加入 docker 组
sudo usermod -aG docker $USER

# 退出终端重新登录,或者执行
newgrp docker

为什么要加组?不加的话,每次执行 docker 命令都要加 sudo,烦得很。我曾经因为这个折腾了半天,后来发现就是少了一步。

3.1.3 拉取 Apollo 镜像

Apollo 的镜像分好几种。我建议直接用官方推荐的 apolloauto/apollo:dev-x86_64-18.04-20210520_1330 这个版本,比较稳定。

# 拉取镜像
docker pull apolloauto/apollo:dev-x86_64-18.04-20210520_1330

# 启动容器
bash docker/scripts/dev_start.sh

嗯,这里要注意。如果你在国内,拉取镜像可能会很慢。我建议配个国内镜像源,或者用代理。不然等个半小时,心态就崩了。

3.1.4 进入容器并编译

# 进入容器
bash docker/scripts/dev_into.sh

# 编译 Apollo
bash apollo.sh build_opt

编译时间取决于你的机器。我自己的机器大概要 20 分钟。如果编译过程中报错,多半是内存不够。你可以试试 bash apollo.sh build_opt_gpu 这个命令,会快一些。

小技巧:编译时开个终端跑 htop 看看资源占用。如果内存快满了,赶紧停掉,加个 swap 再试。

3.2 Autoware源码编译安装

Autoware 的安装比 Apollo 复杂一些。它依赖 ROS,而且版本对不上就各种报错。

3.2.1 安装 ROS

Autoware 官方推荐 ROS Melodic(Ubuntu 18.04)或 ROS Noetic(Ubuntu 20.04)。我个人建议用 Melodic,因为社区支持更成熟。

# 安装 ROS Melodic
sudo apt-get install ros-melodic-desktop-full

# 初始化 rosdep
sudo rosdep init
rosdep update

这里有个坑:rosdep update 经常因为网络问题失败。我试过换源、加代理,最后发现直接挂个 VPN 最省事。

3.2.2 下载 Autoware 源码

# 创建工作空间
mkdir -p ~/autoware_ws/src
cd ~/autoware_ws

# 下载源码
git clone https://github.com/Autoware-AI/autoware.ai.git src/autoware

下载速度慢?用 git clone --depth=1 只拉最新版本,能省不少时间。

3.2.3 编译 Autoware

# 安装依赖
cd ~/autoware_ws
rosdep install -y --from-paths src --ignore-src --rosdistro melodic

# 编译
catkin_make

编译过程中最常见的错误是缺少某个库。比如 libpcap、nlohmann-json 这些。遇到报错别慌,看日志,缺什么装什么。

我的经验:编译 Autoware 时,最好用 catkin_make -j2 限制并行数。不然内存一爆,编译到 99% 突然报错,那才叫崩溃。

3.3 常见踩坑与解决方案

这部分是我最想说的。环境搭建的坑,十个有八个是共通的。

3.3.1 Docker 相关

  • 镜像拉取失败:检查网络,配国内镜像源。推荐使用阿里云或中科大的镜像。
  • 容器启动后无法连接:多半是端口映射问题。用 docker ps 查看容器状态,用 docker logs 看日志。
  • GPU 无法使用:确认 NVIDIA 驱动版本,安装 nvidia-docker2。

3.3.2 Autoware 相关

  • rosdep update 失败:我曾经试过手动下载 rosdep 的配置文件,但后来发现还是挂 VPN 最靠谱。
  • 编译时缺少依赖:用 rosdep install 自动安装,如果还缺,就手动 sudo apt-get install。
  • Qt 相关报错:Autoware 的 GUI 依赖 Qt。如果报找不到 Qt5,装一下 qtbase5-dev 就行。

3.3.3 通用问题

  • 内存不足:加 swap,或者减少并行编译数。
  • 磁盘空间不够:清理 Docker 镜像缓存,删除不需要的包。
  • 权限问题:所有命令尽量用普通用户执行,别动不动就 sudo。
重要提醒:别在 Windows 上用 WSL 跑这些。我试过,各种玄学问题。老老实实用原生 Linux 或者双系统。

3.4 知识体系总览

下面这张图,是我自己总结的环境搭建核心逻辑。你看一眼,心里就有数了。

环境搭建核心流程 系统准备 Ubuntu 18.04/20.04 核心环境 Docker / ROS Melodic 获取源码/镜像 git clone / docker pull Apollo 路径 bash docker/scripts/dev_start.sh Autoware 路径 rosdep install + catkin_make 可运行的环境 编译通过,能跑 Demo 常见踩坑:内存不足、网络问题、依赖缺失、权限错误

这张图把整个流程串起来了。你照着这个顺序走,基本不会出大问题。

3.5 写在最后

环境搭建这事儿,说白了就是耐心活。别指望一次成功,也别因为报错就放弃。

我刚开始搞自动驾驶的时候,光搭环境就花了一周。后来熟练了,半小时搞定。所以,别急,慢慢来。

如果你在搭建过程中遇到问题,先看日志,再搜社区。大概率有人遇到过同样的问题。

最后提醒:环境搭好后,记得跑一下官方提供的 Demo。能跑通,才算真正成功。

可可精品资料库