跳转至

模式、安全动作与解锁检查

飞行模式决定正常控制方式,失效保护决定异常状态转换,解锁检查决定系统是否允许产生推进力。三者相互关联,但不能用一个“安全开关”概括。

安全条件动作与恢复矩阵

先取得已批准的任务级安全需求

不要从软件下拉菜单开始,也不要由首次配置人员临场决定安全动作。以下内容应由项目危害分析、任务设计和测试计划批准,配置人员负责实现和验证:

  • 正常由谁控制:遥控器、任务、地面站还是伴随计算机;
  • 哪些模式需要位置、高度、航向或空速;
  • 遥控链路丢失时的安全目标;
  • 数据链丢失时的安全目标;
  • 定位失效时的安全目标;
  • 电池逐级降低时的安全目标;
  • 围栏越界时的安全目标;
  • 执行器或传感器异常时的安全目标;
  • 什么条件下必须立即停止推进;
  • 链路或传感器恢复后谁取得控制权。

安全目标必须结合场地、机体、任务和法规。失联后“返航”对空旷测绘机可能合理,对室内机、无可靠定位的机体或返航路径有障碍的场景可能更危险。

没有已批准矩阵时,保持平台默认配置并标记阻断,不得把默认值解释为适合当前任务,也不得由零基础读者自行选择DROP、LAND、RTL、Terminate或其他最终动作。

模式表

每个可由操作者选择的模式填写:

开关位置 平台模式名 控制目标 必需传感器 进入条件 退出条件 失效降级 界面证据
待填 待填 待填 待填 待填 待填 待填 待填

每一行另附批准需求编号固定版本官方定义链接。示例:

开关位置:三段开关中位
平台模式名:从当前固件模式列表抄录
控制目标/传感器/进入与退出条件:从固定版本官方定义抄录
失效降级:来自已批准安全矩阵SR-编号
界面证据:开关中位时工具和日志报告同一模式

只配置首次飞行和安全处置实际需要的模式。模式过多会增加开关混淆和不可测组合。

在无桨条件下逐个切换,确认:

  • 开关位置与模式名称一致;
  • 中间位置不会落入未定义区;
  • 模式拒绝时有明确原因;
  • 缺少必要传感器时不会伪装进入;
  • 重启后映射保持;
  • 失联时不依赖已丢失的开关值。

安全事件矩阵

事件 检测信号 检测时间 暂态动作 最终动作 依赖 恢复条件 测试层级
遥控失联 无帧/失联标志 待填 待填 待填 待填 待填 未解锁实机仅测检测;动作走SITL/HITL
地面站链路失联 心跳或链路超时 待填 待填 待填 待填 待填 未解锁实机仅测检测;动作走SITL/HITL
低电量 电压/容量/剩余时间 待填 告警 待填 测量准确 待填 仿真/供电测试
严重低电量 同上 待填 待填 待填 着陆能力 待填 仿真
位置丢失 估计器状态 待填 待填 待填 高度/姿态 待填 SITL
围栏越界 位置与围栏 待填 待填 待填 定位/Home 待填 SITL
Offboard失联 外部设定值超时 待填 待填 待填 备用模式 待填 SITL
传感器异常 健康/一致性 待填 待填 待填 冗余策略 待填 SITL/HITL

“已设置”为动作名称不够。还要知道触发、延迟、依赖、优先级和恢复。

矩阵每一行必须关联批准需求编号、固件参数名、实际值和固定版本来源。不能从图中示例动作反推项目要求。

多个失效同时发生

现实中事件会组合:

  • 遥控失联加GNSS失效;
  • 低电量加返航逆风;
  • 数据链失联加任务继续;
  • 磁力计异常加位置模式;
  • 主电源异常但航电由备用电源维持。

明确平台如何选择更高严重度动作,哪些动作会覆盖其他动作。PX4 v1.17说明多个失效保护同时触发时采用更严重的动作;其他平台按各自状态机核对。

不要只测每个单一事件后假设组合安全。

地理围栏

围栏配置需要:

  • 坐标基准;
  • Home和起飞点关系;
  • 水平范围;
  • 高度参考;
  • 安全余量;
  • 越界动作;
  • 定位失效时行为;
  • 返航路径和高度;
  • 本地法规与场地限制。

软件围栏依赖定位、参数和执行器,不能替代实体人员隔离。终止或立即停机动作可能导致坠落,必须评估地面风险。

解锁检查是安全功能

解锁检查通常覆盖:

  • 传感器校准与一致性;
  • 姿态和倾角;
  • 遥控输入;
  • 油门位置;
  • 电池状态;
  • 定位或Home;
  • 存储和日志;
  • 任务或围栏;
  • 执行器配置;
  • CPU负载;
  • 安全开关;
  • 参数重启要求;
  • 内部错误。

平台不一定覆盖本项目的全部硬门禁。例如主连接器额定载荷温升、螺旋桨型号和场地批准通常不属于飞控内建检查。

不关闭检查来消除红色告警

正确流程:

  1. 保存完整告警文本、代码或标志;
  2. 查阅与当前固件版本一致的官方说明;
  3. 确认触发条件;
  4. 修复硬件、配置、校准或环境原因;
  5. 重启并复测;
  6. 保存通过证据。

ArduPilot官方明确警告不要通过禁用预解锁安全检查来准备飞行。Betaflight提供status和App中的解锁禁止原因。其他平台同样应保留内建安全检查。

