Skip to content

Windows 虚拟机托管的工具链

:::警告 此开发环境由社区支持和维护。 它可能适用于当前版本的 PX4,也可能不适用。

有关核心开发团队支持的环境和工具的信息,请参阅工具链安装。 :::

Windows 开发者可以在以 Linux 作为来宾操作系统的虚拟机(VM)中运行 PX4 工具链。 设置好虚拟机后,在虚拟机内安装和设置 PX4 的过程与在原生 Linux 计算机上完全相同。

虽然使用虚拟机是设置和测试用于构建固件的环境的一种非常简单的方法,但用户应该注意:

  1. 固件的编译速度比原生 Linux 要更慢一些。
  2. JMAVSim 仿真的帧率会比在原生 Linux 上慢很多。 虚拟机运行资源不足可能导致特定情况下无人机坠毁。
  3. 可以安装 Gazebo 和 ROS,但运行速度非常慢。

:::提示 尽可能为虚拟机分配更多的 CPU 核心和内存资源。 :::

有多种方法可以在你的系统上设置能够运行 PX4 环境的虚拟机。 本指南将指导你完成 VMWare 的设置过程。 最后还有一个关于 VirtualBox 的不完整部分(我们欢迎社区成员对这部分内容进行补充完善)。

VMWare 设置

VMWare 的性能对于基本使用(构建固件)是可以接受的,但不适用于运行 ROS 或 Gazebo Classic。

  1. 下载 VMWare Player 免费版

  2. 将其安装在 Windows 系统上。

  3. 下载所需版本的 Ubuntu 桌面版 ISO 镜像。 (推荐的 Ubuntu 版本请参考 Linux 安装说明页面)。

  4. 打开 VMWare Player

  5. 在虚拟机的设置中启用 3D 加速:虚拟机 > 设置 > 硬件 > 显示 > 加速 3D 图形

    :::信息 要正确运行像 jMAVSim 和 Gazebo Classic 这样的 3D 仿真环境,此选项是必需的。 我们建议在虚拟环境中安装 Linux 之前完成此操作。 :::

  6. 选择创建新虚拟机的选项。

  7. 在虚拟机创建向导中,选择下载的 Ubuntu ISO 镜像作为安装介质,它将自动检测你要使用的操作系统。

  8. 同样在向导中,选择在虚拟机运行时要分配给它的资源。 在不使主机 Windows 系统无法使用的前提下,尽可能多地分配内存和 CPU 核心。

  9. 在向导结束时运行新创建的虚拟机,并按照设置说明安装 Ubuntu。 请记住,所有设置仅用于主机操作系统内的使用,因此你可以禁用任何不会增加网络攻击风险的屏幕保护程序和本地工作站安全功能。

  10. 新虚拟机启动后,确保在来宾系统中安装 VMWare 工具驱动程序和工具扩展。 这将提高虚拟机的性能和可用性:

    • 显著提升图形性能
    • 对硬件设备使用的适当支持,如 USB 端口分配(对目标上传很重要)、正确的鼠标滚轮滚动、声音支持
    • 来宾显示分辨率适应窗口大小
    • 与主机系统共享剪贴板
    • 与主机系统共享文件
  11. 继续按照 Linux 系统的 PX4 环境设置 进行操作。

VirtualBox 7 设置

VirtualBox 的设置与 VMWare 类似。 社区成员们,我们欢迎在此提供一份详细的分步指南!

QGroundControl / 固件刷写的 USB 直通

:::提示 本节内容已在运行 Ubuntu 20.04 LTS 的 Windows 10 主机上的 VirtualBox 7 中进行了测试。 :::

虚拟机的一个限制是,你无法自动连接到连接在主机计算机 USB 端口上的飞行控制器,以便从终端构建并上传 PX4 固件。 你也无法在虚拟机中使用 QGroundControl 连接到飞行控制器。

为了实现这一点,你需要配置 USB 直通设置:

  1. 确保使用以下终端命令将用户添加到虚拟机中的 dialout 组:

    sh
    sudo usermod -a -G dialout $USER

    然后重启虚拟机中的 Ubuntu 系统。

  2. 在虚拟机中启用串口:VirtualBox > 设置 > 串口 1/2/3 等...

  3. 在虚拟机中启用 USB 控制器:VirtualBox > 设置 > USB

  4. 在虚拟机中为引导加载程序添加 USB 过滤器:VirtualBox > 设置 > USB > 添加新 USB 过滤器

    • 打开菜单并插入连接到自动驾驶仪的 USB 电缆。 当 ...引导加载程序 设备出现在界面中时选择它。

      :::信息 连接 USB 后,引导加载程序设备仅会出现几秒钟。 如果在你选择之前它就消失了,请断开并重新连接 USB。 :::

    • ...自动驾驶仪 设备出现时选择它(这发生在引导加载程序完成之后)。

  5. 在虚拟机实例的下拉菜单中选择设备:VirtualBox > 设备 > 你的设备

如果操作成功,你的设备将通过 lsusb 命令显示出来,并且 QGroundControl 将自动连接到该设备。 你还应该能够使用如下命令构建并上传固件:

sh
make px4_fmu-v5_default upload

通过 WiFi 进行 QGroundControl 遥测

如果你在虚拟机中使用 QGroundControl,则应将虚拟机网络设置设置为“桥接适配器”模式。 这将使来宾操作系统能够直接访问主机上的网络硬件。 如果你使用默认情况下为运行 Ubuntu 20.04 LTS 的 VirtualBox 7 设置的网络地址转换(NAT),这将阻止 QGroundControl 用于与飞行器通信的出站 UDP 数据包。