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 本章知识体系
下面这张图帮你理清整个环境搭建的脉络:
这张图把整个环境搭建拆成了四个层次:底层系统、版本控制、Python生态、依赖库。你按这个顺序一步步来,基本不会出大问题。