Apollo 10.0自动驾驶源码编译实战:从环境配置到避坑指南

1次阅读
没有评论

共计 1998 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景与痛点

对于刚接触 Apollo 自动驾驶平台的开发者来说,编译源码往往是第一个拦路虎。常见问题包括:

Apollo 10.0 自动驾驶源码编译实战:从环境配置到避坑指南

  • 环境配置复杂:需要特定版本的 Ubuntu、Docker、CUDA 等组件,版本不匹配会导致后续步骤失败
  • 依赖冲突:第三方库(如 Protobuf、Eigen)的版本管理容易出现问题
  • 编译失败:大型 C ++ 项目编译时间长,中间错误难以定位
  • 资源消耗大:默认配置可能需要 32GB 以上内存,普通开发机难以承受

环境准备

硬件要求

  • 推荐配置:
  • CPU:Intel i7 或同等性能处理器(至少 4 核)
  • 内存:32GB 及以上(16GB 勉强可运行但可能编译失败)
  • 存储:SSD 硬盘,至少 100GB 可用空间
  • GPU:NVIDIA 显卡(建议 RTX 2060 及以上),需支持 CUDA 11.1

软件要求

  1. 操作系统:Ubuntu 18.04/20.04 LTS(本文以 20.04 为例)
  2. Docker:19.03+(必须支持 NVIDIA 容器运行时)
  3. NVIDIA 驱动:450.80.02+
  4. 其他工具:
  5. git
  6. curl
  7. vim(或其他编辑器)

详细编译步骤

1. 系统环境初始化

# 安装基础工具
sudo apt update && sudo apt install -y git curl

# 安装 NVIDIA 容器工具包
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update && sudo apt install -y nvidia-docker2
sudo systemctl restart docker

2. 获取 Apollo 源码

# 克隆代码仓库(国内推荐使用镜像源)git clone https://github.com/ApolloAuto/apollo.git
cd apollo

git checkout v10.0.0  # 切换到 10.0 版本

3. 启动 Docker 开发环境

# 构建开发镜像(首次执行需要较长时间)bash docker/scripts/dev_start.sh

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

4. 编译 Apollo

在 Docker 容器内执行:

# 初始化工作空间
./apollo.sh clean
./apollo.sh build_opt

# 完整编译(- j 参数根据 CPU 核心数调整)./apollo.sh build_opt -j8

常见问题与解决方案

问题 1:Docker 容器启动失败

现象 :执行dev_start.sh 后提示 NVIDIA 驱动相关错误

解决

  1. 确认已正确安装 NVIDIA 驱动
  2. 检查 docker 服务状态:sudo systemctl status docker
  3. 重新加载配置:sudo systemctl daemon-reload

问题 2:编译时内存不足

现象:编译过程中被 kill,日志显示 ’OOM’ 错误

解决

  • 临时方案:减少并行编译线程数
    ./apollo.sh build_opt -j4  # 改为 4 线程
  • 长期方案:增加 swap 空间
    sudo fallocate -l 8G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile

问题 3:Protobuf 版本冲突

现象:编译时提示 ’protobuf version mismatch’

解决

# 在 Docker 容器内执行
sudo apt remove libprotobuf-dev
./apollo.sh clean
./apollo.sh build_opt

优化建议

  1. 增量编译:修改代码后只需重新编译变更模块

    ./apollo.sh build_opt module_name  # 例如:planning

  2. CCache 加速

    echo 'export USE_CCACHE=1' >> ~/.bashrc
    source ~/.bashrc
    ccache -M 10G  # 设置 10GB 缓存

  3. 选择性编译

    # 只编译必要模块
    ./apollo.sh build_opt cyber perception

总结与展望

成功编译 Apollo 源码只是自动驾驶开发的第一步。建议后续:

  1. 运行演示程序验证编译结果

    # 启动 Dreamview 可视化工具
    bash scripts/bootstrap.sh

  2. 阅读模块文档了解系统架构

  3. 尝试修改控制算法或感知模型

Apollo 作为成熟的自动驾驶平台,其代码质量高、模块划分清晰,是学习自动驾驶技术的优秀开源项目。希望本文能帮助你顺利跨过编译这道门槛,进入更深入的技术探索。

正文完
 0
评论(没有评论)