3、开发环境搭建:Ubuntu系统配置、ROS2安装与配置、Autoware源码编译与部署
说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多人卡在这一步,一卡就是好几天。我自己刚入行那会儿,也在这上面栽过跟头。所以这一章,咱们把每一步都掰开揉碎了讲清楚。
核心要点: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 本章知识体系
为了让你更直观地理解整个环境搭建的流程,我画了一张图:
这张图清晰地展示了搭建流程:从 Ubuntu 系统层,到 ROS2 中间件层,再到 Autoware 应用层,最后验证。每一层都依赖下一层,所以千万别跳步。
好了,环境搭建就讲到这里。记住,这一步虽然繁琐,但打好基础后面会顺很多。我见过太多人因为环境问题浪费大量时间,所以请务必耐心。