第3章:环境搭建实战
说实话,环境搭建这事儿,看着简单,做起来全是坑。
我见过太多人,代码写得飞起,结果卡在环境上三天出不来。我自己也踩过不少雷,今天就把这些经验掰开揉碎了讲给你听。
3.1 Apollo Docker环境部署
Apollo 官方推荐用 Docker,说白了就是为了省心。但你要是直接照着文档敲命令,大概率会翻车。
3.1.1 准备工作
先确认你的机器。我建议至少 16G 内存,200G 硬盘。别问我为什么,我试过 8G 内存跑 Apollo,编译到一半直接卡死。
系统方面,Ubuntu 18.04 或 20.04 都行。我个人习惯用 18.04,因为踩过的坑少一些。
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 这些。遇到报错别慌,看日志,缺什么装什么。
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。
3.4 知识体系总览
下面这张图,是我自己总结的环境搭建核心逻辑。你看一眼,心里就有数了。
这张图把整个流程串起来了。你照着这个顺序走,基本不会出大问题。
3.5 写在最后
环境搭建这事儿,说白了就是耐心活。别指望一次成功,也别因为报错就放弃。
我刚开始搞自动驾驶的时候,光搭环境就花了一周。后来熟练了,半小时搞定。所以,别急,慢慢来。
如果你在搭建过程中遇到问题,先看日志,再搜社区。大概率有人遇到过同样的问题。