ArduPilot故障保护机制
ArduPilot故障保护机制
故障保护机制是ArduPilot飞控系统设计的核心安全特性,用于在检测到系统异常时自动触发预设动作,以最大限度保障飞行器或地面车辆的安全。
概述
ArduPilot具备一套多层次、全方位的故障保护系统,持续监控包括遥控器信号、电池状态、导航系统、通信链路等关键组件。当特定异常条件满足时,系统会根据预设策略自动采取应对措施,如自动返航、降落、悬停或解除动力,从而有效降低设备损失和安全隐患[1](@ref)。
主要故障保护类型
遥控器故障保护
- **触发条件**:遥控器信号丢失。具体判断依据为:接收机无信号输出,或油门通道(通常为通道3)的数值低于参数 `FS_THR_VALUE` 设定的阈值,且此种状态持续超过 `FS_TIMEOUT` 参数设定的时间(单位:秒)[1](@ref)。
- **系统响应**:触发后,飞控将根据 `FS_ACTION` 参数的设定执行相应动作,例如执行返航(RTL)、保持当前状态(HOLD)或尝试智能返航(SmartRTL)[1](@ref)。
- **恢复控制**:一旦遥控器信号恢复,操作者通常需要通过切换遥控器上的模式开关来重新取得控制权[1](@ref)。
电池故障保护
- **触发条件**:
* **电压触发**:电池电压低于 `BATT_LOW_VOLT`(低电压阈值)或 `BATT_CRT_VOLT`(严重低电压阈值),并持续一段时间(由 `BATT_LOW_TIMER` 控制,默认通常为10秒)[1](@ref)。 * **容量触发**:电池剩余容量低于 `BATT_LOW_MAH` 参数设定的值[1](@ref)。
- **系统响应**:触发后,飞控会发出声光警报,并在可能的情况下向地面站发送警告信息。具体采取的动作由 `BATT_FS_LOW_ACT` 和 `BATT_FS_CRT_ACT` 参数定义,如返航(RTL)、降落(LAND)或解除装备(Disarm)[1](@ref)。
地面站故障保护
- **触发条件**:飞控与地面站(如Mission Planner)之间的MAVLink通信中断超过 `FS_GCS_TIMEOUT` 参数设定的时间[1](@ref)。
- **系统响应**:此保护的行为由 `FS_GCS_ENABLE` 和 `FS_ACTION` 参数共同控制。可设置为忽略通信中断(特别是在自动任务模式下)、执行返航(RTL)或进入保持(HOLD)模式[1](@ref)。
EKF/导航故障保护
- **触发条件**:扩展卡尔曼滤波器(EKF)解算出的导航数据(如位置、速度方差)出现显著异常,超出由 `FS_EKF_THRESH` 参数设定的可信阈值。系统会持续检查,通常在异常状态持续一定周期(如1秒)后才触发,以防止误报[5](@ref)。
- **系统响应**:飞控可能会切换至不依赖GPS的飞行模式(如定高模式),或直接执行降落,以避免因不可信的导航数据导致飞行器失控[5](@ref)。
主循环卡顿保护
- **触发条件**:这是一个底层系统保护。通过高频率(如1kHz)的中断服务程序检查主循环是否正常运行。如果检测到主循环卡顿(例如超过2秒未运行),则判定系统出现严重问题[2,4](@ref)。
- **系统响应**:立即将电机输出降至最低并解除装备,力求将损失降到最低。该保护机制在底层直接运作,即使高层控制逻辑卡死也能生效[2,4](@ref)。
地理围栏故障保护
- **触发条件**:飞行器飞出预设的安全区域(地理围栏)。
- **系统响应**:通常自动执行返航(RTL)或智能返航(SmartRTL),确保飞行器返回安全区域内。
配置与使用建议
- **参数设置**:上述所有故障保护的触发阈值、延迟时间和响应动作均通过对应参数调整。务必在完全理解参数含义和潜在后果后进行设置。
- **充分测试**:任何故障保护参数修改后,都应在绝对安全的环境(如开阔场地,不安装螺旋桨)下进行模拟测试,验证其行为是否符合预期。
- **安全警告**:禁用或过于宽松地设置故障保护(例如将动作设为“无”)会显著增加风险。这意味着在紧急情况下飞控将不会自动介入,完全依赖操作员的手动干预[1](@ref)。
参见
- ArduPilot参数列表 - 获取飞控参数的完整说明。
- Mission Planner使用指南 - 学习如何使用地面站配置参数。