脚本特技飞行

备注

ArduPlane 4.2 及更高版本已具备此功能。它正在迅速发展。建议用户加载当前的 "最新 "固件,并参考与之匹配的说明 ( 脚本特技飞行 )以获得最佳性能。

ArduPilot 可通过 LUA 脚本执行特技飞行。既可通过自动模式任务项目,也可通过在许多正常飞机飞行模式下执行的脚本,通常通过发射机开关和选择 RC 通道进行控制。

备注

这就要求飞行器能够进行特技飞行,前平移/俯仰、滚转和偏航率控制器调试得当,并且在必要时,飞行员应能够在飞行器处于异常姿态时安全地接管控制权(通过开关或模式转换)。飞行器 ACRO_x_RATE 参数限制每个轴的最大指令速率,与 ACRO 模式相同。

任务 NAV_SCRIPT_TIME

SCRIPT_TIME 航点类型允许使用 LUA 脚本来暂时控制飞行器的滚动/前平移/俯仰/偏航速率。为了防止没有适当的脚本处于活动状态(即没有加载到 SD 卡的 APM/Scripts 目录中)来执行控制,或 LUA 脚本因错误而崩溃,有一个强制参数提供了脚本在执行下一个任务项目之前可以接管的最长时间。

SCRIPT_TIME 项目的格式为

指令字段 特派团规划员外地 说明
参数1 命令 ID 编号,可从运行脚本中获取,以识别所请求的操作
参数2 处理下一个任务项目前的最长时间(以秒为单位
参数3 可从运行脚本中访问的参数,作为第一个变量使用。
参数4 可从运行脚本中访问的参数,可作为第二个变量使用。
参数5 纬度 目标纬度
参数6 目标经度
参数7 Alt 目标高度

当遇到上述任务指令时,需要运行一个 LUA 脚本来识别是否需要进行控制,并开始向(飞行)控制器发送俯仰/左平移/横滚/偏航率输入,以控制其姿态和/或轨迹。它可以使用命令中的两个可变输入参数来控制机动的各个方面,如滚转/循环速率、重复次数、机动某些部分的时间等。LUA 脚本示例目录中提供了一个示例,名为 plane_aerobatics.lua 可以玩几种花样。

在 NAV_SCRIPT_TIME 项目中运行的脚本的执行可以通过从自动模式切换到其他模式而轻松中断。

备注

返回 AUTO(自动)模式后,自动飞行任务将恢复到切换模式前的最后一项。如果是 NAV_SCRIPT_TIME 命令,则会从头开始。

备注

请确保在 NAV_SCRIPT_TIME 命令序列之前和之后都有有效的航点,以便为脚本建立使用路径(可选),并在尝试此功能之前有足够的高度。

提示

如果您创建了任务,并将打算使用的 LUA 脚本放在 SITL 模拟的 /scripts 子目录中,您就可以测试脚本和任务,而不会危及飞行器。

下面是上述示例脚本的 SITL 模拟视频:

开关上的技巧

除了允许 LUA 脚本在上述 "自动 "任务中接管飞行器速率控制器外,它们还可以在 "巡航 "或 "FBWA "等正常模式下接管控制权。这要求脚本

  • 使用特定调用 "vehicle:nav_scripting_enable(...) "启用该功能,该调用会返回一个布尔值,表示成功或失败。

  • 定期(至少每 50 毫秒)调用 "vehicle:set_target_throttle_rpy(....) "函数来设置滚动/前平移/俯仰/偏航率和油门百分比。否则将禁用控制覆盖,并将控制返回到原始飞行模式。更改飞行模式也会禁用脚本控制。

这样就可以实现 "开关特技",即使用一个驱动遥控通道的激活开关来启用特技飞行特技脚本,该脚本由另一个遥控通道选择。下面给出一个系统示例 这里.

这包括一个读取遥控通道的小型控制脚本,用于选择和激活花样,以及多达 10 个不同花样的单个花样操作脚本。这样,用户之间就可以交换花样,最多只是在文本编辑器中更改特定花样的 ID 号,以便与新用户加载在 SD 卡上的花样脚本列表相匹配。

要创建新技巧,用户需要具备一定的 LUA 脚本创建知识,但由于用户可以使用现有技巧作为模板来创建新技巧,因此这项任务得以简化。

如上所述,使用 SITL,特别是与 RealFlight 和类似于 成瘾X这样,开发和调试就变得更加容易,而无需冒险使用真正的载具。

下面是 "开关上的把戏 "的介绍视频:

下面这段视频展示了 "斯维奇变戏法 "新戏法的开发过程:

开关上的技巧示例脚本的设置说明

  • 确保您已对飞机进行了自动调整,并确保其能够在 ACRO 模式下很好地进行特技飞行(Bixlers 和飞翼只能进行翻滚和循环,一般....no yaw authority...ie should be able to knife edge for full capability)。这包括自动调整新的偏航率控制器。启用 启用偏航速率 并设置 ACRO_YAW_RATE 适当(90deg/s 是一个好的开始)。在进行自动调整时,不仅要调整俯仰和滚转,还要像调整俯仰和滚转一样,通过使用方向舵来调整偏航。

  • 在具备以下功能的(飞行)控制器(F7 或 H7)上启用脚本功能 SCR_ENABLE =1 和 SCR_HEAP_SIZE = 200000(将来可以编写四个技巧脚本 + 自动任务脚本)。

  • 复制 https://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_Scripting/examples/Aerobatics/Via_Switch 将脚本复制到 SD 卡 APM/scripts 目录中。使用 RAW 视图并以相同的名称复制到 SD 卡上的文件。

  • 将 RC 通道分配给 RCx_OPTION = 300 用于花样激活开关(低=禁用,中=显示所选花样编号,高=执行),一个用于 301,即花样选择。您可以使用三个位置的 0/5/10 花样 ID 选择设置,以 RCx_OPTION = 301.0 表示禁用,5 表示刀刃,10 表示使用上述脚本的循环/immelman 示例。

  • 启动后,您将看到信息,显示已加载 5(刀锋)和 10(循环/immelman)特技。将激活开关设置到中间位置将识别地面站或 TX(如果运行)上的选择通道所选择的技巧编号。 雅浦 遥测。

  • 在地面控制站的参数列表中,您应该可以看到一组 "AERO "参数....。 AERO_TRICK_RAT 设置环路螺距速率,尝试 90deg/s、 AERO_RPT_COUNT 设置循环次数,如果为 0,则为无穷大。 AERO_TRICK_ANG 设置刀刃技巧角度 0 至 180 或 -180 度,只要激活开关处于高电平,该角度就会执行。使用 GCS 或 雅浦 GCSCRSF 参数编辑器如果您愿意,可以在空气中改变这些参数,以改变窍门特性

  • 您可以将启动开关置于低电平,改变模式,或将选择器设置为 0,从而躲过一劫。

记住:高度是您的朋友!不要在 200 英尺以下尝试第一次飞行!如果您在该高度难以看清飞行器,FPV 是一个很好的尝试方式。

特技飞行调试

正常的 ArduPilot 自动调整可为大多数载具提供安全、稳定的 PID 调整。因此,它并不适合需要严格调整的精密特技飞行。请参见下文: