将 SITL 与 RealFlight 结合使用

RealFlight 是一款具有 3D 视图的商业飞行模拟器,能够设计和测试定制的飞行器。

该模拟器只能在 Windows 上运行,需要 RealFlight 版本 8 或版本 9。请注意,RealFlight-X 与 ArduPilot 不兼容。如果您是第一次安装,建议使用 RealFlight 版本 9。

最快的入门方法是购买 RealFlight 9.5SRealFlight Evolution蒸汽.

以下说明假定您已经设置了飞行控制盒方法,可以使用通常与 RealFlight 一起出售的 Interlink 控制器、操纵杆或在操纵杆模式下使用 OpenTX 发射机。

备注

除非存在操纵杆设备,否则 Realflight 不会启动。如果只想模拟自动飞行任务,或不需要大量操纵杆/控制器输入的任务,可以安装一个虚拟操纵杆,如 vJoy.这将允许您使用该控制器启动 Realflight,并通过地面控制站或虚拟屏幕操纵杆(在安装虚拟设备驱动程序的同时安装 "vJoy Feeder "程序)控制飞行器。

如果使用 OpenTX 发送器作为操纵杆,请参阅本页最后一节的设置说明。安装 RealFlight 后,请先熟悉一下其操作,然后再继续。

配置 RealFlight

  • 启动 RealFlight。

  • 在 RealFlight8/9 上,转到 "设置"->物理并启用 "RealFlight 链接 "选项,然后将 "在后台时暂停模拟 "和 "在菜单时暂停模拟 "选项设置为 "否"。

  • 在《RealFlight Evolution》中,按 ESC 键,转到设置->物理->质量,启用 "RealFlight Link "选项,并将 "在后台时暂停模拟 "和 "在菜单时暂停模拟 "选项设为否。

  • 在 "物理 "设置下,将 "自动重置延迟(秒)"选项更改为 2.0。

  • 重新启动 RealFlight。

如果使用 RealFlight8/9,根据您的显卡/处理器和 CPU 性能,您可能需要降低图形处理能力以提高性能。您需要运行 200Hz 或更高的刷新率,以获得最佳模拟器性能。RealFlight Evolution 已大大提高了性能,因此可能不需要降低这些性能:

  • 在 "模拟"、"设置"、"图形"、"质量 "下,将所有值设为 "无 "或 "低"(例如,将 "云 "设为 "无",将 "水质 "设为 "低 "等)。

  • 在 "硬件 "下将 "分辨率 "设为 "800 x 600 中(16 位)",并选择 "全屏 "模式

../_images/realflight-settings-graphics.png

备注

在 RealFlight 的 "模拟 "菜单下的 "物理 "子菜单中,确保将其设置为 "现实",以获得最佳物理建模和刷新率。

对于 Evolution,您可以使用默认设置,因为其图形性能有所改善。您可以在连接到 SITL(如下文所述)后,通过打开 Realflight 中的 "NavGuides "部件来检查性能。图形帧/秒 "计数需要超过 200 才能使飞行器飞行良好。如果太低,您可以更改 "设置->图形 "硬件和质量子菜单中的类似设置,如上所述,直到获得足够的帧速率。

加载模型

普通的 RealFlight 模型必须经过修改才能与 ArduPilot 模拟器配合使用。ArduPilot 提供了多种模型,下面是一个使用 ArduPilot 提供的 QuadCopterX Realflight 模型的示例。

./_images/realflight-select-aircraft.png

连接Mission Planner地面站的 SITL

备注

在许多较旧但兼容 Windows 10 的电脑上,可能没有足够的处理能力来同时顺利运行Mission Planner地面站 SITL。** 这不仅仅是表面现象。如果由于处理能力不足导致 RealFlight 滞后,这将对模拟产生不利影响,导致意外或奇怪的行为,甚至可能导致崩溃。** 如果您有另一台 Windows PC、Linux box 或 Mac 来分担处理负载,请参阅下一节 "双 PC 设置"。

  • 在 "配置/飞行稳定调整 "中,Planner 将布局下拉菜单设置为 "高级"。

  • 在顶部菜单栏中,选择模拟

  • 从 "模型 "下拉菜单中选择 "flightaxis",然后按下多旋翼飞行器图标

  • 系统会询问您是使用当前的开发人员分支代码还是使用当前发布的稳定版代码进行模拟。请选择其一。

备注

可以使用 ArduPilot 的自定义代码分支进行模拟。请参见 带有自定义代码的任务计划 SITL.

../_images/realflight-mp-sitl.jpg

在真实飞行控制器上按下红色的 "重置 "按钮或电脑的空格键,重置飞行器的姿态和位置,并初始化与 SITL 的连接。

  • 应出现 "FlightAxis Controller Device has been activated(FlightAxis 控制器设备已激活)"信息,电机应变得更安静

如果未重置载具位置,请在 RealFlight 中进行重置:

  • 飞机,选择飞机

  • 定制飞机、四旋翼飞行器X-flightaxis

  • 按确定

  • 载具位置复位后,再次按下发射机的 "复位 "按钮或电脑空格键

此时,通过Mission Planner地面站加载您为该 "QuadCopterX-flightaxis "模型下载的参数文件。使用 "完整参数列表 "或 "树形 "屏幕,在右侧选择 载荷 文件 并选择参数文件。现在就可以上膛和飞行了。

备注

与实际载具一样,有时加载参数会 "启用 "其他参数组,而这些参数组在首次加载时不会设置。如果在加载参数时收到已启用其他参数的信息,请重新加载参数文件以更改新显示的参数组。

将代码分支与Mission Planner地面站 SITL 和 RealFlight 结合使用

如果需要,您可以使用并测试自己的分支,而不是使用稳定版或主代码分支进行模拟。具体步骤如下

  • 使用所需的 Realflight飞行器启动RealFlight,该飞行器已经过改装,可与flightaxis一起使用。

  • 在你的 GITHUB 版本库中(非本地版本库),将你的分支推送到该版本库中

  • 在网络 GITHUB 版本的 "操作 "下,选择 Cygwin 编译,并选择您推送的、希望模拟使用的分支

  • 下载并解压构建 aritfacts,选择载具类型的 ArduXXX.elf.exe 文件并重命名,将 .elf 部分删除为普通 .exe 文件,然后将其放到 Documents/Mission Planner/sitl 文件夹中,以取代现有文件(如果有的话)。

  • 为相应的飞行器启动Mission Planner地面站飞行器模拟,勾选 "不下载 "复选框,并如上所述选择飞行轴。

模拟将使用您的代码分支开始。请务必设置/更新 RealFlight 飞行器的参数。

在同一台机器上连接在 WSL 中运行的 SITL

根据个人电脑的性能和 RealFlight 版本,可以在 WSL 下运行 SITL,并连接到 RealFlight 进行图形和物理建模。在这种情况下,您需要打开 WSL 实例并启动 SITL:

  • cd ArduCopter(见下文注释)

  • 对于 WSL1:键入 sim_vehicle.py -f flightaxis:127.0.0.1 - -地图 - -控制台

  • 对于 WSL2:您需要使用以下命令确定虚拟机的网关 途径 -n然后在 flightaxis 的 SITL 启动命令中使用网关 IP: sim_vehicle.py -f flightaxis:<gateway ip 地址 - -地图 - -控制台

  • 回到 RealFlight,按下发射机上的红色 "重置 "按钮,或电脑上的空格键

  • 大约一分钟后,SITL 地图上应该可以看到该载具

  • 从 SITL 类型 停止 负荷 <文件名>; 来加载与模型在同一目录下找到的参数。在输入 停止 取得,以便在显示参数集之前加载需要启用的参数。在某些情况下,您甚至可能需要重新启动 SITL,以使某些新参数(如输出功能更改)生效。

提示

如果在启动 SITL 时使用"-add-param-file=*pathtofile*"(....ie: sim_vehicle.py -f flightaxis:x.x.x.x -map - -console -add-param-file=*pathtofile* -w)添加参数文件,则可以避免上述问题。这将把参数文件添加为默认设置,然后清除模拟目录中可能存在的任何先前的参数更改。

  • 连接到 SITL 后,可通过打开 Realflight 中的 "NavGuides "窗口检查连接性能。图形帧/秒 "计数应超过 200,载具物理特性和与模拟的交互才会准确。

备注

上述内容针对的是 Copter。在开始 sim_vehicle.py 之前,请将这些类型的载具目录更改为 ArduPlane 或 ArduRover,或者在启动时添加 -v <载具类型>指令。Windows 机器的地址不能使用主机名,必须使用 IP 地址。

连接到在独立(或虚拟)机器上运行的 SITL:

这种技术可将处理需求分散到两台 PC 上:一台 Windows 计算机运行 RealFlight 和物理/飞行图形,另一台 Linux PC 或 Linux VM 运行 SITL 模型。它还允许您测试和使用本地生成的代码,而不是 Mission Planner SITL 使用的主分支。

