2. 开发环境搭建:Ubuntu 22.04安装与配置、Git与Python环境、必备依赖库安装

说实话,搞嵌入式飞控开发,环境搭建这一步最容易被忽视。很多人急着写代码,结果编译报错、依赖冲突,一折腾就是半天。我刚开始接触ArduPilot时也踩过不少坑,后来慢慢总结出一套相对稳定的环境配置流程。今天就把这套东西分享给你。

本章目标:在Ubuntu 22.04上搭建一套完整的ArduPilot仿真开发环境,包括系统配置、版本管理工具、Python生态以及关键的图形和视觉库。

2.1 Ubuntu 22.04 安装与基础配置

为什么选22.04?因为这是目前LTS版本里对ROS 2和ArduPilot最新代码兼容性最好的。我试过20.04,有些新特性不支持;24.04刚出,第三方库的适配还不全。22.04是个稳妥的选择。

2.1.1 系统安装要点

  • 磁盘分区:建议至少给Ubuntu分配80GB空间。ArduPilot源码编译、仿真固件、日志文件加起来很容易吃掉30-40GB。
  • 网络配置:安装时连上稳定的网络,后续下载依赖包会快很多。
  • 软件更新:装完系统第一件事,跑一遍更新。
sudo apt update
sudo apt upgrade -y

我的习惯:装完系统先装openssh-server,方便从另一台电脑远程操作。飞控调试时经常要同时看串口日志和编译输出,双屏或远程登录会舒服很多。

2.1.2 基础开发工具包

有些包是编译任何C++项目都需要的,直接装上省心。

sudo apt install -y build-essential cmake g++ gcc
sudo apt install -y ninja-build ccache

ccache这个工具我强烈推荐。ArduPilot全量编译一次要十几分钟,用了ccache后,第二次编译能缩短到一两分钟。说白了就是缓存编译结果,只重新编译改动的文件。

2.2 Git 环境配置

Git是版本控制的标配,ArduPilot的代码托管在GitHub上,所以这块必须配好。

2.2.1 安装与基础配置

sudo apt install -y git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

这里有个细节——用户名和邮箱最好和GitHub账号一致,后面提交代码时能正确关联。

2.2.2 SSH密钥配置

我个人习惯用SSH方式拉取代码,比HTTPS稳定,不用每次输密码。

ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub

把输出的公钥添加到GitHub的SSH Keys设置里。然后测试一下:

ssh -T git@github.com

看到"Hi xxx! You've successfully authenticated"就说明配好了。

我曾经踩过的坑:有次换了台电脑,忘了配SSH密钥,直接git clone报权限错误。排查了半天才发现是公钥没加。所以建议你装完系统就把这步做了,省得后面抓狂。

2.3 Python 环境搭建

ArduPilot的仿真工具链大量依赖Python,比如MAVProxy、DroneKit、各种脚本工具。Python环境配不好,后面寸步难行。

2.3.1 安装Python 3.10+

Ubuntu 22.04自带Python 3.10,够用。但系统自带的pip版本可能比较老,需要升级。

python3 --version
sudo apt install -y python3-pip python3-venv
pip3 install --upgrade pip

2.3.2 虚拟环境(推荐)

我建议你为ArduPilot单独建一个虚拟环境。为什么?因为不同项目可能依赖不同版本的库,混在一起容易冲突。我在一个项目里吃过这个亏——装OpenCV时把系统Python的numpy版本改了,结果另一个工具直接崩了。

python3 -m venv ~/ardupilot_env
source ~/ardupilot_env/bin/activate

每次开始工作前,记得激活这个环境。你也可以在.bashrc里加个别名:

echo "alias ardupilot='source ~/ardupilot_env/bin/activate'" >> ~/.bashrc
source ~/.bashrc

以后只要输入ardupilot就能激活环境,方便。

2.4 必备依赖库安装

这部分是重点。ArduPilot仿真联调需要几个关键的Python库,我按重要性排个序。

2.4.1 pip 升级与基础工具

pip install --upgrade pip setuptools wheel

这三个是Python生态的基础,很多库的安装依赖它们。特别是wheel,能加速二进制包的安装。

2.4.2 wxPython

wxPython是MAVProxy的图形界面依赖。MAVProxy是ArduPilot最常用的地面站工具,虽然也有命令行模式,但图形界面看地图、看姿态信息更直观。

pip install wxPython

这个包比较大,编译时间可能有点长。如果安装失败,通常是缺少系统级的GTK开发库:

sudo apt install -y libgtk-3-dev libwebkit2gtk-4.0-dev
pip install wxPython

我的经验:wxPython在虚拟环境里安装时,有时会找不到系统库。这时候可以试试先装系统级的python3-wxgtk4.0,再在虚拟环境里装wxPython。虽然有点绕,但成功率很高。

2.4.3 OpenCV

OpenCV用于计算机视觉处理。在仿真中,你可以用它处理摄像头画面、做目标检测、甚至模拟视觉导航。ArduPilot的仿真环境支持虚拟摄像头输出,OpenCV就是处理这些图像的主力。

pip install opencv-python
pip install opencv-contrib-python  # 包含额外模块

验证安装:

python3 -c "import cv2; print(cv2.__version__)"

如果看到版本号,说明装好了。

2.4.4 其他常用库

这些不是必须的,但后面课程会用到,建议一并装上:

库名 用途 安装命令
numpy 数值计算,OpenCV的底层依赖 pip install numpy
matplotlib 数据可视化,画飞行轨迹 pip install matplotlib
pyserial 串口通信,连接飞控硬件 pip install pyserial
dronekit Python控制无人机的高级API pip install dronekit

2.5 环境验证与常见问题

装完所有东西后,我习惯跑一个快速验证脚本,确保每个组件都能正常工作。

#!/bin/bash
echo "=== Git ==="
git --version
echo "=== Python ==="
python3 --version
echo "=== pip ==="
pip3 --version
echo "=== wxPython ==="
python3 -c "import wx; print('wxPython OK')"
echo "=== OpenCV ==="
python3 -c "import cv2; print(f'OpenCV {cv2.__version__}')"
echo "=== NumPy ==="
python3 -c "import numpy; print(f'NumPy {numpy.__version__}')"

如果所有输出都正常,恭喜你,环境搭建完成。

常见问题排查:

  • pip安装超时:换国内镜像源,比如清华源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
  • wxPython编译失败:检查系统库是否装全,特别是libgtk-3-dev和libwebkit2gtk-4.0-dev
  • OpenCV导入报错:通常是numpy版本不兼容,试试pip install --upgrade numpy

2.6 本章知识体系

下面这张图帮你理清整个环境搭建的脉络:

开发环境搭建知识体系 Ubuntu 22.04 Git 版本控制 Python 环境 依赖库安装 安装配置 SSH密钥 Python 3.10 虚拟环境 wxPython OpenCV 其他常用库:numpy / matplotlib / pyserial / dronekit 环境验证脚本 核心原则:先系统后工具,先基础后应用,每装一步都验证 避坑:虚拟环境隔离 + 国内镜像加速 + 系统库补全

这张图把整个环境搭建拆成了四个层次:底层系统、版本控制、Python生态、依赖库。你按这个顺序一步步来,基本不会出大问题。