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/ 目录,重新编译 |
rm -rf build/ install/ log/
colcon build --symlink-install
2.5 安装验证
编译完成后,怎么确认安装成功?我一般做三件事:
- 检查节点列表:运行
ros2 node list,看能不能看到Autoware的节点 - 运行示例:启动一个简单的demo,比如
ros2 launch autoware_launch logging_simulator.launch.xml - 查看版本号:
ros2 pkg list | grep autoware,确认包都安装到位
如果以上三步都通过,恭喜你,Autoware已经成功装好了。
autoware_test 包,它会自动检测所有核心功能是否正常。我每次装完新环境都会跑一遍,图个安心。
知识体系总览
下面这张图,帮你理清本章的核心逻辑:
这张图从左到右展示了完整的编译流程。你跟着箭头走,每一步都有对应的操作和注意事项。遇到问题就往右看,错误排查部分基本能覆盖90%的情况。
好了,关于编译安装就讲这么多。记住一句话:耐心是编译的第一生产力。遇到错误别慌,对照表格排查,基本都能解决。