2. Autoware源码编译与安装

说实话,Autoware的编译安装,是很多新手的第一道坎。

我记得我第一次接触Autoware时,光编译就折腾了两天。不是缺依赖,就是版本不对,最后发现是CMake缓存没清干净。嗯,这些坑我今天都会帮你避开。

2.1 源码获取

源码获取其实很简单,但有几个细节要注意。

我个人习惯用SSH方式克隆,省得每次输密码:

git clone git@github.com:autowarefoundation/autoware.git

如果你用HTTPS,也行:

git clone https://github.com/autowarefoundation/autoware.git

这里有个坑——分支选择。Autoware有多个版本,比如 main、beta、galactic 等。我建议初学者直接选 main 分支,稳定且文档齐全。

小提示: 克隆完成后,记得检查子模块是否完整:
git submodule update --init --recursive
我曾经漏掉这一步,结果编译到一半报错找不到头文件,排查了半天。

2.2 编译工具介绍(colcon)

Autoware用的是colcon编译工具。说白了,colcon就是ROS 2时代的catkin_make升级版。

为什么用colcon?三个理由:

  • 并行编译:默认利用所有CPU核心,速度飞快
  • 依赖管理:自动解析包依赖顺序,不用你操心
  • 隔离性好:每个包的编译环境独立,不会互相污染

安装colcon很简单:

sudo apt install python3-colcon-common-extensions

你想想看,如果没有colcon,手动管理几十个ROS包的编译顺序,那得多痛苦。

2.3 编译流程详解

编译流程分三步走,我一步步说清楚。

第一步:安装系统依赖

Autoware依赖很多系统库,比如Eigen、OpenCV、PCL等。官方提供了一个脚本,一键安装:

cd autoware
./setup-dev-env.sh

这个脚本会自动检测你的Ubuntu版本,安装对应的依赖包。我在Ubuntu 20.04和22.04上都跑过,基本没问题。

注意: 如果网络不好,可能会卡在某个包下载上。建议换国内源,比如清华源或阿里源。

第二步:创建工作空间并编译

我个人习惯在 ~/autoware_ws 下操作:

mkdir -p ~/autoware_ws/src
cd ~/autoware_ws
colcon build --symlink-install

这里 --symlink-install 参数很实用。它用符号链接代替文件复制,你修改源码后不用重新编译,直接运行就能生效。调试时特别方便。

编译过程中,你会看到类似这样的输出:

Starting >>> autoware_common
Finished <<< autoware_common [12.3s]
Starting >>> autoware_planning
...
Summary: 120 packages finished [5min 23s]
  2 packages had stderr output: autoware_control, autoware_sensing

看到 Summary 就说明编译完成了。如果有 stderr output,别慌,不一定都是错误,有些只是警告。

第三步:设置环境变量

编译完成后,需要source一下才能使用:

source ~/autoware_ws/install/setup.bash

我建议把这行加到 ~/.bashrc 里,省得每次开终端都要手动执行。

2.4 常见编译错误排查

编译过程中,你大概率会遇到错误。别怕,我总结了几种最常见的,以及解决方法。

错误类型 典型报错 解决方法
依赖缺失 Could not find a package configuration file 运行 rosdep install --from-paths src --ignore-src -r -y
版本冲突 ABI compatibility warning 检查ROS 2版本是否匹配,建议用Galactic或Humble
内存不足 Killed 或 std::bad_alloc 减少并行任务:colcon build --parallel-workers 2
CMake缓存问题 莫名其妙的链接错误 删除 build/ 和 install/ 目录,重新编译
避坑指南: 我曾经遇到一个诡异错误——编译到80%突然报错,说某个头文件找不到。折腾了半天,最后发现是之前编译中断,导致缓存文件损坏。从那以后,我每次编译前都会先清理:
rm -rf build/ install/ log/
colcon build --symlink-install

2.5 安装验证

编译完成后,怎么确认安装成功?我一般做三件事:

  1. 检查节点列表:运行 ros2 node list,看能不能看到Autoware的节点
  2. 运行示例:启动一个简单的demo,比如 ros2 launch autoware_launch logging_simulator.launch.xml
  3. 查看版本号:ros2 pkg list | grep autoware,确认包都安装到位

如果以上三步都通过,恭喜你,Autoware已经成功装好了。

额外建议: 安装完成后,可以跑一下官方提供的 autoware_test 包,它会自动检测所有核心功能是否正常。我每次装完新环境都会跑一遍,图个安心。

知识体系总览

下面这张图,帮你理清本章的核心逻辑:

Autoware源码编译与安装 - 知识体系 源码获取 编译工具(colcon) 编译流程 错误排查 git clone 分支选择 子模块更新 安装colcon 并行编译 symlink模式 安装依赖 colcon build source环境 依赖缺失 版本冲突 内存不足 缓存问题 安装验证

这张图从左到右展示了完整的编译流程。你跟着箭头走,每一步都有对应的操作和注意事项。遇到问题就往右看,错误排查部分基本能覆盖90%的情况。

好了,关于编译安装就讲这么多。记住一句话:耐心是编译的第一生产力。遇到错误别慌,对照表格排查,基本都能解决。

可可精品资料库