第一章:开发环境搭建

大家好,我是你们的自动驾驶系统工程师老K。今天咱们聊聊开发环境搭建这件事。

说实话,很多初学者一上来就急着写代码,结果环境没配好,折腾半天跑不起来。我当年也吃过这个亏——记得第一次装Autoware,光依赖就装了三天,最后发现是Ubuntu版本不对。嗯,所以这一章,咱们把地基打牢。

1.1 Ubuntu系统配置

我个人习惯用Ubuntu 22.04 LTS。为什么?因为ROS2 Galactic官方推荐的就是这个版本。你想想看,官方都测试过的,咱们就别自己找麻烦了。

系统要求:

  • Ubuntu 22.04 LTS(64位)
  • 至少8GB内存(我建议16GB)
  • 至少50GB空闲磁盘空间
  • 支持CUDA的NVIDIA显卡(可选,但强烈推荐)

装好系统后,第一件事就是换源。国内用户你懂的,不换源那下载速度...我曾在项目里等一个包等了半小时。所以咱们直接上清华源:

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新
sudo apt update && sudo apt upgrade -y

小技巧:换源后记得先跑一遍 sudo apt update,看看有没有报错。我曾经遇到过源配置错误导致apt直接罢工的情况。

1.2 ROS2 Galactic安装与配置

ROS2 Galactic,说白了就是Autoware的"操作系统"。没有它,Autoware跑不起来。

安装步骤其实不复杂,但有几个坑要注意:

# 设置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
export LANG=en_US.UTF-8

# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe

# 添加ROS2 GPG key
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 安装ROS2 Galactic桌面版
sudo apt update
sudo apt install ros-galactic-desktop -y

注意:安装过程中如果提示依赖冲突,千万别用 --fix-broken 暴力解决。我遇到过一回,直接把系统搞崩了。正确做法是手动排查冲突的包,一个个解决。

装完后,配置环境变量:

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

验证一下:

ros2 --version
# 应该输出:ros2 galactic

1.3 Autoware.Universe源码编译与依赖安装

Autoware.Universe,这才是咱们的主角。源码编译听起来吓人,其实步骤很清晰。

先装依赖:

# 安装基础依赖
sudo apt install -y git cmake build-essential python3-pip

# 安装Autoware特定依赖
sudo apt install -y ros-galactic-rmw-fastrtps-cpp
sudo apt install -y ros-galactic-geometry-msgs
sudo apt install -y ros-galactic-nav-msgs
sudo apt install -y ros-galactic-sensor-msgs

然后克隆源码:

mkdir -p ~/autoware_universe/src
cd ~/autoware_universe
git clone https://github.com/autowarefoundation/autoware_universe.git src/autoware_universe

编译是个体力活,我建议用 colcon:

cd ~/autoware_universe
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

编译时间参考:

硬件配置 首次编译时间 增量编译时间
i7 + 16GB + SSD 约45分钟 约10分钟
i5 + 8GB + HDD 约2小时 约30分钟

避坑指南:编译时如果报内存不足,可以加 --parallel-workers 2 限制并行任务数。我曾经在8GB的机器上编译,不加这个参数直接OOM了。

1.4 Docker环境搭建

说实话,Docker是咱们开发者的好朋友。为什么?因为环境隔离啊!你想想看,一个项目依赖ROS2 Galactic,另一个项目依赖ROS2 Humble,没有Docker你怎么搞?

安装Docker:

# 安装依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

# 添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 将当前用户加入docker组(避免每次sudo)
sudo usermod -aG docker $USER

然后拉取Autoware官方镜像:

docker pull autoware/autoware-universe:galactic-latest

运行容器:

docker run -it --rm \
  --name autoware_dev \
  --net=host \
  --privileged \
  -v /dev:/dev \
  -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
  -e DISPLAY=$DISPLAY \
  autoware/autoware-universe:galactic-latest

注意:如果你用的是NVIDIA显卡,记得加 --gpus all 参数。我第一次用Docker跑Autoware,没加这个参数,结果点云可视化直接黑屏,折腾了半天才发现是GPU没挂载进去。

知识体系总览

下面这张图,是我画的环境搭建整体流程。你跟着这个走,基本不会迷路:

Autoware开发环境搭建流程 第1步:Ubuntu 22.04 LTS 系统安装与配置 第2步:ROS2 Galactic 安装与配置 第3步:Autoware.Universe 源码编译与依赖安装 第4步:Docker环境搭建(可选但推荐)

好了,环境搭建这部分就讲到这里。记住,基础打牢了,后面写代码才顺手。下一章咱们开始玩真的——写第一个Autoware节点。

可可精品资料库