第一章:Autoware概述与环境准备
大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊Autoware的来龙去脉,以及怎么把它的家——也就是开发环境——给拾掇利索。
说实话,我最早接触Autoware的时候,它还只是个“毛头小子”,功能远没现在这么全。那时候我为了跑通一个demo,折腾了整整三天。现在回想起来,很多坑其实都是环境没配好。所以这一章,我希望能帮你把地基打牢,后面咱们才能盖高楼。
1.1 Autoware发展历程:从实验室到工业级
Autoware的故事,得从2015年说起。它最初是名古屋大学的一个开源项目,目标很纯粹——让自动驾驶的研究门槛降下来。
我记得那时候,大家想搞自动驾驶,要么用商业软件,贵得要命;要么自己从零写,累得半死。Autoware的出现,就像给这个圈子扔了一颗“炸弹”。
它经历了几个关键阶段:
- Autoware.AI(ROS1时代):基于ROS1,功能模块化,但实时性和稳定性一般。我那时候用它做感知,经常因为节点崩溃而重启。
- Autoware.Auto(ROS2过渡):开始拥抱ROS2,引入了更安全的架构。说实话,这个版本有点“夹生”,很多功能不完善。
- Autoware.Universe(当前主流):基于ROS2,模块化程度极高,支持微调。我个人觉得,这才是真正能上车的版本。
你想想看,从实验室里跑个demo,到现在能支撑L4级别的无人驾驶出租车,Autoware走了将近十年。这背后是无数工程师的汗水,也包括我自己的。
核心观点:Autoware不是一成不变的。它的演进史,其实就是自动驾驶技术从“能跑”到“跑得好”的缩影。
1.2 核心功能模块介绍:Autoware的“五脏六腑”
Autoware之所以强大,是因为它把自动驾驶的各个环节都拆成了独立的模块。说白了,就像搭积木一样,你需要什么功能,就插什么模块。
我习惯把它分成四大块:
| 模块 | 功能 | 我踩过的坑 |
|---|---|---|
| 感知(Perception) | 处理激光雷达、摄像头、毫米波雷达的数据,识别障碍物、车道线、交通标志。 | 曾经因为点云滤波参数没调好,把一辆静止的卡车当成了“噪声”滤掉了…… |
| 定位(Localization) | 结合GPS、IMU、激光雷达点云匹配,确定车辆在地图上的精确位置。 | 在隧道里GPS信号丢失,全靠NDT匹配撑着,差点跑偏。 |
| 规划(Planning) | 包括全局路径规划(从A到B)和局部路径规划(避障、变道)。 | 有一次规划出的路径直接穿过了花坛,因为地图里没标…… |
| 控制(Control) | 将规划出的轨迹转化为油门、刹车、转向指令。 | PID参数没调好,车在直道上走起了“蛇形”。 |
嗯,这里要注意,这些模块不是孤立的。它们通过ROS2的Topic和Service通信,形成一个闭环。比如感知模块发现前面有障碍物,会立刻通知规划模块重新计算路径。
我的建议:刚开始学,别急着把所有模块都跑通。先盯着一个模块(比如感知)死磕,搞透了再扩展。贪多嚼不烂。
1.3 Ubuntu系统配置:选对版本,少走弯路
Autoware对操作系统有严格要求。我个人强烈推荐Ubuntu 22.04 LTS。为什么?因为ROS2 Humble(Autoware.Universe的官方搭档)就是基于它开发的。
我曾经试过用Ubuntu 20.04硬装,结果各种依赖冲突,折腾了两天。后来老老实实重装了22.04,半小时搞定。你想想看,何必跟自己过不去呢?
安装步骤其实不复杂,但有几个细节要注意:
- 语言设置:安装时选English(US),避免中文路径导致的问题。
- 磁盘分区:建议给根目录(/)至少50GB,因为后面要装很多依赖库。
- 显卡驱动:如果你用NVIDIA显卡,记得装驱动。我习惯用“Software & Updates”里的“Additional Drivers”来装,省心。
警告:千万别用WSL(Windows Subsystem for Linux)来跑Autoware!虽然能装,但实时性和硬件访问(比如串口、USB摄像头)会有大问题。我试过,最后放弃了。
1.4 ROS2环境搭建:从“Hello World”到“Hello Autoware”
ROS2是Autoware的“骨架”。没有它,所有模块都跑不起来。我建议你安装ROS2 Humble,这是目前最稳定的版本。
安装命令很简单,但容易出错的地方是源的选择。我曾经因为用了国内的镜像源,结果包不全,编译时缺了一堆依赖。后来我改用官方源,虽然慢点,但一次成功。
# 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop
装完之后,记得把ROS2的环境变量加到.bashrc里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
然后跑个测试:
ros2 run demo_nodes_cpp talker
如果能看到“Hello World”不断输出,恭喜你,ROS2环境搞定了。
小技巧:我习惯同时安装colcon(编译工具)和rosdep(依赖管理工具)。这两个是后面编译Autoware的必备品。
1.5 依赖库安装:别让“缺包”卡住你
Autoware的依赖库非常多,包括Eigen、PCL、OpenCV、Ceres等等。手动一个个装?太累了。我推荐用vcs工具配合rosdep来自动安装。
具体做法是:
- 从Autoware官方仓库下载
autoware.repos文件,里面列出了所有依赖的仓库地址。 - 用
vcs import命令把这些仓库拉到本地。 - 用
rosdep install自动安装所有系统依赖。
# 安装vcs
sudo apt install python3-vcstool
# 下载autoware.repos
wget https://raw.githubusercontent.com/autowarefoundation/autoware/main/autoware.repos
# 导入所有仓库
mkdir -p ~/autoware/src
cd ~/autoware
vcs import src < autoware.repos
# 安装依赖
sudo apt update
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble
这个过程可能会花点时间,因为要下载很多包。我建议你泡杯咖啡,或者去干点别的。嗯,别干等着。
避坑指南:我曾经因为网络问题,rosdep install卡在某个包上。后来发现是代理没配好。如果你也遇到类似问题,试试设置export http_proxy=你的代理地址。
1.6 知识体系总览:一张图看懂本章
说了这么多,你可能有点晕。没关系,我画了一张图,帮你理清本章的知识结构。
这张图把本章的内容串起来了。从发展历程到环境搭建,每一步都是环环相扣的。你想想看,如果Ubuntu版本选错了,后面ROS2和依赖库的安装都会出问题。所以,别嫌我啰嗦,每一步都按规范来。
最后说一句:环境搭建是自动驾驶开发中最枯燥、但也最重要的一步。我见过太多人因为环境问题卡了几天,最后放弃了。别怕,跟着我的步骤走,有问题随时翻翻这一章。