./_images/dualPC-realflight.png
  • 在机器之间使用千兆以太网直接连接可获得最佳性能。

  • 打开控制台并输入 "ipconfig",确定运行 RealFlight 的 Windows 机器的 IP 地址。 cygwin, Windows操作系统 11 WSL2Windows 10 WSL如果使用直接以太网连接,则类似于 10.26.0.2。

备注

确保没有防火墙阻止 PC 之间的通信。您应该可以从一台电脑 "ping "到另一台电脑。

  • 在运行 SITL 的独立机器上,使用"-f flightaxis:192.168.x.x "启动 SITL sim_vehicle.py,如果使用传统旋翼飞行器,则使用"-f heli - -model flightaxis:192.168.x.x"。

    • cd ArduCopter(见下文注释)

    • sim_vehicle.py -f flightaxis:192.168.x.x - -map - -console.

    • 然后按照 水路运输下的 SITL 部分

使用现成模型

如上所述,RealFlight 允许设计自己的定制飞行器,包括选择尺寸、重量、外观以及电机和控制面的位置。

ArduPilot 开发人员创建了许多自定义模型,并将其存储在 ArduPilot/SITL_Models 资源库.您应该能够 复制 使用 git 复制 https://github.com/ArduPilot/SITL_Models.git 然后将模型载入 RealFlight。每个模型的目录中都有一个 .parm 文件,可以将其加载到 SITL 中,以便设置适当的调整参数。

SITL_Models 文件夹中有一个 RealFlight 目录,其中的 WIP 子目录用于存放正在制作的模型;还有一个 Released_Models 目录,其中的模型已经过测试,可以与 InterLink 控制器配合使用,并有 README.md 文件介绍其设置和特殊功能。

要导入其中一个模型:

  • 在 RealFlight 上选择模拟 >>导入 >>RealFlight 存档 (RFX、G3X) 并选择您感兴趣的模型

  • 选择飞机>> 选择飞机并选择从上述步骤导入的模型

../_images/realflight-import-model.png
  • 从 SITL 类型 停止 负荷 <文件名>; 加载与模型在同一目录下找到的参数,如上例。在输入 停止 取得,以便在显示参数集之前加载需要启用的参数。在某些情况下,您可能需要重新启动 SITL 才能使某些参数生效。

../_images/realflight-import-parms.png

将 OpenTX 与 RealFlight 和 SITL 结合使用

您可以使用三种方法。最小化:只设置 AETR 飞行控制轴,最大化:至少有 7 个通道连接到 SITL 模块,更接近于您真正使用 TX 飞行的方式,以及 Interlink DX 控制器模拟:最大化:为 SITL 模块提供至少 7 个通道,更接近于模拟如何真正使用 TX 来驾驶飞行器,以及 Interlink DX 控制器模拟。

最低限度:打开 TX 电源,使用向导为模拟使用的新飞机模型编程,插入 USB,选择操纵杆(以后的 OpenTX 版本允许在主无线电设置页面中进行永久选择)。选择模拟-> 在 RealFlight 中选择控制器。选择 Taranis,然后设置副翼、升降舵、方向舵和油门并进行校准。现在要更改模式或设置开关,您需要使用 MAVProxy 或 Mission Planner 命令。

最大值:除上述设置外,还需在 TX 模型中为通道 5、6、7 和 8 设置开关或滑动条/滑块。然后将它们添加到 RealFlight 控制器设置中的功能中。不要在意功能名称,我们只希望将它们传递给 SITL 模型。现在您可以分配 RCx_OPTION 这些函数与模型参数中的通道相关联。

InterLink DX/Elite 控制器仿真:该功能与通常与 RealFlight 一起销售的 Interlink 控制器非常相似。这样就可以使用发射机进行正常的 RealFlight 仿真以及 SITL 仿真,这与 Interlink 控制器的物理布局非常匹配。请参见 利用 OpenTX 进行 Interlink 模拟器控制器仿真 了解设置详情。

要设置六位模式开关,可按以下步骤操作 这里 但首先要使用模式通道上的双位置开关校准 RealFlight 控制器。然后将发射机改回提供六个 PWM 电平。这是因为 RealFlight 会根据校准值自动缩放,所以如果您的六个 PWM 电平位于识别范围的中心,那么通道的 PWM 极值将不会用于校准,PWM 电平在传递到 SITL 之前会被 RealFlight 更改。

创建用于模拟的 RealFlight 模型

参见 本博文 了解为飞行轴模拟创建射频模型的详情。