ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QGroundControl 中 ArduPilot 失效保护(Failsafes)设置页面完全指南:从参数到源码实现

QGroundControl 中 ArduPilot 失效保护(Failsafes)设置页面完全指南:从参数到源码实现 无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载QGroundControlQGC为 ArduPilot 固件机型提供独立的Failsafes失效保护配置页面用于在电池电量耗尽、地面站链路丢失、RC 油门信号丢失、EKF 导航估计失效等关键系统故障时自动触发安全动作RTL、Land、Hold 等。本文以官方文档 failsafes.md 为主体结合仓库中驱动该页面的 JSON 配置与 C/QML 实现逐项讲解每个失效保护的可用选项、对应 ArduPilot 参数及数值含义帮助你在飞机、多旋翼、地面车与潜水艇等不同机型上完成安全、正确的失效保护配置。Failsafes 页面入口、机型适配与实现骨架在 QGC 中打开Setup设置视图 → Failsafes即可进入该页面。从源码结构看该页面由 APMFailsafesComponent.cc 承载它继承自VehicleComponent组件名为Failsafes图标为SafetyComponentIcon.png并且allowSetupWhileArmed与allowSetupWhileFlying均为true——也就是说即使飞行器已解锁或正在飞行你依然可以查看和修改失效保护配置。该组件最关键的机制是按机型返回不同的页面内容描述与配置数据源潜水艇SubmarineConfigure failsafe actions and leak detection.失效保护动作与漏水检测地面车Ground RoverConfigure battery, GCS, throttle, and EKF failsafes.固定翼Fixed WingConfigure battery, GCS, and throttle failsafes.多旋翼等其他机型Configure battery, GCS, RC, throttle, EKF, and dead reckoning failsafes.页面的实际控件并非手写 QML而是由一份 JSON 数据文件驱动自动生成src/AutoPilotPlugins/APM/VehicleConfig/APMFailsafes.VehicleConfig.json该文件通过vehicleConfigJson()返回:/qml/QGroundControl/AutoPilotPlugins/APM/VehicleConfig/APMFailsafes.VehicleConfig.json定义了所有失效保护节的标题、关键字、显示条件showWhen、参数绑定与控件类型。setupSource()则根据机型把用户导向APMFailsafesComponent.qml或APMNotSupported.qml不支持的机型显示不支持提示。理解这份 JSON就理解了整个 Failsafes 页面的全部可选项——下文每一节的参数细节均可在其中逐条核对。电池失效保护Battery Failsafe电池失效保护是逐块电池独立配置的若飞行器挂载了多块电池每一块都可以拥有自己独立的低电量/临界电量动作与阈值。可配置项配置项对应 ArduPilot 参数说明低电量动作Low actionBATT_FS_LOW_ACT电池到达低电量等级时执行的动作RTL / Land / SmartRTL 等临界电量动作Critical actionBATT_FS_CRT_ACT电池到达临界电量等级时执行的动作低电压阈值Low voltage thresholdBATT_LOW_VOLT触发低电量动作的电压值伏特临界电压阈值Critical voltage thresholdBATT_CRT_VOLT触发临界电量动作的电压值伏特低容量阈值Low mAh thresholdBATT_LOW_MAH触发低电量动作的剩余容量mAh临界容量阈值Critical mAh thresholdBATT_CRT_MAH触发临界电量动作的剩余容量mAh多电池支持与前置条件在 JSON 配置中电池节使用了repeat机制repeat: { paramPrefix: BATT, probePostfix: MONITOR, indexing: apm_battery, enableParam: MONITOR, disabledParamValue: _monitorParamValueDisabled }它通过probePostfix: MONITOR即探测BATT_MONITOR、BATT2_MONITOR……来发现哪些电池槽位存在且被启用参数名由BATT_前缀派生。QML 侧的 APMBatteryParams.qml 提供了与之一致的命名规则第 1 块电池BATT_第 29 块电池BATT2_、BATT3_、……、BATT9_第 1016 块电池BATTA_、BATTB_、……、BATTG_关键前提只有对应电池的BATT_MONITOR参数不为 0启用了电池监控时该电池的失效保护选项才会显示出来_monitorParamValueDisabled: 0。因此如果页面上看不到某块电池的配置请先检查BATT_MONITOR是否已启用。另外FS_LOW_ACT、FS_CRT_ACT、LOW_VOLT、CRT_VOLT、LOW_MAH、CRT_MAH这些控件都标记为optional: true并且用showWhen判断参数是否存在——只有固件确实提供对应参数时才显示保证了对不同 ArduPilot 版本/机型的兼容。在 APMFailsafesComponentSummary.qml 摘要视图中会分别显示Batt1 low failsafe、Batt1 critical failsafe、Batt2 low failsafe、Batt2 critical failsafe的当前动作值通过BATT_FS_LOW_ACT/BATT_FS_CRT_ACT的枚举字符串呈现便于在页面之外快速核对状态。地面站失效保护Ground Station Failsafe当地面站GCS与飞控之间丢失心跳heartbeat超过设定时间时触发。不同机型对该失效保护的配置差异较大。多旋翼Copter多旋翼的地面站失效保护由FS_GCS_ENABLE控制启用开关写回的动作值为_copterGcsParamValueRtl即 1关闭写回 0。主要配置项启用EnabledFS_GCS_ENABLE切换开关超时TimeoutFS_GCS_TIMEOUT无心跳持续该时间后触发单位为秒动作Action单选组可选值与FS_GCS_ENABLE参数数值对应如下界面选项FS_GCS_ENABLE 数值RTL1Land5SmartRTL or RTL3SmartRTL or Land4Auto DO_LAND_START or RTL6Brake or Land7忽略条件Ignore failsafe if基于FS_OPTIONS位掩码多旋翼提供两项In Auto modebitMask: 2处于 Auto 模式时忽略该失效保护In pilot controlbitMask: 16飞行员手动操控时忽略固定翼Plane固定翼使用FS_GCS_ENABL参数注意 ArduPilot 参数名只有 5 个字符ENABL与多旋翼的FS_GCS_ENABLE不同配置的是**触发方式Trigger**而非动作界面选项FS_GCS_ENABL 数值Heartbeat仅心跳丢失1Heartbeat and Remote RSSI心跳丢失且遥测 RSSI 过低2Heartbeat and AUTO心跳丢失且处于 AUTO 模式3启用开关写回_planeGcsParamValueHeartbeat1关闭写回 0。与多旋翼相比固定翼的触发方式更强调链路质量这一维度。地面车Rover地面车使用FS_GCS_ENABLE但取值语义与多旋翼不同启用Enabled写回_roverFsParamValueEnabled1In Auto mode 忽略切换为_roverFsParamValueEnabledIgnoreAuto2即在 Auto 模式下不触发In Hold mode 忽略FS_OPTIONS的bitMask: 1TimeoutFS_GCS_TIMEOUT油门失效保护Throttle Failsafe当 RC 接收机的油门通道信号丢失时触发配置随机型差异很大。多旋翼CopterThrottle Failsafe 启用FS_THR_ENABLE。启用写回_copterThrParamValueRtl1关闭写回 0PWM 阈值FS_THR_VALUE油门 PWM 低于该值视为信号丢失动作Action单选组FS_THR_ENABLE取值界面选项FS_THR_ENABLE 数值Always RTL1Always Land3Always SmartRTL or RTL4Always SmartRTL or Land5Auto DO_LAND_START or RTL6Always Brake or Land7忽略条件Ignore failsafe ifFS_OPTIONS位掩码——In Auto modebit 1、In Guided modebit 4、Landingbit 8正在降落时忽略另外多旋翼还有独立的RC Failsafe节界面直接标注Always enabledRC 失效保护始终启用仅提供上述FS_OPTIONS的三个忽略位In Auto modebit 1、In Guided modebit 4、Landingbit 8。地面车Rover启用FS_THR_ENABLE启用写回_roverFsParamValueEnabled1PWM 阈值FS_THR_VALUE超时FS_TIMEOUT动作ActionFS_ACTION单选组界面选项FS_ACTION 数值Nothing无动作0RTL1Hold2SmartRTL or RTL3SmartRTL or Hold4Terminate终止断开电机/舵机供电5Loiter or Hold6忽略条件In Auto mode切换FS_THR_ENABLE为 2即 Enabled Ignore Auto、In Hold modeFS_OPTIONSbit 1固定翼Plane固定翼的油门失效保护拆分为触发与短/长失效保护两级Throttle PWM threshold 启用THR_FAILSAFE启用写回 1关闭写回 0PWM 阈值THR_FS_VALUE短失效保护动作Short failsafe actionFS_SHORT_ACTN长失效保护动作Long failsafe actionFS_LONG_ACTN长失效保护超时Long failsafe timeoutFS_LONG_TIMEOUTVTOL 转换失败动作Q_TRANS_FAIL_ACT仅在存在Q_TRANS_FAIL参数时显示即 VTOL 机型VTOL 转换失败超时Q_TRANS_FAILEKF 失效保护EKF Failsafe当扩展卡尔曼滤波器EKF对位置/速度的估计方差超出阈值、导航估计变得不可靠时触发。多旋翼Copter启用FS_EKF_ACTION启用写回_copterEkfParamValueLandIfPosRequired1关闭写回 0阈值ThresholdFS_EKF_THRESHEKF 方差达到该值即触发动作Action界面选项FS_EKF_ACTION 数值Land if position required需要位置时降落1AltHold if position required需要位置时切 AltHold2Land from all modes所有模式下均降落3忽略条件FS_OPTIONS的Landing位bit 8地面车Rover启用FS_EKF_ACTION启用写回_roverEkfParamValueHold1阈值FS_EKF_THRESH动作Action界面选项FS_EKF_ACTION 数值Hold保持1Report only仅上报不执行动作2其他失效保护Other Failsafes依据机型不同Failsafes 页面还会提供以下附加失效保护。航位推算失效保护Dead Reckoning多旋翼当 GPS 丢失后飞控转入航位推算Dead Reckoning维持位置估计若该状态持续过久则触发。仅在存在FS_DR_ENABLE参数且为多旋翼时显示启用FS_DR_ENABLE启用写回_drParamValueLand1关闭写回 0超时TimeoutFS_DR_TIMEOUT动作Action界面选项FS_DR_ENABLE 数值Land1RTL2SmartRTL or RTL3SmartRTL or Land4Auto Land/Return or RTL6忽略条件FS_OPTIONS的Landing位bit 8撞击检测Crash Check多旋翼FS_CRASH_CHECK复选框检测并响应飞行器坠毁地面车FS_CRASH_CHECK切换开关 动作单选组界面选项FS_CRASH_CHECK 数值Hold保持1Hold and Disarm保持并解锁/断电2振动检测Vibration多旋翼FS_VIBE_ENABLE复选框检测过度振动并触发失效保护。抓取器联动Gripper多旋翼FS_OPTIONS的Release gripper on any failsafebit 32任意失效保护触发时释放挂载的抓取器。潜水艇专用Submarine潜水艇的摘要视图由 APMFailsafesComponentSummarySub.qml 呈现包含地面站GCS、漏水Leak、电池Battery、EKF、飞行员输入Pilot Input、内部温度Int. Temperature、内部压力Int. Pressure等失效保护的当前状态。对应参数为漏水检测Leak DetectionFS_LEAK_ENABLE引脚与逻辑电平配置见潜水艇相关设置内部温度失效保护FS_TEMP_ENABLE内部压力失效保护FS_PRESS_ENABLE飞行员输入失效保护FS_PILOT_INPUT值得注意的是SummarySub 中通过_firmware34判断固件版本globals.activeVehicle.versionCompare(3, 5, 0) 0时视为旧固件此时不显示电池、EKF、Pilot Input 三项界面标注 Firmware not supported。这提醒我们失效保护选项的可用性同时受机型与固件版本双重约束。实现机制JSON 驱动的失效保护面板如何工作整个 Failsafes 页面的底层逻辑可以用三块拼图概括JSON 定义界面APMFailsafes.VehicleConfig.json通过constants数值常量如上面各表格中的动作值、params界面标识符 → 真实参数名的映射例如_copterGcsEnable: FS_GCS_ENABLE、_planeThrFailsafe: THR_FAILSAFE、_roverFsAction: FS_ACTION、bindings例如_copterGcsEnabled: _copterGcsEnable _copterGcsEnable.rawValue ! 0用于驱动开关状态以及sections各配置节及其showWhen机型条件、控件与bitMask完成界面生成。JSON 中启用/关闭本质上是向飞控参数写回特定数值如onChecked: _copterGcsEnable.rawValue _copterGcsParamValueRtl与 ArduPilot 的参数语义一一对应。C 组件装配APMFailsafesComponent.cc 负责按MAV_TYPE_*机型分发页面与描述同时提供iconResource/qmlimages/SafetyComponentIcon.png并在 Setup 视图中注册为无需强制 setup 的组件requiresSetup() false、setupComplete() true。QML 摘要视图APMFailsafesComponentSummary.qml 为多旋翼/固定翼/地面车显示 Throttle failsafe、Rover 的FS_ACTION/FS_CRASH_CHECK、以及 Batt1/Batt2 的 low/critical 状态潜水艇则使用 SummarySub 版本。两者都通过controller.getParameterFact(-1, 参数名, false /* reportMissing */)读取参数参数不存在时安全返回空值。配置建议与注意事项先确认电池监控已启用电池失效保护的参数只有在BATT_MONITOR非 0 时才会出现在页面上若需要配置电池保护请先完成电池监控设置。机型差异是常态同一失效保护在不同机型的参数名、取值语义都可能不同——例如固定翼的 GCS 参数是FS_GCS_ENABL且配置的是触发方式而非动作地面车的FS_GCS_ENABLE取值 2 表示Auto 模式下忽略。切换机型后务必重新逐项核对。FS_OPTIONS 位掩码的复用同一个FS_OPTIONS参数在不同节中承载不同含义的位bit 1/2/4/8/16/32 分别对应 Auto/Guided/Landing/pilot control/gripper 等场景修改任意失效保护时注意不要覆盖其他节的位设置。固件版本限制如潜水艇摘要所示部分失效保护选项需要较新的固件如 3.5 及以上才会暴露配置前应确认 ArduPilot 固件版本。动作选择宜保守RTL、Land、Hold 是相对安全的默认选择Terminate地面车与Brake等动作会带来更强制的物理后果仅在明确理解其行为后使用。相关飞行安全RTL 高度、地理围栏、解锁检查可在同一 Setup 视图下的 Flight Safety 页面 中进一步配置。总结QGroundControl 的 Failsafes 页面为 ArduPilot 全机型提供了一套所见即所得的失效保护配置入口电池、地面站、油门/RC、EKF 四大核心失效保护覆盖了绝大多数安全场景航位推算、撞击检测、振动、抓取器联动与潜水艇专用项则补齐了特定机型的特殊需求。通过 APMFailsafes.VehicleConfig.json 这份 JSON你可以精确追溯到界面每一个开关、单选按钮背后实际写入的 ArduPilot 参数与数值结合机型、固件版本与FS_OPTIONS位掩码的约束即可为你的飞行器构建一套完整、可预期、可维护的自动安全机制。赞分享无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载相关推荐ArduPilot在QGroundControl中的高级设置指南从参数调优到安全配置ArduPilot在QGroundControl中的高级设置指南从参数调优到安全配置 QGroundControl 作为一款跨平台的无人机地面站软件为 Ar无人机智能硬件QGroundControl ArduPilot 日志设置页详解LOG_* 参数配置指南QGroundControl ArduPilot 日志设置页详解LOG_ 参数配置指南 本文以 QGroundControlQGC中 ArduPilot无人机智能硬件QGroundControl 调参Tuning完全指南PX4 与 ArduPilot 的 PID 调参、自动调参与源码实现解析QGroundControl 调参Tuning完全指南PX4 与 ArduPilot 的 PID 调参、自动调参与源码实现解析 QGroundContro无人机智能硬件上一篇分布式即时通讯系统实战揭秘ZooKeeper服务注册与发现的高效实现下一篇3步永久保存微信聊天记录开源神器WeChatMsg完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表