第一章:开发环境搭建
大家好,我是你们的自动驾驶系统工程师老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节点。