3. 开发环境搭建

说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多人卡在这一步,一卡就是好几天。我自己刚入行那会儿,也在这上面栽过跟头。所以这一章,咱们把每一步都掰开揉碎了讲清楚。

核心要点:Autoware 对系统环境的要求非常严格。版本不对,寸步难行。我建议你严格按照我下面说的版本来,别想着“试试新版本”,大概率会翻车。

3.1 Ubuntu 系统配置

我个人习惯用 Ubuntu 20.04 LTS,搭配 ROS2 Galactic。为什么是这个组合?因为 Autoware 官方对这个组合的支持最成熟,社区资源也最多。你想想看,遇到问题去搜,90% 的答案都是基于这个版本的。

3.1.1 基础系统安装

安装过程我就不赘述了,网上教程一大把。但有几个关键点我得提醒你:

  • 磁盘分区:建议给根目录 / 至少 50GB,/home 分区留 100GB 以上。Autoware 编译完,光源码和依赖就得占 30-40GB。
  • 语言与时区:安装时选 English (US),时区选 Shanghai。别问我为什么,有些中文路径在 ROS2 里会出奇怪的问题。
  • 显卡驱动:如果你有 NVIDIA 显卡,务必装好驱动。我建议用 ubuntu-drivers autoinstall 自动安装,省心。

警告:千万不要用虚拟机!Autoware 需要实时性,虚拟机跑起来延迟高得离谱。我曾经试过,结果控制指令发出去,车都撞墙了还没响应。老老实实用双系统或者实体机。

3.1.2 系统基础配置

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

# 更新软件源
sudo apt update && sudo apt upgrade -y

# 安装基础工具
sudo apt install -y git curl wget vim net-tools

# 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 关闭系统自动休眠(重要!)
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

嗯,这里要注意。关闭自动休眠是血的教训。有一次我在车上调试,电脑休眠了,结果 Autoware 进程全挂了,车差点失控。从那以后,我所有工控机都默认关休眠。

3.2 ROS2 安装与配置

ROS2 Galactic 是 Autoware 官方推荐的版本。为什么不是 Humble 或者 Rolling?说白了,Autoware 的代码是跟着 Galactic 走的,用其他版本你得自己改一堆 CMakeLists.txt,何必呢?

3.2.1 安装 ROS2 Galactic

安装步骤其实很简单,跟着官方文档走就行。我帮你把关键命令整理好了:

# 设置 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 Galactic 桌面版
sudo apt update
sudo apt install ros-galactic-desktop -y

# 安装编译工具
sudo apt install python3-colcon-common-extensions -y

小技巧:安装完成后,记得把 ROS2 环境变量加到 .bashrc 里。我习惯这样写:

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

这样每次打开终端就不用手动 source 了。

3.2.2 验证安装

装完别急着走,先跑个 demo 验证一下:

# 终端1:启动 talker
ros2 run demo_nodes_cpp talker

# 终端2:启动 listener
ros2 run demo_nodes_py listener

如果你能看到 talker 在发消息,listener 在收消息,那就说明 ROS2 装好了。如果没反应,检查一下网络防火墙,ROS2 用的是 DDS,有些企业网络会拦截。

3.3 Autoware 源码编译与部署

终于到重头戏了。Autoware 的编译,说白了就是一场耐心的考验。我第一次编译的时候,看着终端刷刷刷地跑,等了快两个小时。别急,慢慢来。

3.3.1 获取源码

Autoware 的源码托管在 GitHub 上。我建议用 v1.0.0 这个稳定版本:

# 创建工作空间
mkdir -p ~/autoware_ws/src
cd ~/autoware_ws

# 克隆源码(建议用 SSH,速度更快)
git clone https://github.com/autowarefoundation/autoware.git src/autoware --branch v1.0.0

# 更新子模块
cd src/autoware
git submodule update --init --recursive

注意:子模块更新这一步特别容易卡住。因为有些子模块在 GitHub 上,国内网络访问慢。我建议你提前配好代理,或者用 Gitee 镜像。我曾经在客户现场,没网,硬是折腾了一天才搞定。

3.3.2 安装依赖

Autoware 的依赖非常多,包括 ROS2 包、系统库、Python 包等等。官方提供了一个脚本来自动安装:

cd ~/autoware_ws
./src/autoware/setup_dependencies.sh

这个脚本会帮你装好所有依赖。但注意,它可能会装一些你不需要的东西。我个人习惯是跑完之后,再用 rosdep 检查一遍:

sudo rosdep init
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro galactic

3.3.3 编译源码

编译是最后一步,也是最耗时的一步。我建议用 colcon 来编译:

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

几个参数说明一下:

  • --symlink-install:用符号链接安装,这样你修改 Python 脚本后不用重新编译。
  • -DCMAKE_BUILD_TYPE=Release:编译 Release 版本,性能更好。

编译过程中,你可能会遇到各种报错。别慌,大部分都是依赖缺失或者版本不对。我总结了一个常见问题表:

错误信息 原因 解决方法
Could not find a package configuration file 缺少某个 ROS2 包 sudo apt install ros-galactic-xxx
CUDA not found 显卡驱动或 CUDA 未安装 安装 NVIDIA 驱动和 CUDA Toolkit
Python module not found 缺少 Python 依赖 pip install xxx
内存不足 编译时内存不够 减少并行编译数:colcon build --parallel-workers 2

避坑指南:我曾经在编译时遇到 std::filesystem 相关的错误,折腾了半天才发现是 GCC 版本太低。Autoware 要求 GCC 9.3 以上。检查一下:gcc --version。如果版本不对,升级一下:

sudo apt install gcc-9 g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100

3.3.4 验证部署

编译完成后,source 一下环境变量:

echo "source ~/autoware_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

然后跑一个简单的测试,看看能不能启动 Autoware 的核心节点:

ros2 launch autoware_launch logging_simulator.launch.xml map_path:=/path/to/your/map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit

如果能看到 Rviz 界面弹出来,并且有地图和车辆模型,那就恭喜你,环境搭建成功了!

3.4 本章知识体系

为了让你更直观地理解整个环境搭建的流程,我画了一张图:

Autoware 开发环境搭建流程 Ubuntu 20.04 LTS 系统配置 磁盘分区 | 显卡驱动 | 系统更新 | 关闭休眠 ROS2 Galactic 安装与配置 ROS2 基础包 | 编译工具 | DDS 配置 | 环境变量 Autoware 源码编译与部署 源码获取 | 依赖安装 | colcon 编译 | 环境验证 启动仿真验证 → 环境搭建完成 从底层到上层,逐层搭建

这张图清晰地展示了搭建流程:从 Ubuntu 系统层,到 ROS2 中间件层,再到 Autoware 应用层,最后验证。每一层都依赖下一层,所以千万别跳步。

好了,环境搭建就讲到这里。记住,这一步虽然繁琐,但打好基础后面会顺很多。我见过太多人因为环境问题浪费大量时间,所以请务必耐心。