
无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载Failsafes失效保护是 ArduPilot 机型在关键系统失效电池告警、地面站失联、RC 信号丢失、导航估计异常等时自动执行的安全动作配置页。本文以 QGroundControlQGC中的ArduPilot Failsafes 设置页面为核心逐项讲解各失效保护的含义、对应固件参数、默认值并结合源码剖析该页面的生成机制与底层实现帮助你在首次飞行前正确配置并理解每一个开关背后对应的 ArduPilot 参数。本文所述页面仅适用于运行 ArduPilot 固件的机型PX4 机型的安全配置使用独立的 Safety 页面。页面入口与适用范围在 QGC 的Vehicle Setup机架设置视图中ArduPilot 专属配置页列表中包含了 Failsafes 页具体位置可参考 Vehicle Configuration 总览。页面侧边栏顶部提供搜索框输入failsafe、voltage、mah、heartbeat、pwm、ekf等关键词即可快速定位本页内的设置项——这些关键词正是由页面定义文件中的keywords字段提供的。该页面“可用选项随机型不同而变化”其根本原因在源码中体现得很直接APMFailsafesComponent::description()和setupSource()根据_vehicle-vehicleType()MAV_TYPE_*返回不同的描述文本与界面见 APMFailsafesComponent.cc机型类型页面描述Submarine潜水艇配置失效保护动作与漏水检测Ground Rover地面车配置电池、GCS、油门、EKF 失效保护Fixed Wing固定翼配置电池、GCS、油门失效保护多旋翼Copter/Hexa/Octo 等配置电池、GCS、RC、油门、EKF、Dead Reckoning 失效保护此外APMFailsafesComponent还声明了两个实用的特性见 APMFailsafesComponent.hallowSetupWhileArmed()与allowSetupWhileFlying()均返回true即解锁或飞行途中也允许进入本页查看/调整设置QGC 通常要求安全相关设置在地面完成此页是特例同时requiresSetup()为false表示本页不参与“未完成设置禁止起飞”的红标判定。电池失效保护Battery Failsafe电池失效保护是保障飞行安全最基础的一环。页面支持按电池实例分别配置——如果飞控接入了第二块电池存在BATT2_*参数配置项会以两组形式重复出现。可配置项如下Low action低电量动作电量降至低阈值时的动作RTL / Land / SmartRTL 等组合Critical action严重低电量动作电量降至临界阈值时的动作Low/Critical voltage thresholds低/临界电压阈值触发对应动作的电压值Low/Critical capacity thresholds低/临界容量阈值触发对应动作的剩余电量mAh值。对应的固件参数页面定义文件 APMFailsafes.VehicleConfig.json 中该区块使用repeat机制按BATT前缀自动生成两组控件repeat: { paramPrefix: BATT, probePostfix: MONITOR, indexing: apm_battery, enableParam: MONITOR, disabledParamValue: _monitorParamValueDisabled }即以BATT_MONITOR电池监控是否启用为探测参数只要其值不为 0该电池的失效保护区块就会显示且第一组使用BATT_*参数、第二组使用BATT2_*参数。具体控件的参数映射为页面控件参数电池 1参数电池 2含义Low actionBATT_FS_LOW_ACTBATT2_FS_LOW_ACT低电量触发动作Critical actionBATT_FS_CRT_ACTBATT2_FS_CRT_ACT临界电量触发动作Low voltage thresholdBATT_LOW_VOLTBATT2_LOW_VOLT低电压阈值VCritical voltage thresholdBATT_CRT_VOLTBATT2_CRT_VOLT临界电压阈值VLow mAh thresholdBATT_LOW_MAHBATT2_LOW_MAH低容量阈值mAhCritical mAh thresholdBATT_CRT_MAHBATT2_CRT_MAH临界容量阈值mAh默认值参考仓库内置参数集Copter.OfflineEditing.paramsCopter 出厂BATT_LOW_VOLT10.5V、BATT_CRT_VOLT0未启用、BATT_LOW_MAH0、BATT_CRT_MAH0且BATT_FS_LOW_ACT0、BATT_FS_CRT_ACT0默认不触发动作Sub 机型的电压/容量阈值均为 0见 Sub.OfflineEditing.params。因此实际使用前必须依据电池电压平台如 3S/4S/6S LiPo与容量自行设定。注意页面仅在飞控存在BATT_MONITOR且监控已启用值非 0时才展示该区块如果电池模块未配置好相关阈值也不会生效。地面站失效保护Ground Station Failsafe当地面站与飞控之间的遥测链路心跳 Heartbeat中断时触发。QGC 作为 GCS 会持续向飞控发送心跳飞控检测到心跳丢失持续超过设定时间后执行保护动作。Copter / Rover 版本Enabled启用开关对应FS_GCS_ENABLETimeout超时心跳丢失后触发保护动作的等待时间参数为FS_GCS_TIMEOUTCopter/Rover 默认5 秒见 Copter.OfflineEditing.params、Rover.OfflineEditing.paramsAction动作Copter 提供 RTL、Land、SmartRTL or RTL、SmartRTL or Land、Auto DO_LAND_START or RTL、Brake or Land 六个选项分别对应FS_GCS_ENABLE的取值 1、5、3、4、6、7常量定义见 JSON 中_copterGcsParamValue*Ignore failsafe if忽略条件通过FS_OPTIONS位掩码设置——Copter 可勾选“In Auto mode位 2”“In pilot control位 16”即在这些场景下不触发Rover 另有“In Hold mode位 1”选项。Plane 版本Plane 的 GCS 失效保护参数名是FS_GCS_ENABL注意只有 12 个字符这是 ArduPilot 参数名 16 字符限制下的截断命名见 Plane.OfflineEditing.params其“Trigger method触发方式”有三种触发方式FS_GCS_ENABL取值Heartbeat only仅心跳1Heartbeat Remote RSSI心跳 遥测 RSSI2Heartbeat AUTO心跳 处于 AUTO 模式3RSSI 触发要求数传模块能上报接收信号强度AUTO 触发表示仅在自动驾驶模式下检测心跳丢失。RC 与油门失效保护RC / Throttle FailsafeCopter 的 RC FailsafeCopter 的 RC 失效保护默认Always enabled始终启用页面仅显示“Ignore failsafe if”条件设置FS_OPTIONS位掩码In Auto mode位 1、In Guided mode位 4、Landing位 8。Copter 的 Throttle FailsafeEnabled对应FS_THR_ENABLECopter 默认开启默认值 1PWM thresholdFS_THR_VALUE默认975低于此 PWM 值视为信号丢失见 Copter 参数集Action与 GCS 失效保护相同的六种动作Always RTL1、Always Land3、Always SmartRTL or RTL4、Always SmartRTL or Land5、Auto DO_LAND_START or RTL6、Always Brake or Land7Ignore failsafe if可勾选 In Auto mode位 1、In Guided mode位 4、Landing位 8。Plane 的 Failsafe Triggers失效保护触发器固定翼的油门失效保护参数为THR_FAILSAFE默认 1启用与THR_FS_VALUE默认950PWM。页面还额外提供固定翼特有的短/长动作时序设置FS_SHORT_ACTNShort failsafe action信号丢失后先执行的短期动作FS_LONG_ACTNLong failsafe action信号持续丢失达到长超时后执行的最终动作FS_LONG_TIMEOUTLong failsafe timeout默认5 秒VTOL 机型额外显示Q_TRANS_FAIL_ACTVTOL 转换失败动作与Q_TRANS_FAIL转换失败超时仅在存在Q_TRANS_FAIL参数时出现。Rover 的 Throttle FailsafeRover 使用FS_THR_ENABLE默认 1FS_THR_VALUE默认910FS_TIMEOUT默认1.5 秒动作由FS_ACTION单选取值含义取值动作0Nothing无动作1RTL2Hold保持默认3SmartRTL or RTL4SmartRTL or Hold5Terminate终止/锁定6Loiter or Hold同时可勾选“In Auto modeFS_ACTION置为忽略 Auto 的值 2 场景”与“In Hold modeFS_OPTIONS位 1”忽略条件。EKF 失效保护EKF Failsafe当扩展卡尔曼滤波器EKF对位置/速度的估计方差超过阈值、导航解不再可信时触发。ActionFS_EKF_ACTIONCopterLand if position required需要位置时降落1默认、AltHold if position required需要位置时切 AltHold2、Land from all modes任何模式都降落3RoverHold保持1默认、Report only仅上报2ThresholdFS_EKF_THRESH默认0.8Copter/Rover 一致Ignore failsafe ifCopter 可勾选 LandingFS_OPTIONS位 8。其他失效保护Other FailsafesDead Reckoning航位推算CopterGPS 丢失后飞控在短时间内继续依据惯性推算航迹若仍无法恢复则执行动作。参数为FS_DR_ENABLE与FS_DR_TIMEOUT默认30 秒见 Copter 参数集。动作选项Land1、RTL2、SmartRTL or RTL3、SmartRTL or Land4、Auto Land/Return or RTL6。该区块仅在多旋翼且飞控存在FS_DR_ENABLE参数时显示。Crash Check撞击检测CopterFS_CRASH_CHECK复选框默认启用默认值 1RoverFS_CRASH_CHECK提供 Hold1与 Hold and Disarm2保持并解锁默认值 0 即关闭两种动作。Vibration振动检测CopterFS_VIBE_ENABLE复选框默认启用默认值 1用于检测过度振动。Release gripper on any failsafeCopterFS_OPTIONS位 32任何失效保护触发时释放抓取器gripper。Submarine 专用项Sub 机型通过APMFailsafesComponentSummarySub.qml与APMFlightSafetyComponentSub.qml见 APMFailsafesComponentSummarySub.qml、APMFlightSafetyComponentSub.qml提供以下额外项Leak Detection漏水检测FS_LEAK_ENABLE默认启用、LEAK1_PIN检测引脚默认 -1 即未分配、LEAK1_LOGIC干燥时逻辑电平默认 0Pilot Input遥控输入FS_PILOT_INPUT默认 2FS_PILOT_TIMEOUT默认3 秒注意该参数在固件 3.5 以下版本中不存在页面通过versionCompare(3, 5, 0)判断是否显示Internal Temperature内部温度FS_TEMP_ENABLE默认关闭FS_TEMP_MAX默认62℃Internal Pressure内部压力FS_PRESS_ENABLE默认关闭FS_PRESS_MAX默认105000 Pa。页面背后的实现机制JSON 驱动的 QML 代码生成QGC 4.x 之后的 ArduPilot 配置页普遍采用“声明式 JSON 构建期代码生成”架构Failsafes 页就是典型代表页面所有区块、控件、参数绑定都声明在 APMFailsafes.VehicleConfig.json 中其中constants定义固件参数取值常量如_copterGcsParamValueRtl: 1params声明所需 MAVLink 参数FS_GCS_ENABLE、THR_FAILSAFE、FS_EKF_ACTION等bindings定义启停联动表达式sections则按机型条件showWhen组织各分组构建时由 tools/generators/config_qml/generate_pages.py 将每个Name.VehicleConfig.json转换为同名*Component.qml生成器机制详见 tools/generators/config_qml/README.mdAPMFailsafesComponent.cc 的vehicleConfigJson()返回该 JSON 的资源路径setupSource()返回生成的 QML 页面路径组件在 APMAutoPilotPlugin.cc 中被注册进 ArduPilot 插件的组件列表_failsafesComponent new APMFailsafesComponent(_vehicle, this)从而出现在 Vehicle Setup 侧边栏。这样设计的收益是修改页面布局与参数映射只需编辑 JSON无需改 QML且参数名、选项取值与固件侧保持单一事实来源。配置摘要Summary显示QGC 的 Summary 页会汇总本页关键状态APMFailsafesComponentSummary.qml 显示 Throttle failsafe多旋翼读FS_THR_ENABLE、固定翼读THR_FAILSAFE、Rover 的FS_ACTION与FS_CRASH_CHECK以及 Battery 1/2 的低电量与临界电量动作Sub 机型则通过APMFailsafesComponentSummarySub.qml汇总 GCS、Leak、Battery、EKF、Pilot Input、内部温度/压力失效保护状态。Summary 中的红字状态可帮助你在起飞前快速核对失效保护是否已全部配置到位。配置建议与注意事项先配置电池监控再配置电池失效保护确认BATT_MONITOR已启用且电压/容量阈值按电池规格设置否则电池区块与阈值均不生效GCS 超时不宜过短FS_GCS_TIMEOUT默认 5 秒若数传链路不稳定如飞行中频繁丢包可适当调大避免误触发 RTL/Land区分 Copter 的 RC 与 Throttle 失效保护Copter 的 RC 失效保护始终启用页面上的“Ignore failsafe if”与 Throttle 失效保护的忽略条件可独立配置注意FS_OPTIONS各 bit 位含义不同Auto1、Guided4、Landing8、Pilot control16、Hold1、Gripper32固定翼参数名差异Plane 的 GCS 失效保护参数是FS_GCS_ENABL截断名搜索参数或对照日志时不要写成FS_GCS_ENABLEEKF 阈值默认 0.8若机架振动大、GPS 环境差导致 EKF 频繁告警可结合振动失效保护与传感器校准排查根本原因而非一味放宽阈值Sub 机型的漏水检测默认启用但引脚未分配LEAK1_PIN-1接入漏水传感器前务必先按实际接线配置引脚与逻辑电平。参考资源本文档原文Failsafes (ArduPilot)页面组件APMFailsafesComponent.h / APMFailsafesComponent.cc页面定义参数与控件映射APMFailsafes.VehicleConfig.json参数默认值Copter / Plane / Rover / Sub 的 OfflineEditing.params页面生成器generate_pages.py 及其 README组件注册APMAutoPilotPlugin.cc赞分享无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载相关推荐QGroundControl ArduPilot 失效保护Failsafes配置完全指南QGroundControl ArduPilot 失效保护Failsafes配置完全指南 本篇技术指南以 QGroundControl 用户手册中 Ardu无人机智能硬件QGroundControl 中 ArduPilot 失效保护Failsafes设置页面完全指南从参数到源码实现QGroundControl 中 ArduPilot 失效保护Failsafes设置页面完全指南从参数到源码实现 QGroundControlQGC为无人机智能硬件QGroundControl 中 ArduPilot 失败保护Failsafes配置完全指南参数、机种差异与实现原理QGroundControl 中 ArduPilot 失败保护Failsafes配置完全指南参数、机种差异与实现原理 本文围绕 QGroundContro无人机智能硬件上一篇深度学习框架中的编译与解释混合式编程Hybridize的原理、加速与序列化实战下一篇使用 Syft 生成容器镜像与文件系统的 SBOM从 CLI 到 Go 库的完整实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考