2. 开发环境搭建:Ubuntu + ROS2 + Autoware源码编译、依赖安装与工作空间配置
说实话,环境搭建这一步,劝退了很多人。
我见过不少同学,Autoware代码都下好了,结果卡在编译上,一卡就是两三天。我自己刚入坑的时候也踩过不少坑,尤其是ROS2和Autoware版本匹配的问题,折腾得我差点想换行。嗯,今天咱们就把这事彻底捋清楚。
2.1 系统选择:为什么我推荐Ubuntu 22.04
Autoware目前对Ubuntu的支持最成熟。我个人习惯用Ubuntu 22.04 LTS,原因很简单:ROS2 Humble官方支持的就是22.04,而Autoware最新版也是基于Humble开发的。你想想看,如果系统版本不对,后面全是坑。
| Ubuntu版本 | 对应ROS2版本 | Autoware兼容性 | 我的建议 |
|---|---|---|---|
| 20.04 LTS | Foxy / Galactic | 部分支持(需旧版) | 不推荐,依赖太老 |
| 22.04 LTS | Humble | 完全支持 | ✅ 首选 |
| 24.04 LTS | Rolling | 实验性支持 | ❌ 别碰,会哭 |
2.2 ROS2 Humble 安装
ROS2的安装其实不复杂,但有几个细节要注意。说白了,就是加源、更新、安装三步走。
# 1. 设置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
# 2. 添加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
# 3. 安装ROS2 Humble桌面版(包含可视化工具)
sudo apt update
sudo apt install ros-humble-desktop
# 4. 安装开发工具
sudo apt install ros-dev-tools
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
2.3 Autoware源码下载
Autoware的代码量很大,直接git clone会等很久。我建议用--depth 1参数,只拉取最新版本,省时间也省硬盘。
# 创建工作空间
mkdir -p ~/autoware_ws/src
cd ~/autoware_ws
# 下载Autoware源码(带子模块)
git clone --depth 1 https://github.com/autowarefoundation/autoware.git src/autoware
# 初始化子模块
cd src/autoware
git submodule update --init --recursive
这里有个坑——子模块下载特别慢,尤其是有些依赖在GitHub上,网络不好的时候会卡住。我曾经在公司网络下等了40分钟还没下完,后来换了手机热点才搞定。
2.4 依赖安装:一个脚本搞定大部分
Autoware官方提供了一个依赖安装脚本,但说实话,它不一定能一次跑通。我建议分两步走:先装系统依赖,再装Python依赖。
# 进入Autoware目录
cd ~/autoware_ws/src/autoware
# 运行官方依赖安装脚本
./setup-dev-env.sh
# 安装Python依赖
pip3 install -r requirements.txt
为什么会这样?因为有些依赖是系统级的,比如CUDA、TensorRT,这些需要手动配置。脚本只能装那些apt能搞定的包。
| 依赖类型 | 安装方式 | 常见问题 |
|---|---|---|
| 系统依赖(apt) | setup-dev-env.sh | 网络超时,换源可解决 |
| Python依赖(pip) | requirements.txt | 版本冲突,建议用虚拟环境 |
| CUDA / TensorRT | 手动安装 | 版本必须匹配Autoware要求 |
2.5 工作空间配置与编译
依赖装好之后,就可以编译了。Autoware用的是colcon编译工具,和ROS2的编译方式一样。
# 回到工作空间根目录
cd ~/autoware_ws
# 编译(第一次编译会很慢,大概30分钟到1小时)
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
# 如果只想编译某个包,可以指定
colcon build --packages-select autoware_planning
嗯,这里要注意,第一次编译时,colcon会下载很多第三方依赖,比如Boost、Eigen、PCL这些。如果网络不好,建议先手动把这些库装好。
--symlink-install参数,这样修改Python代码后不需要重新编译,直接就能生效。调试的时候特别方便。
2.6 验证环境是否搭建成功
编译完成后,别急着跑。先验证一下环境是否正常。
# 1. 检查ROS2环境
ros2 --version
# 2. 检查Autoware是否编译成功
source install/setup.bash
ros2 launch autoware_launch logging_simulator.launch.xml
# 3. 如果能看到Rviz界面,说明环境搭建成功
如果启动时提示找不到某个包,别慌。大概率是source没执行,或者编译时某个包失败了。可以用colcon build --packages-skip跳过有问题的包,先跑通核心功能。
2.7 知识体系总览
下面这张图,是我自己整理的环境搭建核心流程。你跟着走,基本不会出大问题。
这张图把整个流程串起来了。你跟着走,每一步都验证一下,基本不会出大问题。如果卡住了,回头看看是不是哪一步跳过了。