环境搭建(上):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架构芯片兼容性问题多,不推荐 |
2.2 Ubuntu系统安装与基础配置
安装过程我就不逐字念官方文档了,说几个关键点:
- 下载镜像:去Ubuntu官网下载22.04 LTS桌面版,别下服务器版——你还需要图形界面调试Gazebo。
- 制作启动盘:用Rufus(Windows)或balenaEtcher(macOS),写入U盘。
- 分区建议:
/(根分区):30-40GB,够用/home:剩余空间,你的代码、模型文件都放这里swap:8GB,如果你内存小于16GB,swap别省
- 安装时勾选:“为图形或无线硬件安装第三方软件”——省得你装完还要折腾NVIDIA驱动。
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界面并看到一架无人机,恭喜你——环境搭好了。
ubuntu.sh的执行日志。
2.6 本章知识体系
下面这张图帮你理清本章的脉络:
嗯,环境搭建这部分确实琐碎,但每一步都值得认真对待。我见过太多人在“环境没搭好”的阶段浪费了几天时间,最后发现只是少装了一个包。按照上面的步骤来,稳扎稳打,后面写代码、跑仿真的时候你会感谢现在的自己。