# 基于 Windows WSL2 的开发环境

下面的说明介绍了如何在 Windows 11 上设置 PX4 开发环境,该环境在 Ubuntu Linux 中运行。 WSL2 (打开新窗口).

该环境可用于构建 PX4:

备注

此设置也可在 Windows 10 上使用,但需注意以下几点 注意事项.

警告

这种设置目前是 不支持的 Windows 开发环境.我们正在考虑这种设置是否以及在什么时候可以成为 推荐 Windows 开发环境

# 概述

Windows Linux 子系统 (打开新窗口) (WSL2 (打开新窗口))允许用户安装和运行 Ubuntu 开发环境 在 Windows 上、 险些 就像在 Linux 计算机上运行一样。

在这种环境下,开发人员可以

  • 构建任何由 Ubuntu 开发环境 在 WSL Shell 中。(Ubuntu 是支持和测试最好的 PX4 开发平台)。
  • 调试代码 Visual Studio 代码 (视窗).
  • 监控 a 仿真 使用 Linux 版 QGroundControl 在 WSL 中运行。Linux 版 QGC 会自动连接到模拟。

适用于 Windows 的 QGroundControl 如果需要,还需要

备注

不支持从 WSL 连接到真实设备,因此无法使用 上传 选项,或从 Linux 版 QGroundControl.

备注

该方法类似于在您的 拥有 中描述的 Windows 虚拟机托管工具链.WSL2 的优势在于其虚拟机已深度集成到 Windows 中,由系统管理,并对性能进行了优化。

# 支持 Windows 10 图形用户界面

Windows 10 版本尚不支持 WSL2 应用程序的图形用户界面,因此窗口和图形功能将无法使用。这包括 Gazebo 和 jMAVSim 渲染可视化,以及在 WSL 中运行的 Linux QGC、 Git gui 等。

发展是可能的,因为你还可以:

  • 在 WSL2 中构建 PX4,并使用以下功能将其闪存到电路板上 Windows 版 QGC.
  • 无头模式 (在 生产无头=1),并使用 Windows 版 QGC.

备注

WSL2 图形用户界面支持由 Windows Linux 图形用户界面子系统(WSLg) (打开新窗口).默认情况下,稳定版 Windows 11 版本中已包含此功能。稳定版 Windows 10 中还没有(只有内部预览版)。有关推出信息,请参阅链接。

# 安装

# 安装 WSL2

在新安装的 Windows 11 系统上使用默认 Ubuntu 分发版安装 WSL2:

  1. 开放 cmd.exe 为管理员。按开始键,输入 cmd,右键点击 命令提示符 条目,并选择 以管理员身份运行.
  2. 执行命令 wsl --install 运行 WSL 的安装程序。
  3. 重新启动电脑。
  4. 开放 cmd 再次以普通用户身份(而非管理员身份)进行操作。按下 开始 键,输入 cmd 并按 进入.
  5. 执行命令 wsl 来访问 WSL shell。
  6. WSL 会提示您输入 Ubuntu 安装的用户名和密码。请记录下这些凭证,因为稍后会用到!

备注

如果您的设置有任何问题,请检查当前的 微软 WSL 安装文档 (打开新窗口).

# 打开 WSL Shell

安装和构建 PX4 的所有操作都必须在 WSL Shell 中完成(可以使用安装 WSL2 时使用的相同 Shell,也可以打开一个新的 Shell)。

打开 WSL shell:

  1. 打开命令提示符:
    • 按下 开始 键。
    • 类型 cmd 并按下 进入 打开提示符。
  2. 要启动 WSL 并访问 WSL shell,请执行命令:
    wsl
    

备注

输入以下命令,首先关闭 WSL shell,然后关闭 WSL:

退出 wsl --shutdown

或者,在输入 出口 您可以直接关闭提示。

# 安装 PX4 工具链

接下来,我们在 WSL2 环境中下载 PX4 源代码,并使用正常的 Ubuntu 安装程序脚本 来设置开发者环境。这将为 Gazebo 仿真、JMAVSim 仿真和 Pixhawk/NuttX 硬件安装工具链。

安装开发工具链

  1. 打开 WSL2 Shell (如果它仍然打开,您可以使用安装 WSL2 时使用的那个)。

  2. 执行命令 cd ~ 切换到 WSL 的主文件夹,进行下一步操作。

    警告

    这一点很重要!如果在 WSL 文件系统之外的位置工作,就会遇到执行速度非常慢和访问权限错误等问题。

  3. 下载 PX4 源代码 Git (已安装在 WSL2 中):

    Git 克隆 https://github.com/PX4/PX4-Autopilot.git --recursive
    
  4. 运行 ubuntu.sh 安装程序脚本,并确认脚本进程中的任何提示:

    敲击 ./PX4-Autopilot/Tools/setup/ubuntu.sh
    

    备注

    安装用于为 Pixhawk、Gazebo 和 JMAVSim 目标构建 PX4 的工具。

    • 您可以使用 --无核x--无模拟工具 选项可省略 NuttX 和/或模拟工具。
    • 其他 Linux 构建目标尚未经过测试(你可以通过在 Ubuntu 开发环境 进入 WSL 外壳)。
  5. 脚本完成后,重新启动 WSL 计算机(退出 shell,关闭 WSL,然后重新启动 WSL):

    退出 wsl --shutdown wsl
    
  6. 切换到 WSL 主文件夹中的 PX4 资源库:

    cd ~/PX4-Autopilot
    
  7. 构建 PX4 SITL 目标并测试环境:

    使 px4_sitl
    

