第一章 开发环境搭建:工欲善其事,必先利其器

做自动驾驶系统开发,环境搭建往往是第一道坎。我记得刚接触Autoware那会儿,光编译就折腾了两天,各种依赖冲突、版本不匹配,搞得人想砸电脑。后来经验多了,才明白——环境搭得好,后面少烦恼。这一章,我就带你一步步把开发环境整利索。

本章核心目标:完成从裸机到可运行Autoware的完整环境搭建,包括Ubuntu系统、ROS2 Humble、Autoware源码编译以及Docker环境配置。

Autoware开发环境 Ubuntu 22.04 系统 ROS2 Humble Autoware源码 Docker环境 双系统/虚拟机 驱动配置 依赖安装 工作空间 编译技巧 镜像管理

1.1 Ubuntu 22.04 系统安装与配置

Autoware官方推荐的是Ubuntu 22.04 LTS。为什么是这个版本?说白了,ROS2 Humble就是基于22.04构建的,用别的版本反而容易出兼容性问题。我个人习惯用双系统,性能比虚拟机好太多,尤其是后面跑感知算法的时候,GPU直通是个大问题。

我的建议:如果你手头有NVIDIA显卡,装系统前先把显卡驱动准备好。我曾经在Ubuntu上装完系统发现显卡驱动死活装不上,最后发现是Secure Boot没关——折腾了整整一个下午。

安装步骤其实不复杂,但有几个关键点要注意:

  1. 分区方案:建议至少分三个区——/(根目录)50GB、/home 100GB以上、swap 16GB(如果你内存够大,swap可以不要)
  2. 软件源:装完系统第一件事,换国内源。阿里云、清华、中科大都可以,速度差距不大
  3. 基础工具:git、curl、vim这些先装上,后面编译会用
# 换源示例(清华源)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y git curl vim build-essential cmake

1.2 ROS2 Humble 安装

ROS2的安装,官方文档写得很详细。但我想说的是——千万别直接apt install ros-humble-desktop,那个包太大了,很多你用不上。我一般只装核心组件,用到什么再补什么。

注意:ROS2 Humble和ROS1 Noetic不能共存于同一系统!如果你之前用过ROS1,建议先清理干净。我见过有人两个版本混着装,结果rosdep都跑不起来。

安装流程分三步走:

  1. 添加ROS2软件源和密钥
  2. 安装ros-humble-ros-base(基础版)或ros-humble-desktop(完整版)
  3. 安装rosdep并初始化
# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 安装ROS2(我一般装这个)
sudo apt update
sudo apt install ros-humble-ros-base

# 初始化rosdep
sudo rosdep init
rosdep update

装完之后,别忘了配置环境变量。我个人习惯把source命令写到.bashrc里,省得每次开终端都要手动敲。

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

1.3 Autoware源码编译与依赖安装

Autoware的源码编译,嗯,这里才是真正的重头戏。Autoware官方提供了两种方式:一种是直接用vcs工具拉取所有依赖,另一种是用Docker。我先讲源码编译,因为这样你能更清楚地看到整个项目的结构。

核心思路:Autoware使用vcs工具管理多个仓库,你需要先创建一个工作空间,然后用vcs import拉取所有源码,最后用colcon编译。

具体步骤:

  1. 创建工作空间
  2. 拉取Autoware源码和依赖
  3. 安装系统依赖
  4. 编译
# 创建工作空间
mkdir -p ~/autoware_ws/src
cd ~/autoware_ws

# 拉取Autoware源码
wget -O autoware.repos https://raw.githubusercontent.com/autowarefoundation/autoware/main/autoware.repos
vcs import src < autoware.repos

# 安装依赖(这一步可能会很久)
sudo apt update
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble

# 编译(建议用-j参数控制并行数,别把CPU跑满)
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

避坑指南:我曾经在编译时遇到"内存不足"的错误,后来发现是swap太小。建议编译前检查一下内存,至少16GB物理内存+16GB swap。如果还不行,可以用colcon build --parallel-workers 2限制并行任务数。

编译时间取决于你的机器配置。我自己的机器(i7-12700 + 32GB内存)大概需要40分钟。如果你用的是笔记本,建议插上电源,别让CPU降频。

1.4 Docker环境配置与使用

说实话,我现在更推荐用Docker。为什么?因为Autoware的依赖太复杂了,不同版本之间可能有冲突。Docker镜像把一切都打包好了,你只需要拉下来就能用。

Docker环境配置其实就三步:

  1. 安装Docker Engine
  2. 拉取Autoware官方镜像
  3. 运行容器
# 安装Docker(官方脚本一键安装)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 将当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER
# 重新登录终端生效

# 拉取Autoware镜像(带CUDA支持)
docker pull autoware/autoware:latest-cuda

# 运行容器(挂载工作空间)
docker run -it --rm \
  --gpus all \
  -v ~/autoware_ws:/home/autoware/autoware_ws \
  autoware/autoware:latest-cuda

注意:如果你要用GPU加速(比如跑深度学习模型),一定要加--gpus all参数,并且确保宿主机已经安装了NVIDIA Container Toolkit。我刚开始用Docker时忘了加这个,结果模型推理速度慢得离谱,还以为是代码写错了。

Docker的好处是隔离性好,坏处是每次启动都要重新source环境。我一般会在容器里写个启动脚本,把常用的source命令和参数都写好,省得每次手动敲。

# 容器内的启动脚本 start_autoware.sh
#!/bin/bash
source /opt/ros/humble/setup.bash
source /home/autoware/autoware_ws/install/setup.bash
exec "$@"

1.5 环境验证

环境搭好了,怎么知道对不对?我一般跑两个测试:

  • ROS2测试:开两个终端,一个跑ros2 run demo_nodes_cpp talker,另一个跑ros2 run demo_nodes_py listener,能看到数据收发就说明ROS2没问题
  • Autoware测试:运行ros2 launch autoware_launch logging_simulator.launch.xml,如果能正常启动没有报错,恭喜你,环境搭好了

我的经验:第一次编译成功后,建议先跑一下官方的示例数据,验证整个pipeline是否通畅。我遇到过编译成功但运行时缺动态库的情况,跑示例数据能快速发现问题。

好了,环境搭建这部分就到这里。记住一句话:环境搭得越仔细,后面开发越省心。别嫌麻烦,把每一步都走扎实了,后面你会感谢自己的。

本章小结:我们完成了Ubuntu 22.04系统配置、ROS2 Humble安装、Autoware源码编译以及Docker环境搭建。现在你的机器已经具备了运行Autoware的基本条件。下一章,我们将正式进入Autoware的架构解析。

可可精品资料库