配置全解析:從參數(shù)設(shè)置到底層實(shí)現(xiàn))
無(wú)人機(jī)智能硬件【免費(fèi)下載鏈接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)項(xiàng)目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol點(diǎn)擊查看免費(fèi)下載Failsafes失效保護(hù)是 ArduPilot 機(jī)型在關(guān)鍵系統(tǒng)失效電池告警、地面站失聯(lián)、RC 信號(hào)丟失、導(dǎo)航估計(jì)異常等時(shí)自動(dòng)執(zhí)行的安全動(dòng)作配置頁(yè)。本文以 QGroundControlQGC中的ArduPilot Failsafes 設(shè)置頁(yè)面為核心逐項(xiàng)講解各失效保護(hù)的含義、對(duì)應(yīng)固件參數(shù)、默認(rèn)值并結(jié)合源碼剖析該頁(yè)面的生成機(jī)制與底層實(shí)現(xiàn)幫助你在首次飛行前正確配置并理解每一個(gè)開關(guān)背后對(duì)應(yīng)的 ArduPilot 參數(shù)。本文所述頁(yè)面僅適用于運(yùn)行 ArduPilot 固件的機(jī)型PX4 機(jī)型的安全配置使用獨(dú)立的 Safety 頁(yè)面。頁(yè)面入口與適用范圍在 QGC 的Vehicle Setup機(jī)架設(shè)置視圖中ArduPilot 專屬配置頁(yè)列表中包含了 Failsafes 頁(yè)具體位置可參考 Vehicle Configuration 總覽。頁(yè)面?zhèn)冗厵陧敳刻峁┧阉骺蜉斎雈ailsafe、voltage、mah、heartbeat、pwm、ekf等關(guān)鍵詞即可快速定位本頁(yè)內(nèi)的設(shè)置項(xiàng)——這些關(guān)鍵詞正是由頁(yè)面定義文件中的keywords字段提供的。該頁(yè)面“可用選項(xiàng)隨機(jī)型不同而變化”其根本原因在源碼中體現(xiàn)得很直接APMFailsafesComponent::description()和setupSource()根據(jù)_vehicle-vehicleType()MAV_TYPE_*返回不同的描述文本與界面見 APMFailsafesComponent.cc機(jī)型類型頁(yè)面描述Submarine潛水艇配置失效保護(hù)動(dòng)作與漏水檢測(cè)Ground Rover地面車配置電池、GCS、油門、EKF 失效保護(hù)Fixed Wing固定翼配置電池、GCS、油門失效保護(hù)多旋翼Copter/Hexa/Octo 等配置電池、GCS、RC、油門、EKF、Dead Reckoning 失效保護(hù)此外APMFailsafesComponent還聲明了兩個(gè)實(shí)用的特性見 APMFailsafesComponent.hallowSetupWhileArmed()與allowSetupWhileFlying()均返回true即解鎖或飛行途中也允許進(jìn)入本頁(yè)查看/調(diào)整設(shè)置QGC 通常要求安全相關(guān)設(shè)置在地面完成此頁(yè)是特例同時(shí)requiresSetup()為false表示本頁(yè)不參與“未完成設(shè)置禁止起飛”的紅標(biāo)判定。電池失效保護(hù)Battery Failsafe電池失效保護(hù)是保障飛行安全最基礎(chǔ)的一環(huán)。頁(yè)面支持按電池實(shí)例分別配置——如果飛控接入了第二塊電池存在BATT2_*參數(shù)配置項(xiàng)會(huì)以兩組形式重復(fù)出現(xiàn)??膳渲庙?xiàng)如下Low action低電量動(dòng)作電量降至低閾值時(shí)的動(dòng)作RTL / Land / SmartRTL 等組合Critical action嚴(yán)重低電量動(dòng)作電量降至臨界閾值時(shí)的動(dòng)作Low/Critical voltage thresholds低/臨界電壓閾值觸發(fā)對(duì)應(yīng)動(dòng)作的電壓值Low/Critical capacity thresholds低/臨界容量閾值觸發(fā)對(duì)應(yīng)動(dòng)作的剩余電量mAh值。對(duì)應(yīng)的固件參數(shù)頁(yè)面定義文件 APMFailsafes.VehicleConfig.json 中該區(qū)塊使用repeat機(jī)制按BATT前綴自動(dòng)生成兩組控件repeat: { paramPrefix: BATT, probePostfix: MONITOR, indexing: apm_battery, enableParam: MONITOR, disabledParamValue: _monitorParamValueDisabled }即以BATT_MONITOR電池監(jiān)控是否啟用為探測(cè)參數(shù)只要其值不為 0該電池的失效保護(hù)區(qū)塊就會(huì)顯示且第一組使用BATT_*參數(shù)、第二組使用BATT2_*參數(shù)。具體控件的參數(shù)映射為頁(yè)面控件參數(shù)電池 1參數(shù)電池 2含義Low actionBATT_FS_LOW_ACTBATT2_FS_LOW_ACT低電量觸發(fā)動(dòng)作Critical actionBATT_FS_CRT_ACTBATT2_FS_CRT_ACT臨界電量觸發(fā)動(dòng)作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默認(rèn)值參考倉(cāng)庫(kù)內(nèi)置參數(shù)集Copter.OfflineEditing.paramsCopter 出廠BATT_LOW_VOLT10.5V、BATT_CRT_VOLT0未啟用、BATT_LOW_MAH0、BATT_CRT_MAH0且BATT_FS_LOW_ACT0、BATT_FS_CRT_ACT0默認(rèn)不觸發(fā)動(dòng)作Sub 機(jī)型的電壓/容量閾值均為 0見 Sub.OfflineEditing.params。因此實(shí)際使用前必須依據(jù)電池電壓平臺(tái)如 3S/4S/6S LiPo與容量自行設(shè)定。注意頁(yè)面僅在飛控存在BATT_MONITOR且監(jiān)控已啟用值非 0時(shí)才展示該區(qū)塊如果電池模塊未配置好相關(guān)閾值也不會(huì)生效。地面站失效保護(hù)Ground Station Failsafe當(dāng)?shù)孛嬲九c飛控之間的遙測(cè)鏈路心跳 Heartbeat中斷時(shí)觸發(fā)。QGC 作為 GCS 會(huì)持續(xù)向飛控發(fā)送心跳飛控檢測(cè)到心跳丟失持續(xù)超過設(shè)定時(shí)間后執(zhí)行保護(hù)動(dòng)作。Copter / Rover 版本Enabled啟用開關(guān)對(duì)應(yīng)FS_GCS_ENABLETimeout超時(shí)心跳丟失后觸發(fā)保護(hù)動(dòng)作的等待時(shí)間參數(shù)為FS_GCS_TIMEOUTCopter/Rover 默認(rèn)5 秒見 Copter.OfflineEditing.params、Rover.OfflineEditing.paramsAction動(dòng)作Copter 提供 RTL、Land、SmartRTL or RTL、SmartRTL or Land、Auto DO_LAND_START or RTL、Brake or Land 六個(gè)選項(xiàng)分別對(duì)應(yīng)FS_GCS_ENABLE的取值 1、5、3、4、6、7常量定義見 JSON 中_copterGcsParamValue*Ignore failsafe if忽略條件通過FS_OPTIONS位掩碼設(shè)置——Copter 可勾選“In Auto mode位 2”“In pilot control位 16”即在這些場(chǎng)景下不觸發(fā)Rover 另有“In Hold mode位 1”選項(xiàng)。Plane 版本Plane 的 GCS 失效保護(hù)參數(shù)名是FS_GCS_ENABL注意只有 12 個(gè)字符這是 ArduPilot 參數(shù)名 16 字符限制下的截?cái)嗝?Plane.OfflineEditing.params其“Trigger method觸發(fā)方式”有三種觸發(fā)方式FS_GCS_ENABL取值Heartbeat only僅心跳1Heartbeat Remote RSSI心跳 遙測(cè) RSSI2Heartbeat AUTO心跳 處于 AUTO 模式3RSSI 觸發(fā)要求數(shù)傳模塊能上報(bào)接收信號(hào)強(qiáng)度AUTO 觸發(fā)表示僅在自動(dòng)駕駛模式下檢測(cè)心跳丟失。RC 與油門失效保護(hù)RC / Throttle FailsafeCopter 的 RC FailsafeCopter 的 RC 失效保護(hù)默認(rèn)Always enabled始終啟用頁(yè)面僅顯示“Ignore failsafe if”條件設(shè)置FS_OPTIONS位掩碼In Auto mode位 1、In Guided mode位 4、Landing位 8。Copter 的 Throttle FailsafeEnabled對(duì)應(yīng)FS_THR_ENABLECopter 默認(rèn)開啟默認(rèn)值 1PWM thresholdFS_THR_VALUE默認(rèn)975低于此 PWM 值視為信號(hào)丟失見 Copter 參數(shù)集Action與 GCS 失效保護(hù)相同的六種動(dòng)作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失效保護(hù)觸發(fā)器固定翼的油門失效保護(hù)參數(shù)為THR_FAILSAFE默認(rèn) 1啟用與THR_FS_VALUE默認(rèn)950PWM。頁(yè)面還額外提供固定翼特有的短/長(zhǎng)動(dòng)作時(shí)序設(shè)置FS_SHORT_ACTNShort failsafe action信號(hào)丟失后先執(zhí)行的短期動(dòng)作FS_LONG_ACTNLong failsafe action信號(hào)持續(xù)丟失達(dá)到長(zhǎng)超時(shí)后執(zhí)行的最終動(dòng)作FS_LONG_TIMEOUTLong failsafe timeout默認(rèn)5 秒VTOL 機(jī)型額外顯示Q_TRANS_FAIL_ACTVTOL 轉(zhuǎn)換失敗動(dòng)作與Q_TRANS_FAIL轉(zhuǎn)換失敗超時(shí)僅在存在Q_TRANS_FAIL參數(shù)時(shí)出現(xiàn)。Rover 的 Throttle FailsafeRover 使用FS_THR_ENABLE默認(rèn) 1FS_THR_VALUE默認(rèn)910FS_TIMEOUT默認(rèn)1.5 秒動(dòng)作由FS_ACTION單選取值含義取值動(dòng)作0Nothing無(wú)動(dòng)作1RTL2Hold保持默認(rèn)3SmartRTL or RTL4SmartRTL or Hold5Terminate終止/鎖定6Loiter or Hold同時(shí)可勾選“In Auto modeFS_ACTION置為忽略 Auto 的值 2 場(chǎng)景”與“In Hold modeFS_OPTIONS位 1”忽略條件。EKF 失效保護(hù)EKF Failsafe當(dāng)擴(kuò)展卡爾曼濾波器EKF對(duì)位置/速度的估計(jì)方差超過閾值、導(dǎo)航解不再可信時(shí)觸發(fā)。ActionFS_EKF_ACTIONCopterLand if position required需要位置時(shí)降落1默認(rèn)、AltHold if position required需要位置時(shí)切 AltHold2、Land from all modes任何模式都降落3RoverHold保持1默認(rèn)、Report only僅上報(bào)2ThresholdFS_EKF_THRESH默認(rèn)0.8Copter/Rover 一致Ignore failsafe ifCopter 可勾選 LandingFS_OPTIONS位 8。其他失效保護(hù)Other FailsafesDead Reckoning航位推算CopterGPS 丟失后飛控在短時(shí)間內(nèi)繼續(xù)依據(jù)慣性推算航跡若仍無(wú)法恢復(fù)則執(zhí)行動(dòng)作。參數(shù)為FS_DR_ENABLE與FS_DR_TIMEOUT默認(rèn)30 秒見 Copter 參數(shù)集。動(dòng)作選項(xiàng)Land1、RTL2、SmartRTL or RTL3、SmartRTL or Land4、Auto Land/Return or RTL6。該區(qū)塊僅在多旋翼且飛控存在FS_DR_ENABLE參數(shù)時(shí)顯示。Crash Check撞擊檢測(cè)CopterFS_CRASH_CHECK復(fù)選框默認(rèn)啟用默認(rèn)值 1RoverFS_CRASH_CHECK提供 Hold1與 Hold and Disarm2保持并解鎖默認(rèn)值 0 即關(guān)閉兩種動(dòng)作。Vibration振動(dòng)檢測(cè)CopterFS_VIBE_ENABLE復(fù)選框默認(rèn)啟用默認(rèn)值 1用于檢測(cè)過度振動(dòng)。Release gripper on any failsafeCopterFS_OPTIONS位 32任何失效保護(hù)觸發(fā)時(shí)釋放抓取器gripper。Submarine 專用項(xiàng)Sub 機(jī)型通過APMFailsafesComponentSummarySub.qml與APMFlightSafetyComponentSub.qml見 APMFailsafesComponentSummarySub.qml、APMFlightSafetyComponentSub.qml提供以下額外項(xiàng)Leak Detection漏水檢測(cè)FS_LEAK_ENABLE默認(rèn)啟用、LEAK1_PIN檢測(cè)引腳默認(rèn) -1 即未分配、LEAK1_LOGIC干燥時(shí)邏輯電平默認(rèn) 0Pilot Input遙控輸入FS_PILOT_INPUT默認(rèn) 2FS_PILOT_TIMEOUT默認(rèn)3 秒注意該參數(shù)在固件 3.5 以下版本中不存在頁(yè)面通過versionCompare(3, 5, 0)判斷是否顯示Internal Temperature內(nèi)部溫度FS_TEMP_ENABLE默認(rèn)關(guān)閉FS_TEMP_MAX默認(rèn)62℃Internal Pressure內(nèi)部壓力FS_PRESS_ENABLE默認(rèn)關(guān)閉FS_PRESS_MAX默認(rèn)105000 Pa。頁(yè)面背后的實(shí)現(xiàn)機(jī)制JSON 驅(qū)動(dòng)的 QML 代碼生成QGC 4.x 之后的 ArduPilot 配置頁(yè)普遍采用“聲明式 JSON 構(gòu)建期代碼生成”架構(gòu)Failsafes 頁(yè)就是典型代表頁(yè)面所有區(qū)塊、控件、參數(shù)綁定都聲明在 APMFailsafes.VehicleConfig.json 中其中constants定義固件參數(shù)取值常量如_copterGcsParamValueRtl: 1params聲明所需 MAVLink 參數(shù)FS_GCS_ENABLE、THR_FAILSAFE、FS_EKF_ACTION等bindings定義啟停聯(lián)動(dòng)表達(dá)式sections則按機(jī)型條件showWhen組織各分組構(gòu)建時(shí)由 tools/generators/config_qml/generate_pages.py 將每個(gè)Name.VehicleConfig.json轉(zhuǎn)換為同名*Component.qml生成器機(jī)制詳見 tools/generators/config_qml/README.mdAPMFailsafesComponent.cc 的vehicleConfigJson()返回該 JSON 的資源路徑setupSource()返回生成的 QML 頁(yè)面路徑組件在 APMAutoPilotPlugin.cc 中被注冊(cè)進(jìn) ArduPilot 插件的組件列表_failsafesComponent new APMFailsafesComponent(_vehicle, this)從而出現(xiàn)在 Vehicle Setup 側(cè)邊欄。這樣設(shè)計(jì)的收益是修改頁(yè)面布局與參數(shù)映射只需編輯 JSON無(wú)需改 QML且參數(shù)名、選項(xiàng)取值與固件側(cè)保持單一事實(shí)來源。配置摘要Summary顯示QGC 的 Summary 頁(yè)會(huì)匯總本頁(yè)關(guān)鍵狀態(tài)APMFailsafesComponentSummary.qml 顯示 Throttle failsafe多旋翼讀FS_THR_ENABLE、固定翼讀THR_FAILSAFE、Rover 的FS_ACTION與FS_CRASH_CHECK以及 Battery 1/2 的低電量與臨界電量動(dòng)作Sub 機(jī)型則通過APMFailsafesComponentSummarySub.qml匯總 GCS、Leak、Battery、EKF、Pilot Input、內(nèi)部溫度/壓力失效保護(hù)狀態(tài)。Summary 中的紅字狀態(tài)可幫助你在起飛前快速核對(duì)失效保護(hù)是否已全部配置到位。配置建議與注意事項(xiàng)先配置電池監(jiān)控再配置電池失效保護(hù)確認(rèn)BATT_MONITOR已啟用且電壓/容量閾值按電池規(guī)格設(shè)置否則電池區(qū)塊與閾值均不生效GCS 超時(shí)不宜過短FS_GCS_TIMEOUT默認(rèn) 5 秒若數(shù)傳鏈路不穩(wěn)定如飛行中頻繁丟包可適當(dāng)調(diào)大避免誤觸發(fā) RTL/Land區(qū)分 Copter 的 RC 與 Throttle 失效保護(hù)Copter 的 RC 失效保護(hù)始終啟用頁(yè)面上的“Ignore failsafe if”與 Throttle 失效保護(hù)的忽略條件可獨(dú)立配置注意FS_OPTIONS各 bit 位含義不同Auto1、Guided4、Landing8、Pilot control16、Hold1、Gripper32固定翼參數(shù)名差異Plane 的 GCS 失效保護(hù)參數(shù)是FS_GCS_ENABL截?cái)嗝阉鲄?shù)或?qū)φ杖罩緯r(shí)不要寫成FS_GCS_ENABLEEKF 閾值默認(rèn) 0.8若機(jī)架振動(dòng)大、GPS 環(huán)境差導(dǎo)致 EKF 頻繁告警可結(jié)合振動(dòng)失效保護(hù)與傳感器校準(zhǔn)排查根本原因而非一味放寬閾值Sub 機(jī)型的漏水檢測(cè)默認(rèn)啟用但引腳未分配LEAK1_PIN-1接入漏水傳感器前務(wù)必先按實(shí)際接線配置引腳與邏輯電平。參考資源本文檔原文Failsafes (ArduPilot)頁(yè)面組件APMFailsafesComponent.h / APMFailsafesComponent.cc頁(yè)面定義參數(shù)與控件映射APMFailsafes.VehicleConfig.json參數(shù)默認(rèn)值Copter / Plane / Rover / Sub 的 OfflineEditing.params頁(yè)面生成器generate_pages.py 及其 README組件注冊(cè)APMAutoPilotPlugin.cc贊分享無(wú)人機(jī)智能硬件【免費(fèi)下載鏈接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)項(xiàng)目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol點(diǎn)擊查看免費(fèi)下載相關(guān)推薦QGroundControl ArduPilot 失效保護(hù)Failsafes配置完全指南QGroundControl ArduPilot 失效保護(hù)Failsafes配置完全指南 本篇技術(shù)指南以 QGroundControl 用戶手冊(cè)中 Ardu無(wú)人機(jī)智能硬件QGroundControl 中 ArduPilot 失效保護(hù)Failsafes設(shè)置頁(yè)面完全指南從參數(shù)到源碼實(shí)現(xiàn)QGroundControl 中 ArduPilot 失效保護(hù)Failsafes設(shè)置頁(yè)面完全指南從參數(shù)到源碼實(shí)現(xiàn) QGroundControlQGC為無(wú)人機(jī)智能硬件QGroundControl 中 ArduPilot 失敗保護(hù)Failsafes配置完全指南參數(shù)、機(jī)種差異與實(shí)現(xiàn)原理QGroundControl 中 ArduPilot 失敗保護(hù)Failsafes配置完全指南參數(shù)、機(jī)種差異與實(shí)現(xiàn)原理 本文圍繞 QGroundContro無(wú)人機(jī)智能硬件上一篇深度學(xué)習(xí)框架中的編譯與解釋混合式編程Hybridize的原理、加速與序列化實(shí)戰(zhàn)下一篇使用 Syft 生成容器鏡像與文件系統(tǒng)的 SBOM從 CLI 到 Go 庫(kù)的完整實(shí)戰(zhàn)指南創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考