环境搭建(上):Ubuntu系统安装与配置、基础开发工具链安装

说实话,做SITL仿真这件事,最怕的不是代码写不对,而是环境搭到一半卡住。我见过太多新手在第一步就放弃了——不是Ubuntu装不上,就是依赖包冲突。这一章,咱们就把地基打牢。

2.1 为什么选Ubuntu?

你可能要问:Windows不行吗?macOS不行吗?
行,但会很痛苦。PX4的官方支持、MAVSDK的编译测试、Gazebo的驱动兼容性,全都是在Ubuntu上跑得最顺。我个人习惯用Ubuntu 22.04 LTS,稳定、社区活跃、踩坑记录一搜一大把。

系统 SITL兼容性 我的建议
Ubuntu 22.04 LTS ★★★★★ 首选,长期支持到2027年
Ubuntu 20.04 LTS ★★★★☆ 也行,但有些新工具链需要手动升级
Windows + WSL2 ★★★☆☆ 能用,但USB透传和图形界面偶尔抽风
macOS ★★☆☆☆ ARM架构芯片兼容性问题多,不推荐
小提示:如果你手头只有Windows机器,装个VirtualBox跑Ubuntu虚拟机也行。记得给虚拟机分配至少4核CPU、8GB内存、50GB硬盘——别问我怎么知道的,我第一次只给了2GB内存,Gazebo直接卡死。

2.2 Ubuntu系统安装与基础配置

安装过程我就不逐字念官方文档了,说几个关键点:

  1. 下载镜像:去Ubuntu官网下载22.04 LTS桌面版,别下服务器版——你还需要图形界面调试Gazebo。
  2. 制作启动盘:用Rufus(Windows)或balenaEtcher(macOS),写入U盘。
  3. 分区建议:
    • /(根分区):30-40GB,够用
    • /home:剩余空间,你的代码、模型文件都放这里
    • swap:8GB,如果你内存小于16GB,swap别省
  4. 安装时勾选:“为图形或无线硬件安装第三方软件”——省得你装完还要折腾NVIDIA驱动。
注意:双系统用户请先备份Windows引导。我曾经手滑把EFI分区写坏了,修了一下午。建议先装Windows再装Ubuntu,让Ubuntu的grub自动识别双系统。

2.3 基础开发工具链安装

系统装好了,接下来装吃饭的家伙。我习惯一条命令搞定基础工具:

sudo apt update && sudo apt upgrade -y
sudo apt install -y \
  git \
  cmake \
  build-essential \
  python3 \
  python3-pip \
  python3-venv \
  curl \
  wget \
  vim \
  net-tools

2.3.1 Git配置

Git是版本控制的命根子。我建议你装完立刻配好:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor "vim"
git config --global init.defaultBranch main

为什么要配?有一次我在一个项目里忘了配user.email,commit记录全是unknown,后来找历史版本时差点崩溃。

2.3.2 CMake与编译工具

CMake是PX4和MAVSDK的编译核心。Ubuntu 22.04自带的CMake版本是3.22,够用。但如果你需要最新版:

# 查看当前版本
cmake --version

# 如果需要升级到3.27+
wget https://github.com/Kitware/CMake/releases/download/v3.27.6/cmake-3.27.6-linux-x86_64.tar.gz
tar -xzf cmake-3.27.6-linux-x86_64.tar.gz
sudo mv cmake-3.27.6-linux-x86_64 /opt/cmake
sudo ln -sf /opt/cmake/bin/* /usr/local/bin/
避坑指南:不要用sudo apt install cmake装最新版,APT源里的版本通常落后1-2个大版本。PX4编译时如果报CMake Error at CMakeLists.txt,八成是CMake版本太低。

2.3.3 Python3环境

Python3在Ubuntu 22.04是预装的,但我们需要一个干净的虚拟环境:

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

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

# 安装常用包
pip install --upgrade pip
pip install numpy matplotlib pyyaml

为什么要用虚拟环境?我吃过一次大亏——全局装了一堆包,结果某个项目需要numpy 1.21,另一个需要1.24,直接冲突到系统崩了。虚拟环境就是你的“代码隔离舱”。

2.4 MAVSDK与PX4环境准备

这部分是重头戏。MAVSDK是咱们写控制程序的SDK,PX4是飞控固件。两者需要配合好版本。

2.4.1 版本对应关系

MAVSDK版本 PX4版本 备注
v2.x v1.13+ 推荐,API稳定
v1.x v1.12 旧版,不推荐新项目
v0.x v1.11及以下 已停止维护

我个人建议直接上MAVSDK v2.x + PX4 v1.14,这是目前最稳的组合。

2.4.2 安装MAVSDK

MAVSDK提供预编译的C++库和Python包。咱们做SITL仿真,Python版最方便:

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

# 安装MAVSDK Python包
pip install mavsdk

# 验证安装
python3 -c "import mavsdk; print(mavsdk.__version__)"

如果遇到No module named 'mavsdk',八成是没激活虚拟环境,或者pip装到了系统Python里。

2.4.3 克隆PX4源码

PX4源码我们用Git拉取,注意选稳定分支:

# 创建工作目录
mkdir -p ~/px4_workspace
cd ~/px4_workspace

# 克隆PX4固件(稳定版)
git clone https://github.com/PX4/PX4-Autopilot.git --branch v1.14.3 --depth 1

# 进入目录
cd PX4-Autopilot

# 初始化子模块
git submodule update --init --recursive
技巧:加--depth 1只拉取最新版本,省流量、省时间。完整历史有3个多GB,我第一次没加参数,等了半小时。

2.4.4 安装PX4依赖

PX4的依赖脚本做得不错,一条命令搞定:

# 运行自动安装脚本
bash ./Tools/setup/ubuntu.sh

# 脚本会安装:gcc、g++、gazebo、ros相关包等
# 等待时间约10-20分钟,取决于网速

脚本跑完后,重启终端或执行source ~/.bashrc,让环境变量生效。

注意:如果脚本中途报错E: Unable to locate package,先执行sudo apt update再重试。我遇到过因为网络源没更新导致安装失败的情况。

2.5 验证环境

装完别急着走,跑个快速验证:

# 1. 验证Git
git --version

# 2. 验证CMake
cmake --version

# 3. 验证Python
python3 --version

# 4. 验证MAVSDK
python3 -c "from mavsdk import System; print('MAVSDK OK')"

# 5. 验证PX4编译(只编译SITL目标)
cd ~/px4_workspace/PX4-Autopilot
make px4_sitl gazebo-classic

如果最后一步能正常启动Gazebo界面并看到一架无人机,恭喜你——环境搭好了。

我的经验:第一次编译PX4大概需要15-30分钟,取决于CPU性能。别盯着终端发呆,去泡杯咖啡。如果编译中途报错,多半是依赖没装全,回头检查ubuntu.sh的执行日志。

2.6 本章知识体系

下面这张图帮你理清本章的脉络:

环境搭建知识体系 环境搭建知识体系 Ubuntu 22.04 LTS 基础工具链 MAVSDK PX4固件 Git CMake Python3 + venv Python包 C++库 源码克隆 依赖安装 环境验证:编译SITL目标 核心原则:版本匹配 → 依赖完整 → 编译通过 → 仿真启动 任何一步报错,优先检查网络源和依赖版本

嗯,环境搭建这部分确实琐碎,但每一步都值得认真对待。我见过太多人在“环境没搭好”的阶段浪费了几天时间,最后发现只是少装了一个包。按照上面的步骤来,稳扎稳打,后面写代码、跑仿真的时候你会感谢现在的自己。