1. 项目概述
作为一名无人机开发爱好者,搭建PX4飞控开发环境是入门的第一步。PX4作为目前最主流的开源飞控系统之一,广泛应用于学术研究和工业开发领域。本文将详细介绍在Windows系统下通过WSL2搭建Ubuntu环境,并完成PX4源码编译的全过程。
我在初次接触PX4开发时,曾花费大量时间在环境配置上踩坑。通过本文,你将获得一套经过验证的可靠配置方案,包括:
- WSL2 Ubuntu环境的正确安装方式
- PX4源码的多种获取途径
- 编译依赖的完整安装清单
- 仿真环境的可视化配置技巧
2. 环境准备
2.1 系统基础配置
推荐使用Windows 10/11 + WSL2的组合方案,这既能利用Windows的易用性,又能获得Linux的开发环境优势。具体步骤如下:
- 启用WSL功能:
bash复制wsl --install
这个命令会自动安装WSL2和默认的Ubuntu发行版。安装完成后需要重启系统。
-
初始化Ubuntu:
首次启动Ubuntu时会提示创建用户名和密码。建议使用全小写的英文用户名,避免后续路径问题。 -
系统更新:
bash复制sudo apt update && sudo apt upgrade -y
这一步确保所有软件包都是最新版本,避免兼容性问题。
注意:WSL2需要Windows 10版本2004或更高版本。如果遇到问题,可以手动启用虚拟机平台功能:
code复制dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2.2 开发工具安装
- Visual Studio Code配置:
- 从官网下载安装VSCode
- 安装Remote - WSL扩展(MS提供的官方插件)
- 通过左下角的"><"图标连接WSL环境
- 必要工具链:
bash复制sudo apt install -y git make cmake gcc-arm-none-eabi \
build-essential libtool-bin python3-pip \
python3-setuptools python3-wheel python3-pyparsing \
python3-empy python3-toml python3-numpy python3-yaml
这些工具包含了编译PX4所需的基础环境,其中:
- gcc-arm-none-eabi:ARM架构交叉编译器
- python3-empy:PX4使用的模板引擎
- cmake:构建系统生成器
3. PX4源码获取
3.1 官方GitHub方式(推荐网络通畅时使用)
bash复制git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
使用--recursive参数可以同时初始化所有子模块,避免后续单独更新。
如果克隆时遇到网络问题,可以尝试修改git配置:
bash复制git config --global url."https://ghproxy.com/https://github.com".insteadOf https://github.com
3.2 国内镜像方案
对于网络受限的环境,可以使用Gitee镜像:
bash复制git clone https://gitee.com/mirrors/PX4-Autopilot.git --recursive
cd PX4-Autopilot
git remote set-url origin https://github.com/PX4/PX4-Autopilot.git
克隆完成后记得将远程仓库改回官方地址,方便后续同步更新。
3.3 手动下载方式
如果上述方法都不可行,可以:
- 在Windows环境下通过浏览器下载源码zip包
- 将文件复制到WSL环境:
bash复制cp /mnt/c/Users/你的用户名/Downloads/PX4-Autopilot-main.zip ~/
unzip PX4-Autopilot-main.zip
4. 依赖安装与编译
4.1 安装依赖脚本
PX4提供了自动安装脚本:
bash复制cd PX4-Autopilot/Tools/setup
bash ./ubuntu.sh
这个脚本会自动安装:
- 仿真工具链(Gazebo、jMAVSim)
- 硬件支持包
- Python依赖项
- 其他编译工具
常见问题:如果脚本执行失败,可以尝试分步安装:
bash复制bash ./ubuntu.sh --no-nuttx --no-sim-tools
4.2 Java环境配置
可视化仿真需要Java环境:
bash复制sudo apt install -y openjdk-11-jdk ant
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
验证安装:
bash复制java -version
javac -version
5. 编译与仿真
5.1 首次编译测试
使用jMAVSim进行基础测试:
bash复制cd ~/PX4-Autopilot
make px4_sitl jmavsim
如果一切正常,你将看到:
- PX4控制台输出
- jMAVSim的3D仿真窗口
- 无人机在默认位置启动
5.2 图形界面配置
WSL2需要额外配置才能显示GUI窗口:
- 安装Windows端的X Server(如VcXsrv)
- 在Ubuntu中安装图形库:
bash复制sudo apt install -y libx11-6 libxext6 libxrender1 libxtst6 libxi6
- 设置显示变量:
bash复制export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
5.3 自定义仿真参数
可以修改启动位置等参数:
bash复制export PX4_HOME_LAT=39.90833
export PX4_HOME_LON=116.418481
export PX4_HOME_ALT=28.5
make px4_sitl jmavsim
6. 常见问题排查
6.1 编译错误处理
- 子模块缺失:
bash复制git submodule update --init --recursive
- 权限问题:
bash复制sudo chown -R $USER:$USER ~/PX4-Autopilot
- 内存不足:
在WSL配置文件(.wslconfig)中增加内存限制:
code复制[wsl2]
memory=4GB
6.2 仿真窗口问题
-
黑屏或无响应:
检查X Server配置,确保允许公共网络连接 -
GLX错误:
bash复制export LIBGL_ALWAYS_INDIRECT=1
- 窗口闪烁:
尝试改用Gazebo仿真:
bash复制make px4_sitl gazebo
7. 开发工作流建议
- 代码编辑:
- 使用VSCode远程开发功能
- 安装PX4插件包(PX4 Autopilot扩展)
- 版本控制:
bash复制git checkout -b dev-your-feature
git commit -am "your message"
- 调试技巧:
- 使用
make px4_sitl debug启动gdb调试 - 通过
uorb top查看主题通信
- 性能优化:
- 在
/etc/wsl.conf中添加:
code复制[automount]
options = "metadata"
这套环境配置已经在我团队的多个无人机项目中验证通过,包括室内定位和自动巡检系统。关键在于确保所有依赖项的版本匹配,以及WSL图形转发配置正确。
