环境准备:操作系统选择与基础依赖安装

做 SITL 仿真,第一步就是搭环境。这事听起来简单,但我在项目里见过太多人卡在这一步——不是 Ubuntu 版本选错,就是依赖装不全,折腾半天连个 helloworld 都跑不起来。咱们今天就把这事一次性说清楚。

操作系统选择:Ubuntu 20.04 还是 22.04?

说实话,两个版本都能用。但我个人习惯推荐 Ubuntu 20.04 LTS。为什么?

你想想看,PX4 和 ArduPilot 的官方 CI 测试,大部分跑在 20.04 上。我去年帮一个团队排查问题,他们用 22.04 装 Gazebo 11,结果发现某些插件编译不过去——后来切回 20.04 就一切正常。说白了,生态成熟度摆在那。

当然,22.04 也不是不行。如果你要用新版本的 Gazebo(比如 Ignition Fortress),那 22.04 会更方便。这里我列个对比表,你根据自己情况选:

对比项 Ubuntu 20.04 LTS Ubuntu 22.04 LTS
Python 默认版本 3.8 3.10
Gazebo 版本 Gazebo 9/11(推荐) Gazebo 11 / Ignition
PX4 官方支持 ✅ 完全支持 ✅ 支持,但偶有问题
ArduPilot 官方支持 ✅ 完全支持 ✅ 支持
ROS 兼容性 ROS1 Noetic / ROS2 Foxy ROS2 Humble
我的建议:如果你是新手,或者跟着本教程走,直接用 Ubuntu 20.04。等后面熟悉了,再考虑升级。

基础依赖安装:一条命令搞定

装完系统第一件事,更新源。然后安装编译工具链。我习惯把常用依赖写成一个脚本,每次新机器直接跑一遍:

# 更新包列表
sudo apt update
sudo apt upgrade -y

# 基础编译工具
sudo apt install -y \
    build-essential \
    cmake \
    ninja-build \
    ccache \
    g++ \
    gcc

# Python 相关
sudo apt install -y \
    python3 \
    python3-pip \
    python3-dev \
    python3-venv \
    python3-wheel

# Git 与版本控制
sudo apt install -y \
    git \
    git-lfs

# 仿真与图形依赖
sudo apt install -y \
    libgl1-mesa-dev \
    libglu1-mesa-dev \
    freeglut3-dev \
    libxrandr-dev \
    libxinerama-dev \
    libxcursor-dev \
    libxi-dev

# 其他常用工具
sudo apt install -y \
    wget \
    curl \
    unzip \
    vim \
    htop

嗯,这里要注意。上面这些包不是随便列的。我在项目中遇到过好几次,因为少了 libgl1-mesa-dev,Gazebo 启动直接黑屏。还有一次,ccache 没装,每次编译 PX4 都要等 20 分钟——装上之后,二次编译只要 3 分钟。

避坑指南:千万不要跳过 python3-venv。我曾经图省事,直接用系统 Python 装包,结果把系统自带的 pip 搞坏了,重装了两次系统才解决。虚拟环境是底线。

Git 环境配置:别偷懒

Git 配置其实就三步,但很多人只配了用户名和邮箱。我建议你一次性配全:

# 基础信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

# 推荐配置
git config --global core.editor vim
git config --global core.autocrlf input
git config --global pull.rebase true
git config --global init.defaultBranch main

# 查看配置
git config --list

为什么 pull.rebase 要设成 true?你想想看,团队协作时,merge 提交会把历史搞得乱七八糟。用 rebase 拉取,提交历史是一条直线,看着清爽。我在带团队时,这个配置是强制要求的。

Python 环境配置:虚拟环境是王道

Python 这块,我踩过的坑最多。直接说结论:永远不要用系统 Python 直接装包。

正确的做法是:

# 创建虚拟环境
python3 -m venv ~/sitl_env

# 激活环境
source ~/sitl_env/bin/activate

# 升级 pip
pip install --upgrade pip

# 安装常用包
pip install \
    numpy \
    matplotlib \
    pyyaml \
    jinja2 \
    future \
    empy \
    toml \
    packaging \
    setuptools

# 退出环境
deactivate

每次打开终端,先激活虚拟环境:

source ~/sitl_env/bin/activate

你也可以把这句话加到 ~/.bashrc 里,省得每次手动敲。但我个人习惯不自动激活——有时候需要在不同环境间切换,自动激活反而碍事。

核心要点:

  • Ubuntu 20.04 是当前最稳妥的选择
  • 基础依赖用一条命令装完,别漏了 libgl1-mesa-dev 和 ccache
  • Git 配置加上 pull.rebase true,历史更干净
  • Python 必须用虚拟环境,这是底线

本章知识体系

下面这张图,把环境准备的整个流程串起来了。你可以把它当成一张检查清单:

环境准备知识体系 操作系统选择 基础依赖安装 Git 环境配置 Python 环境配置 编译工具链 build-essential / cmake / ccache 图形依赖 libgl1-mesa-dev / freeglut3 基础配置 user.name / user.email 推荐配置 pull.rebase / autocrlf 虚拟环境 python3 -m venv 常用包 numpy / matplotlib / pyyaml 环境验证:一切就绪

环境准备好了,下一步就是拉代码、装仿真器。不过那是后面的事。先把今天这几步走扎实,后面会顺很多。