综述
适用于 Linux 的 Windows 子系统(WSL2)允许用户在 Windows 上安装并运行 Ubuntu 开发环境,其使用体验几乎与在 Linux 计算机上运行无异。
借助此环境,开发者可以:
- 在 WSL 终端中编译 Ubuntu 开发环境 支持的任何模拟器或硬件目标(Ubuntu 是 PX4 开发平台中支持和测试最完善的系统)。
- 在运行于 Windows 的 Visual Studio Code 中调试代码。
- 使用在 WSL 中运行的 QGroundControl for Linux 监控仿真环境。Linux 版 QGC 会自动连接到仿真环境。
若有以下需求,则还需安装 QGroundControl for Windows:
- 更新真实飞行器的固件。
- 监控真实飞行器。需要注意的是,也可以使用它来监控仿真环境,但必须手动 连接到在 WSL 中运行的仿真环境。
WSL 不支持从内部连接 USB 设备,因此在命令行编译时无法使用
这种方法与在自己的虚拟机中安装 PX4 类似,具体可参考 Windows 虚拟机托管工具链。WSL2 的优势在于其虚拟机与 Windows 深度集成,由系统管理,并且经过了性能优化。
upload 选项更新固件,也不能通过 QGroundControl for Linux 更新固件。这种方法与在自己的虚拟机中安装 PX4 类似,具体可参考 Windows 虚拟机托管工具链。WSL2 的优势在于其虚拟机与 Windows 深度集成,由系统管理,并且经过了性能优化。
安装
安装 WSL2
要在全新安装的 Windows 10 或 11 系统上安装带有 Ubuntu 的 WSL2,请按以下步骤操作:
- 确保计算机 BIOS 中已启用虚拟化功能。该功能通常分别被称为 “虚拟化技术”、“Intel VT-x” 或 “AMD-V”。
- 以管理员身份打开 cmd.exe。可以通过按下开始键,输入
cmd,右键单击 “命令提示符” 条目,然后选择 “以管理员身份运行” 来实现。 - 执行以下命令来安装 WSL2 和特定版本的 Ubuntu:
- 默认版本(Ubuntu 22.04):
-
wsl --installUbuntu 20.04(Gazebo-Classic 仿真环境)
-
wsl --install -d Ubuntu-20.04 - Ubuntu 22.04(Gazebo 仿真环境)
-
wsl --install -d Ubuntu-22.04你也可以从应用商店安装 Ubuntu 20.04 和 Ubuntu 22.04,这样就可以通过常规的 Windows 添加/删除程序设置来卸载应用程序。
- WSL 会提示你为 Ubuntu 安装设置用户名和密码。请记录这些凭据,因为后续可能会用到!此时,命令提示符已变为新安装的 Ubuntu 环境中的终端。
打开 WSL 终端
所有安装和编译 PX4 的操作都必须在 WSL 终端中完成(可以使用安装 WSL2 时的终端,也可以打开一个新的终端)。
如果你使用的是 Windows 终端,可以按照图示打开已安装的 WSL 环境的终端,并通过关闭标签页退出。

若要使用命令提示符打开 WSL 终端,请按以下步骤操作:
- 打开命令提示符:
- 按下 Windows 开始 键。
- 输入
cmd并按下 Enter 键打开命令提示符。
- 要启动 WSL 并进入 WSL 终端,请执行以下命令:
wsl -d <发行版名称>例如:
wsl -d <发行版名称>wsl -d Ubuntu-20.04- 如果你只安装了一个版本的 Ubuntu,可以直接使用
wsl。
输入以下命令先关闭 WSL 终端,然后关闭 WSL:
exit wsl -d <发行版名称> --shutdown或者,输入
exit后直接关闭命令提示符。 - 如果你只安装了一个版本的 Ubuntu,可以直接使用
安装 PX4 工具链
接下来,我们在 WSL2 环境中下载 PX4 源代码,并使用常规的 Ubuntu 安装脚本 来设置开发环境。这将安装用于 Gazebo Classic 仿真和 Pixhawk/NuttX 硬件的工具链。
要安装开发工具链,请按以下步骤操作:
- 打开 WSL2 终端(如果之前的终端仍处于打开状态,可以继续使用)。
- 执行命令
cd ~切换到 WSL 的主文件夹,以便进行后续步骤
这一步非常重要!如果在 WSL 文件系统之外的位置进行操作,可能会遇到执行速度极慢以及访问权限错误等问题。 - 使用
git(WSL2 中已预装)下载 PX4 源代码:sh git clone https://github.com/PX4/PX4-Autopilot.git --recursive::: info 源代码中的环境设置脚本通常适用于较新的 PX4 版本。如果使用的是较旧版本的 PX4,可能需要 获取特定版本的源代码。 - 运行 ubuntu.sh 安装脚本,并在脚本执行过程中确认所有提示信息:
sh bash ./PX4-Autopilot/Tools/setup/ubuntu.sh::: info 此脚本将安装用于编译 Pixhawk 以及 Gazebo 或 Gazebo Classic 目标的工具: – 可以使用--no-nuttx和--no-sim-tools选项省略 NuttX 和/或仿真工具的安装。 – 其他 Linux 编译目标未经测试(你可以尝试将 Ubuntu 开发环境 中的相应命令输入到 WSL 终端中)。 - 脚本执行完成后,重启 “WSL 计算机”(退出终端,关闭 WSL,然后重新启动 WSL):
sh exit wsl --shutdown wsl6. 切换到 WSL 主文件夹中的 PX4 仓库:sh cd ~/PX4-Autopilot7. 编译 PX4 SITL 目标并测试环境:sh make px4_sitl更多编译选项请参考 构建 PX4 软件。
故障处理
如果你在设置过程中遇到任何问题,请查看当前的 Microsoft WSL 安装文档。
我们还建议你安装最新的 Windows GPU 驱动程序,并在 Ubuntu 环境中安装较新版本的 kisak mesa,以便模拟大多数 OpenGL 功能:
sudo add-apt-repository ppa:kisak/kisak-mesa
sudo apt update
sudo apt upgrade