3、Autoware基础环境搭建:从零开始构建你的自动驾驶开发平台

说实话,Autoware的环境搭建,是我见过最折腾人的环节之一。我记得第一次搞的时候,光编译就花了整整一个下午,中间还崩了三次。但别怕,踩过的坑我都帮你标记好了。咱们一步步来。

3.1 ROS2 Galactic安装与配置

Autoware.Universe目前对ROS2 Galactic的支持最稳定。我个人习惯用Ubuntu 20.04,搭配Galactic,兼容性最好。

安装其实不复杂,但有几个细节要注意:

# 设置语言环境
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

# 添加ROS2源
sudo apt update && sudo apt install curl gnupg lsb-release
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 $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 安装Galactic桌面版
sudo apt update
sudo apt install ros-galactic-desktop
⚠️ 注意: 千万别装错版本。我见过有人装了Foxy然后折腾半天发现不兼容。Galactic是Autoware.Universe官方推荐的版本。

装完之后,记得配置环境变量。我个人习惯把它写到.bashrc里:

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

验证一下是否装好了:

ros2 run demo_nodes_cpp talker
# 另开终端
ros2 run demo_nodes_py listener

如果能看到节点在通信,那就成了。嗯,这里要注意,如果报错说找不到包,八成是环境变量没生效,检查一下source路径对不对。

3.2 Autoware核心组件介绍

Autoware.Universe的架构,说白了就是一堆功能模块拼在一起。我刚开始看的时候也懵,但拆开来看其实就几大块:

组件名称 功能说明 我的经验
感知模块 处理激光雷达、摄像头数据 这块最吃算力,建议用GPU
定位模块 NDT匹配、GNSS融合 NDT参数调起来很玄学
规划模块 路径规划、行为决策 场景越复杂,规划越难搞
控制模块 油门、刹车、转向 PID参数调不好车会晃

你想想看,这些模块之间通过ROS2的Topic通信。比如感知模块检测到障碍物,就发个消息给规划模块,规划模块再告诉控制模块怎么走。说白了就是一套消息传递系统。

3.3 Autoware.Universe源码编译

这才是重头戏。编译Autoware.Universe,我建议你准备好一杯咖啡,因为时间不短。

先拉代码:

mkdir -p ~/autoware_universe
cd ~/autoware_universe
git clone https://github.com/autowarefoundation/autoware.git -b galactic
💡 小技巧: 国内网络拉GitHub代码经常断。我一般用代理或者gitee镜像,省心很多。

接下来装依赖。Autoware的依赖库多到让人头疼,但官方提供了一个脚本:

cd autoware
./setup-dev-env.sh

这个脚本会自动检测你的系统,然后安装各种依赖。但别太信任它——我遇到过它漏装的情况。建议跑完之后手动检查一下:

# 检查关键依赖
ros2 pkg list | grep -E "autoware|tier4"

如果输出为空,说明依赖没装全。这时候就得手动补了:

# 安装常用依赖
sudo apt install python3-pip python3-colcon-common-extensions
pip3 install -U setuptools

编译命令很简单:

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
⚠️ 注意: 第一次编译建议用Release模式,Debug模式编译时间翻倍。我当初不懂,用Debug编译等了三个小时...

编译过程中可能会报错。最常见的几个:

  • 内存不足:加swap或者减少并行编译数(加参数 --parallel-workers 2)
  • 缺少某个库:看报错信息,apt install 对应的库就行
  • Python版本冲突:确保用的是Python 3.8,别用3.10

3.4 依赖库安装与验证

依赖库这块,我踩过不少坑。有些库版本不对,编译到一半就崩了。这里列一下关键依赖:

依赖库 版本要求 安装方式
CUDA 11.4+ NVIDIA官网下载.run文件
Eigen3 3.3.7+ apt install libeigen3-dev
PCL 1.12+ apt install libpcl-dev
OpenCV 4.2+ apt install libopencv-dev

验证依赖是否装好,我一般用这个命令:

# 验证CUDA
nvcc --version

# 验证Eigen
pkg-config --modversion eigen3

# 验证PCL
pcl_viewer --version

# 验证OpenCV
python3 -c "import cv2; print(cv2.__version__)"
💡 小技巧: 如果某个库版本不对,别急着卸载重装。有时候用conda创建独立环境更省事。我就在conda里装了CUDA Toolkit,跟系统自带的互不干扰。

全部验证通过后,再跑一次编译:

source install/setup.bash
colcon build --symlink-install

如果没报错,恭喜你,环境搭好了。我曾经有一次编译通过后激动得差点跳起来——那感觉,就像打通了一个超难的关卡。

最后提醒一句:环境搭建只是开始。后面还有传感器标定、地图制作、参数调优...但别急,咱们一章一章来。