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
装完之后,记得配置环境变量。我个人习惯把它写到.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
接下来装依赖。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
编译过程中可能会报错。最常见的几个:
- 内存不足:加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__)"
全部验证通过后,再跑一次编译:
source install/setup.bash
colcon build --symlink-install
如果没报错,恭喜你,环境搭好了。我曾经有一次编译通过后激动得差点跳起来——那感觉,就像打通了一个超难的关卡。
最后提醒一句:环境搭建只是开始。后面还有传感器标定、地图制作、参数调优...但别急,咱们一章一章来。