本专题不临时绕过解锁检查。需要研究检查实现的开发实验应使用软件在环、硬件在环或独立测试件,并由单独实验程序管理,不得在本专题待交付飞行器上执行。

绕过项审计

“当前没有告警”不能证明安全检查没有被参数绕过。保存下表:

平台 审计入口 实际值 批准值/默认值 依据 结果
Betaflight 2026.6.2 status、完整diff、固定标签中的解锁禁止实现 待填 待填 标签源码/项目基线 待填
INAV 9.1.0 status、完整diff、固定版本解锁标志与设置 待填 待填 9.1.0源码/项目基线 待填
ArduPilot Copter 4.7.1 ARMING_SKIPCHKARMING_OPTIONS跳过位、适用时的ARMING_CRSDP_IGN 待填 无未批准跳过 4.7.1参数元数据/固定标签源码 待填
PX4 v1.17.0 导出全部CBRK_*COM_ARM_*相关参数 待填 无未批准Circuit Breaker v1.17参数元数据/项目基线 待填

具体参数集合必须从固定版本参数元数据和源码取得,不能用本表代替版本核对。任何非默认绕过都要有单独批准、风险说明和恢复证据;05最终配置不允许残留未批准绕过。

解锁条件只读验证

本专题只验证飞控如何判断解锁条件,不真实进入解锁状态:

  • 读取当前允许/禁止状态及全部原因;
  • 分别恢复每个正常条件,确认对应禁止原因消失;
  • 使用软件在环(SITL,Software In The Loop)或平台安全状态模拟验证状态转换;
  • 确认仍未闭环的项目保持为外部阻断门禁;
  • 保存最终未解锁状态和检查结果;
  • 断电后重新上电,确认系统仍处于解除状态。

若平台在USB或配置连接时禁止解锁,这是一项安全状态,不应为了测试而关闭。

四个平台

Betaflight 2026.6.2

  • 使用App和status读取当前解锁禁止原因;
  • 模式区间与开关物理位置逐项对应;
  • Failsafe按当前版本实际参数测试;
  • MSP连接本身可能阻止解锁;
  • 不使用旧版蜂鸣码或默认时序替代当前固件证据;
  • 保存CLI helpstatus、相关get输出,并与2026.6.2标签源码核对。

INAV 9.1.0

  • 模式、导航依赖、失联阶段和返航设置按9.1.0文档;
  • 在无可靠Home、航向和位置时,不把返航标记为可用;
  • 检查导航安全模式与人工模式的切换边界。

ArduPilot Copter 4.7.1

  • 逐项处理Pre-Arm消息;
  • 保持预解锁检查启用;
  • 区分Radio Failsafe、GCS Failsafe、Battery Failsafe和Fence;
  • 执行动作依赖具体模式、定位和参数,应使用SITL先覆盖。

PX4 v1.17.0

  • Safety页面配置电池、遥控、数据链和围栏动作;
  • 失效动作具有严重度和延迟;
  • 保存COM_FAIL_ACT_T、各失联超时和动作参数;
  • Safety文档中的Failsafe State Machine Simulation页面可用于理解状态机,但在线实现可能跟随最新代码;
  • 可执行证据必须在PX4 v1.17.0或固定提交d6f12ad1c4f70ad3230afd7d86e971421e02fef4的本地环境运行,并保存提交、参数、场景和结果;
  • 再在未解锁无桨实机验证可安全注入的链路检测。

测试层级

软件在环(SITL,Software In The Loop)让固定版本飞控软件与仿真机体交互;硬件在环(HITL,Hardware In The Loop)使用真实飞控硬件和仿真环境。搭建方法见仿真、测试、调试与安全回滚。没有固定版本、初始状态、故障注入和预期结果的仿真截图不属于验收证据。

测试 SITL 无桨实机 受控飞行
模式开关映射 可辅助 必须 首飞前复核
遥控失联检测 可覆盖逻辑 必须 仅按批准测试卡
地面站链路失联 必须 可执行 视任务
电池阈值状态机 必须 受控供电可验证 不以耗尽电池测试
围栏和返航路径 必须 可检查配置 场地批准后
立即停机/终止 必须 只验证状态与惰性输出 不为证明功能而坠机
多失效组合 必须 仅覆盖安全组合 高风险场景不实飞

本篇放行条件

  • 模式表完整且开关位置无歧义;
  • 每个模式的传感器依赖明确;
  • 安全事件矩阵包含触发、延迟、动作、依赖和恢复;
  • 遥控、数据链、位置、电池和围栏失效已经区分;
  • 多失效优先级有官方依据或仿真证据;
  • 返航的Home、定位、航向、路径和能量前提明确;
  • 所有内建解锁检查保持启用;
  • 各平台绕过参数已经导出、与批准值比较并在重启后复读;
  • 预解锁错误已逐项解决而非屏蔽;
  • 不存在临时绕过或安全检查豁免;
  • 解锁条件只读验证后重新上电仍为解除状态;
  • 螺旋桨仍未安装。

检查理解

  1. 飞行模式、失效保护和解锁检查分别解决什么问题?
  2. 为什么返航不是所有失联场景的默认最安全动作?
  3. 飞控内建解锁检查通常不会覆盖哪些整机门禁?
  4. 为什么要测试多个失效同时发生?
  5. 禁用预解锁检查会破坏什么证据链?

主要参考