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

先取得已批准的任务级安全需求¶
不要从软件下拉菜单开始,也不要由首次配置人员临场决定安全动作。以下内容应由项目危害分析、任务设计和测试计划批准,配置人员负责实现和验证:
- 正常由谁控制:遥控器、任务、地面站还是伴随计算机;
- 哪些模式需要位置、高度、航向或空速;
- 遥控链路丢失时的安全目标;
- 数据链丢失时的安全目标;
- 定位失效时的安全目标;
- 电池逐级降低时的安全目标;
- 围栏越界时的安全目标;
- 执行器或传感器异常时的安全目标;
- 什么条件下必须立即停止推进;
- 链路或传感器恢复后谁取得控制权。
安全目标必须结合场地、机体、任务和法规。失联后“返航”对空旷测绘机可能合理,对室内机、无可靠定位的机体或返航路径有障碍的场景可能更危险。
没有已批准矩阵时,保持平台默认配置并标记阻断,不得把默认值解释为适合当前任务,也不得由零基础读者自行选择DROP、LAND、RTL、Terminate或其他最终动作。
模式表¶
每个可由操作者选择的模式填写:
| 开关位置 | 平台模式名 | 控制目标 | 必需传感器 | 进入条件 | 退出条件 | 失效降级 | 界面证据 |
|---|---|---|---|---|---|---|---|
| 待填 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 | 待填 |
每一行另附批准需求编号和固定版本官方定义链接。示例:
开关位置:三段开关中位
平台模式名:从当前固件模式列表抄录
控制目标/传感器/进入与退出条件:从固定版本官方定义抄录
失效降级:来自已批准安全矩阵SR-编号
界面证据:开关中位时工具和日志报告同一模式
只配置首次飞行和安全处置实际需要的模式。模式过多会增加开关混淆和不可测组合。
在无桨条件下逐个切换,确认:
- 开关位置与模式名称一致;
- 中间位置不会落入未定义区;
- 模式拒绝时有明确原因;
- 缺少必要传感器时不会伪装进入;
- 重启后映射保持;
- 失联时不依赖已丢失的开关值。
安全事件矩阵¶
| 事件 | 检测信号 | 检测时间 | 暂态动作 | 最终动作 | 依赖 | 恢复条件 | 测试层级 |
|---|---|---|---|---|---|---|---|
| 遥控失联 | 无帧/失联标志 | 待填 | 待填 | 待填 | 待填 | 待填 | 未解锁实机仅测检测;动作走SITL/HITL |
| 地面站链路失联 | 心跳或链路超时 | 待填 | 待填 | 待填 | 待填 | 待填 | 未解锁实机仅测检测;动作走SITL/HITL |
| 低电量 | 电压/容量/剩余时间 | 待填 | 告警 | 待填 | 测量准确 | 待填 | 仿真/供电测试 |
| 严重低电量 | 同上 | 待填 | 待填 | 待填 | 着陆能力 | 待填 | 仿真 |
| 位置丢失 | 估计器状态 | 待填 | 待填 | 待填 | 高度/姿态 | 待填 | SITL |
| 围栏越界 | 位置与围栏 | 待填 | 待填 | 待填 | 定位/Home | 待填 | SITL |
| Offboard失联 | 外部设定值超时 | 待填 | 待填 | 待填 | 备用模式 | 待填 | SITL |
| 传感器异常 | 健康/一致性 | 待填 | 待填 | 待填 | 冗余策略 | 待填 | SITL/HITL |
“已设置”为动作名称不够。还要知道触发、延迟、依赖、优先级和恢复。
矩阵每一行必须关联批准需求编号、固件参数名、实际值和固定版本来源。不能从图中示例动作反推项目要求。
多个失效同时发生¶
现实中事件会组合:
- 遥控失联加GNSS失效;
- 低电量加返航逆风;
- 数据链失联加任务继续;
- 磁力计异常加位置模式;
- 主电源异常但航电由备用电源维持。
明确平台如何选择更高严重度动作,哪些动作会覆盖其他动作。PX4 v1.17说明多个失效保护同时触发时采用更严重的动作;其他平台按各自状态机核对。
不要只测每个单一事件后假设组合安全。
地理围栏¶
围栏配置需要:
- 坐标基准;
- Home和起飞点关系;
- 水平范围;
- 高度参考;
- 安全余量;
- 越界动作;
- 定位失效时行为;
- 返航路径和高度;
- 本地法规与场地限制。
软件围栏依赖定位、参数和执行器,不能替代实体人员隔离。终止或立即停机动作可能导致坠落,必须评估地面风险。
解锁检查是安全功能¶
解锁检查通常覆盖:
- 传感器校准与一致性;
- 姿态和倾角;
- 遥控输入;
- 油门位置;
- 电池状态;
- 定位或Home;
- 存储和日志;
- 任务或围栏;
- 执行器配置;
- CPU负载;
- 安全开关;
- 参数重启要求;
- 内部错误。
平台不一定覆盖本项目的全部硬门禁。例如主连接器额定载荷温升、螺旋桨型号和场地批准通常不属于飞控内建检查。
不关闭检查来消除红色告警¶
正确流程:
- 保存完整告警文本、代码或标志;
- 查阅与当前固件版本一致的官方说明;
- 确认触发条件;
- 修复硬件、配置、校准或环境原因;
- 重启并复测;
- 保存通过证据。
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_SKIPCHK、ARMING_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
help、status、相关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、定位、航向、路径和能量前提明确;
- 所有内建解锁检查保持启用;
- 各平台绕过参数已经导出、与批准值比较并在重启后复读;
- 预解锁错误已逐项解决而非屏蔽;
- 不存在临时绕过或安全检查豁免;
- 解锁条件只读验证后重新上电仍为解除状态;
- 螺旋桨仍未安装。
检查理解¶
- 飞行模式、失效保护和解锁检查分别解决什么问题?
- 为什么返航不是所有失联场景的默认最安全动作?
- 飞控内建解锁检查通常不会覆盖哪些整机门禁?
- 为什么要测试多个失效同时发生?
- 禁用预解锁检查会破坏什么证据链?