环境搭建与基础配置: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 的依赖管理,其实是一个分层结构。我画了一张图,帮你理清思路。
你看,依赖是分层的。底层没装好,上层肯定报错。所以排查问题时,从下往上查。
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,这样报错时方便回溯。
嗯,环境搭建这部分,说白了就是耐心活。我第一次装的时候也踩了不少坑,但只要你按照上面的步骤来,应该能一次过。
环境搭好了,后面数据回放和日志排查才能玩得转。别急,慢慢来。