环境搭建与基础配置:Ubuntu + ROS2环境准备、Autoware源码编译与安装、依赖管理与常见环境问题

说实话,Autoware 的环境搭建,是很多人入门时第一个坎。

我记得我第一次装 Autoware,光编译就折腾了两天。后来发现,其实不是 Autoware 难装,而是环境没搞对。你想想看,一个依赖几百个包的系统,稍微一个版本对不上,编译就崩了。

所以这一章,我带你把环境搭稳。别急,一步步来。

1. Ubuntu 系统准备

我个人习惯用 Ubuntu 20.04。为什么?因为 Autoware 官方对 20.04 的支持最成熟。ROS2 的 Foxy 版本也是基于 20.04 的。

嗯,这里要注意:不要用 Ubuntu 22.04 装 Autoware.Universe。我试过,依赖冲突多到你想砸电脑。

⚠️ 避坑指南
我曾经在 Ubuntu 22.04 上强行编译 Autoware,结果卡在 CUDA 和 TensorRT 的版本兼容上,折腾了三天。最后老老实实换回 20.04,一次过。

系统安装完成后,先做几件事:

  • 更新软件源:sudo apt update && sudo apt upgrade -y
  • 安装基础工具:sudo apt install -y git curl wget vim
  • 设置时区:sudo timedatectl set-timezone Asia/Shanghai

这些看起来简单,但很多人会忽略。尤其是时区,后面看日志时,时间对不上会很头疼。

2. ROS2 Foxy 安装

Autoware 依赖 ROS2,我们选 Foxy 版本。为什么不是 Galactic 或 Humble?因为 Autoware 官方 CI 跑的就是 Foxy,跟着官方走最稳。

安装步骤其实就几条命令:

# 设置 locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# 添加 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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 安装 ROS2 Foxy
sudo apt update
sudo apt install ros-foxy-desktop python3-argcomplete -y

# 设置环境变量
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc

装完后,验证一下:

ros2 run demo_nodes_cpp talker

如果能听到 "Hello World" 循环输出,说明 ROS2 装好了。

💡 小技巧
我习惯把 ROS2 的环境变量也加到 .bashrc 里,这样每次打开终端就不用手动 source 了。很多人忘了这一步,后面编译 Autoware 时总报找不到 ros2 命令。

3. Autoware 源码编译与安装

Autoware 的源码编译,说白了就是三步:拉代码、装依赖、编译。

但每一步都有坑。我一个个说。

3.1 拉取源码

mkdir -p ~/autoware_ws/src
cd ~/autoware_ws
git clone https://github.com/autowarefoundation/autoware.git src/autoware
cd src/autoware
git checkout foxy

注意分支。我见过有人直接拉 master 分支,结果编译到一半发现 API 变了,又得重来。

3.2 安装依赖

Autoware 的依赖管理用的是 vcs 工具。它会根据一个 .repos 文件,自动拉取所有第三方库。

cd ~/autoware_ws
sudo apt install -y python3-vcstool python3-pip
vcs import src < src/autoware/autoware.repos

这一步会下载很多包,比如 ndt_omp、lanelet2 等等。网络不好的话,容易超时。我建议用代理,或者多试几次。

📌 关键点
依赖下载完成后,别忘了安装系统依赖:
rosdep install -y --from-paths src --ignore-src --rosdistro foxy
这一步会安装所有 ROS2 包的依赖。很多人漏了这一步,编译时疯狂报错。

3.3 编译

编译用 colcon,这是 ROS2 的编译工具。

cd ~/autoware_ws
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

第一次编译会很慢,大概 30 分钟到 1 小时。取决于你的 CPU 和内存。

我建议用 --symlink-install 参数,这样修改 Python 脚本后不用重新编译,直接生效。调试时特别方便。

⚠️ 常见编译错误
  • 内存不足:编译时卡死。建议至少 8GB 内存,16GB 更稳。
  • CUDA 版本不对:Autoware 依赖 CUDA 11.x。用 nvcc --version 检查。
  • Python 包冲突:建议用虚拟环境,或者直接用系统 Python。

4. 依赖管理详解

Autoware 的依赖管理,其实是一个分层结构。我画了一张图,帮你理清思路。

Autoware 依赖管理分层结构 系统依赖层 Ubuntu 20.04 + CUDA 11.x + TensorRT 8.x + OpenCV 4.x ROS2 依赖层 ros-foxy-desktop + rosdep 自动安装的 ROS 包 第三方库层 ndt_omp, lanelet2, kalman_filter, etc. (通过 vcs import 管理) Autoware 核心代码层 感知 / 规划 / 控制 / 定位 等模块

你看,依赖是分层的。底层没装好,上层肯定报错。所以排查问题时,从下往上查。

5. 常见环境问题与解决方案

这部分我直接列成表格,方便你对照排查。

问题现象 可能原因 解决方案
colcon build 报 "Could not find a package configuration file" 缺少某个 ROS 依赖包 运行 rosdep install --from-paths src --ignore-src -r -y
编译时卡死或 OOM 内存不足 用 colcon build --parallel-workers 2 限制并行数
运行 Autoware 时找不到 libcuda.so CUDA 路径未设置 在 .bashrc 中添加 export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
vcs import 超时 网络问题 使用代理,或手动下载 .repos 中的仓库
ros2 run 报 "command not found" ROS2 环境未 source 检查 .bashrc 中是否有 source /opt/ros/foxy/setup.bash
🔧 我的调试习惯
每次编译前,我都会先跑一遍 rosdep install。别嫌麻烦,这一步能省掉你后面 80% 的报错。另外,我习惯把编译日志重定向到文件:colcon build 2>&1 | tee build.log,这样报错时方便回溯。

嗯,环境搭建这部分,说白了就是耐心活。我第一次装的时候也踩了不少坑,但只要你按照上面的步骤来,应该能一次过。

环境搭好了,后面数据回放和日志排查才能玩得转。别急,慢慢来。

可可精品资料库