1. Autoware概述与环境搭建

各位同学好,我是你们这门课的主讲。今天咱们聊聊Autoware的来龙去脉,以及怎么把它的开发环境搭起来。

说实话,我第一次接触Autoware是在2018年。那时候它还是个刚起步的开源项目,文档少得可怜。现在再看,已经成了自动驾驶领域绕不开的标杆。嗯,这中间的变化,我算是亲眼见证了。

1.1 Autoware发展史

Autoware最早是日本名古屋大学的加藤教授团队搞出来的。2015年首次开源,那时候还叫"Autoware.ai"。说白了,就是想把自动驾驶的门槛降下来,让更多开发者能参与。

我给大家梳理几个关键节点:

  • 2015年:Autoware 1.0发布,基于ROS1,主要做感知和规划
  • 2018年:加入Autoware Foundation,开始规范化发展
  • 2020年:Autoware.Auto发布,转向ROS2架构
  • 2022年:Autoware Universe成为主流版本,功能模块化更清晰

你想想看,从最初只能跑个demo,到现在能支撑完整的L4级自动驾驶系统,这进步速度确实惊人。

核心变化:从ROS1迁移到ROS2,解决了实时性和安全性两大痛点。我在项目中遇到过ROS1节点崩溃导致整个系统挂掉的情况,换成ROS2后,这种问题基本没再出现过。

1.2 核心功能模块介绍

Autoware的功能模块,我习惯把它分成三大块:感知、规划、控制。咱们用一张图来看清楚:

Autoware核心功能模块架构 感知模块 激光雷达点云处理 摄像头图像识别 毫米波雷达融合 目标检测与跟踪 语义分割 车道线检测 障碍物分类 传感器标定 规划模块 全局路径规划 行为规划 运动规划 速度规划 轨迹优化 避障规划 停车规划 路径重规划 控制模块 横向控制 纵向控制 PID控制 MPC控制 油门/刹车映射 转向控制 车辆状态估计 执行器接口 感知结果 规划轨迹 数据流向:传感器 → 感知模块 → 规划模块 → 控制模块 → 车辆执行器

这张图我画了好几次才满意。你注意看箭头方向,数据是从左往右流的。传感器数据先进感知模块,处理完交给规划模块,最后控制模块去执行。逻辑很清晰。

1.3 Ubuntu + ROS2环境搭建

我个人习惯用Ubuntu 22.04 + ROS2 Humble这个组合。为什么?因为稳定。我在2023年用Ubuntu 20.04搭过一次,折腾了两天才搞定依赖问题。换成22.04后,半小时就搞定了。

具体步骤:

  1. 安装Ubuntu 22.04 - 建议用双系统,别用虚拟机。虚拟机跑Autoware会卡到你怀疑人生。
  2. 配置系统源 - 换成国内镜像源,不然下载速度会让你崩溃。
  3. 安装ROS2 Humble - 官方教程很详细,照着来就行。
  4. 安装依赖包 - 包括Eigen3、PCL、OpenCV这些。

小技巧:安装ROS2时,记得把ros-humble-desktop和ros-humble-dev都装上。前者是运行环境,后者是开发环境。我刚开始只装了desktop,结果编译代码时各种报错,折腾了半天才发现少了dev包。

安装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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 安装ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop ros-humble-dev

1.4 Autoware源码编译与安装

Autoware的编译,我建议用源码编译。虽然官方提供了Docker镜像,但源码编译能让你更清楚整个系统的结构。出了问题也知道去哪找。

编译前要确认几件事:

  • 硬盘空间至少留50GB - 编译产物很占地方
  • 内存建议16GB以上 - 我8GB的笔记本编译到一半直接OOM了
  • 网络要稳定 - 下载依赖包时断网会非常痛苦

注意:千万不要在root用户下编译Autoware!我曾经图省事用root编译,结果权限混乱,最后只能重装系统。血的教训。

编译步骤:

# 创建工作空间
mkdir -p ~/autoware_ws/src
cd ~/autoware_ws

# 下载源码
wget https://raw.githubusercontent.com/autowarefoundation/autoware/main/autoware.repos
vcs import src < autoware.repos

# 安装依赖
source /opt/ros/humble/setup.bash
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble

# 编译
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

编译时间取决于你的机器配置。我用的i7-12700H + 32GB内存,大概需要40分钟。如果你用笔记本,建议插上电源,别让电脑睡着。

编译完成后,别忘了设置环境变量:

echo "source ~/autoware_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证安装是否成功:

ros2 launch autoware_launch logging_simulator.launch.xml map_path:=/path/to/map vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit

如果能看到Rviz界面正常启动,恭喜你,环境搭好了。

避坑指南:编译时如果遇到"Could not find a package configuration file"这类错误,别慌。大概率是某个依赖没装全。运行rosdep install --from-paths src --ignore-src -r -y再试一次。我遇到过三次这种问题,都是依赖没装全导致的。

好了,环境搭建就讲到这里。记住,搭建环境是第一步,也是最容易出问题的一步。耐心点,慢慢来。

可可精品资料库