有关更多构建选项,请参阅 构建 PX4 软件.

# Visual Studio 代码集成

在 Windows 上运行的 VS Code 与 WSL 集成得很好。

设置集成:

  1. 下载 (打开新窗口) 并在 Windows 上安装 Visual Studio Code (VS Code)、

  2. 开放 VS 编码.

  3. 安装名为 远程 - WSL (打开新窗口) (市场)

  4. 打开 WSL 外壳

  5. 在 WSL 外壳中,切换到 PX4 文件夹:

    cd ~/PX4-Autopilot
    
  6. 在 WSL 外壳中,启动 VS Code:

    代码
    

    这将打开与 WSL shell 完全集成的集成开发环境。

    确保始终在远程 WSL 模式下打开 PX4 资源库。

  7. 下次要开发 WSL2 时,只需在远程 WSL 模式下选择 打开 最近 (如下图所示)。这将为您启动 WSL。

    但请注意,WSL 虚拟机的 IP 地址已经更改,因此您将无法通过 QGC for Windows 监控仿真(您仍然可以使用 QGC for Linux 进行监控)。

# QGroundControl

您可以在 WSL 或 Windows 中运行 QGroundControl,连接到正在运行的仿真。如果您需要 闪烁飞行控制板 对于新固件,您只能通过 Windows 版 QGroundControl 进行此操作。

# WSL 中的 QGroundControl

设置和使用 QGroundControl 的最简单方法是将 Linux 版本下载到您的 WSL 中。

您可以在 WSL 外壳中执行此操作。

  1. 在网络浏览器中,导航到 QGC Ubuntu 下载区 (打开新窗口)
  2. 右键单击 QGroundControl.AppImage 链接,然后选择 "复制链接地址"。如下所示 https://d176td9ibe4jno.cloudfront.net/builds/master/QGroundControl.AppImage
  3. 打开 WSL 外壳 并输入以下命令下载 AppImage 并使其可执行(在指定位置替换 AppImage URL):
    cd ~ wget <the_copied_AppImage_URL> chmod +x QGroundControl.AppImage
    
  4. 运行 QGroundControl:
    ./QGroundControl.AppImage
    

QGroundControl 将启动并自动连接到正在运行的模拟,让您可以监控载具。

由于 WSL 不允许访问串行设备,因此无法用它来安装 PX4 固件。

# Windows 上的 QGroundcontrol

安装 Windows 上的 QGroundControl (打开新窗口) 如果您希望使用在 PX4 中创建的固件更新硬件。

这些步骤描述了如何连接 WSL 中运行的模拟:

  1. 打开 WSL 外壳
  2. 运行命令检查 WSL 虚拟机的 IP 地址 ip addr | grep eth0:
    $ ip 地址 | grep eth0
    
    6: eth0: <;广播、组播、上行、下行>; mtu 1500 qdisc mq state UP group default qlen 1000
        局域网 172.18.46.131/20 布拉德 172.18.47.255 范围 global eth0
    
    复制 eth0 界面 局域网 地址到剪贴板。在这种情况下 172.18.46.131.
  3. 在 QGC 中转入 Q > 应用程序设置 > 通信链接
  4. 为端口添加名为 "WSL" 的 UDP 链接 18570 的 IP 地址。
  5. 保存并连接。

备注

每次重新启动 WSL 时,您都必须更新 QGC 中的 WSL 通信链接(因为它获得的是动态 IP 地址)。

# 闪烁飞行控制板

由于 WSL2 本身无法直接访问 Pixhawk 电路板等串行设备,因此必须使用 Windows 版 QGroundControl 才能对定制的 PX4 二进制程序进行闪存。

执行以下步骤闪存在 WSL 中创建的自定义二进制文件:

  1. 如果您还没有在 WSL 中构建二进制文件,例如使用 WSL 外壳 和跑步:
    cd ~/PX4-Autopilot make px4_fmu-v5
    
    注意: 请为您的板使用正确的目标。
  2. 从计算机上拔下 Pixhawk 板的 USB 电缆(如果已插入)。
  3. 开放式 QGC。
  4. 在 QGC 中转入 Q > 载具设置 > 固件
  5. 通过 USB 插入 pixhawk 电路板
  6. 连接后选择 "PX4 Flight Stack",选中 "高级设置",然后从下拉列表中选择 "自定义固件文件..."。
  7. 继续并选择之前刚创建的固件二进制文件。在打开的对话框中,查找左侧窗格中带有企鹅图标的 Linux 位置。它通常位于底部。在路径中选择文件: Ubuntu\home\{your WSL user name}\PX4-Autopilot\build\{your build target}\{your build target}.px4

    备注

    您可以将文件夹添加到收藏夹,以便下次快速访问。

  8. 开始闪烁。