# Windows 虚拟机托管工具链
Windows 开发人员可以在以 Linux 为客户操作系统的虚拟机(VM)中运行 PX4 工具链。设置虚拟机后,PX4 在虚拟机中的安装和设置与在本地 Linux 计算机上完全相同。
虽然使用虚拟机可以非常方便地建立和测试固件构建环境,但用户应该注意:
- 在 Linux 上,固件构建速度会比本地构建速度慢。
- JMAVSim 模拟的帧速率比本地 Linux 慢得多。在某些情况下,载具可能会因虚拟机资源不足而崩溃。
- 可以安装 Gazebo 和 ROS,但速度非常慢。
TIP
为虚拟机分配尽可能多的 CPU 内核和内存资源。
有多种方法可以在系统上设置一个能够执行 PX4 环境的虚拟机。本指南将引导您完成 VMWare 设置。最后还有一个未完成的 VirtualBox 部分(欢迎社区成员对该部分进行扩展)。
# VMWare 设置
VMWare 的性能对于基本使用(构建固件)是可以接受的,但对于运行 ROS 或 Gazebo Classic 则不行。
在 Windows 系统上安装
下载所需版本的 Ubuntu 桌面 ISO 映像 (打开新窗口).(见 Linux 说明页面 推荐的 Ubuntu 版本)。
开放 VMWare 播放器.
在虚拟机设置中启用 3D 加速: 虚拟机> 设置> 硬件> 显示器> 加速 3D 图形
备注
要正确运行 jMAVSim 和 Gazebo Classic 等 3D 仿真环境,必须使用该选项。我们建议在虚拟环境中安装 Linux 之前执行此操作。
选择创建新虚拟机选项。
在虚拟机创建向导中,选择下载的 Ubuntu ISO 映像作为安装介质,并自动检测要使用的操作系统。
还可在向导中选择要在虚拟机运行时为其分配的资源。在不导致主机 Windows 系统无法使用的情况下,尽可能多地分配内存和 CPU 内核。
在向导结束后运行新虚拟机,让它按照设置说明安装 Ubuntu。请记住,所有设置都只供主机操作系统使用,因此你可以禁用任何屏幕保护程序和本地工作站安全功能,这不会增加网络攻击的风险。
启动新虚拟机后,确保安装 VMWare 工具驱动程序和工具扩展 在客户系统内。这将提高虚拟机的使用性能和可用性:
- 图形性能显著增强
- 适当支持硬件设备的使用,如 USB 端口分配(对目标上传很重要)、适当的鼠标滚轮滚动和声音支持
- 根据窗口大小调整访客显示分辨率
- 将剪贴板共享到主机系统
- 共享文件到主机系统
# VirtualBox 7 安装
VirtualBox 的设置与 VMWare 类似。社区成员,欢迎提供分步指南!
# 用于 QGroundControl / 固件闪存的 USB 直通功能
TIP
本节针对在 Windows 10 主机上运行 Ubuntu 20.04 LTS 的 VirtualBox 7 进行了测试。
虚拟机的一个限制是无法自动连接到主机 USB 端口上的飞行控制器,以便 通过终端构建并上传 PX4 固件.您也无法从虚拟机中的 QGroundControl 连接到飞行控制器。
为此,需要配置 USB 直通设置:
使用终端命令确保用户已添加到虚拟机的拨出组:
sudo usermod -a -G dialout $USER
然后在虚拟机中重启 Ubuntu。
在虚拟机中启用串行端口: VirtualBox > 设置 > 串行端口 1/2/3/...
在虚拟机中启用 USB 控制器: VirtualBox > 设置 > USB
为虚拟机中的引导加载程序添加 USB 筛选器: VirtualBox > 设置 > USB > 添加新的 USB 过滤器.
打开菜单,插入连接到自动驾驶仪的 USB 电缆。选择
...引导加载程序
设备出现在用户界面时。备注
连接 USB 后,引导加载器设备只会出现几秒钟。如果在选择之前就消失了,请断开连接,然后重新连接 USB。
选择
...自动驾驶仪
当设备出现时(这发生在启动加载程序完成之后)。
在虚拟机实例的下拉菜单中选择设备 VirtualBox > 设备 > 您的设备
如果成功,您的设备将显示 lsusb
QGroundControl 就会自动连接到设备。您还可以使用以下命令构建和上传固件:
使 px4_fmu-v5_default 上传
# 用于 QGroundControl 的 WiFi 遥测技术
如果使用 QGroundControl 在虚拟机中,应将虚拟机网络设置设置为桥接适配器模式。这样,客户操作系统就可以直接访问主机上的网络硬件。如果使用网络地址转换(NAT)(运行 Ubuntu 20.04 LTS 的 VirtualBox 7 默认设置为 NAT),这将阻止 QGroundControl 用于与载具通信的出站 UDP 数据包。