設(shè)(Pattern Presets)與 ArduPilot 調(diào)參/機架/流速率支持)
無人機智能硬件【免費下載鏈接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)項目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol點擊查看免費下載本篇技術(shù)指南圍繞 QGroundControl v4.0 的補充發(fā)布說明展開聚焦兩大核心主題模式預(yù)設(shè)Pattern Presets這一新特性以及針對 ArduPilotArduCopter/ArduRover的PID 調(diào)參、基礎(chǔ)調(diào)優(yōu)選項、機架設(shè)置 UI、ChibiOS 固件/引導程序板卡連接支持、可配置 Mavlink 流速率等五項功能增強。閱讀本文后你將掌握模式預(yù)設(shè)的創(chuàng)建、保存、加載與刪除的完整操作流程及其底層實現(xiàn)原理并了解 v4.0 中 ArduPilot 相關(guān)新功能的實際應(yīng)用場景與對應(yīng)源碼支撐。一、文檔背景與定位本文內(nèi)容整理自 QGroundControl v4.0 發(fā)布說明的補充章節(jié)原文檔位于 docs/ko/qgc-user-guide/releases/stable_v4.0_additional.md。這類additional附加文檔用于記錄在正式版發(fā)布時尚未并入主文檔的新特性說明其中不少內(nèi)容會在后續(xù)版本中遷移至主文檔因此讀者在查看當前倉庫文檔結(jié)構(gòu)時可以在 docs 目錄下的多語言版本中找到同名文件如docs/zh/qgc-user-guide/releases/stable_v4.0_additional.md、docs/tr/qgc-user-guide/releases/stable_v4.0_additional.md。值得注意的是該文檔僅為 v4.0 補充說明的一部分其他 4.0 新增功能如多飛行器列表、遙控器無線電設(shè)置等被記錄在獨立文檔中本文聚焦于文檔明確列出的模式預(yù)設(shè)與ArduPilot 相關(guān)功能兩項主題。二、模式預(yù)設(shè)Pattern Presets—— 將常用配置保存為命名預(yù)設(shè)2.1 功能概述與適用范圍模式預(yù)設(shè)是 QGroundControl v4.0 引入的規(guī)劃視圖Plan View新特性可以將模式項Pattern Item的一組常用設(shè)置保存為具有名稱的預(yù)設(shè)Preset在下次創(chuàng)建新的模式時直接復(fù)用免去重復(fù)配置。從源碼結(jié)構(gòu)看該功能定義在 src/MissionManager/ComplexMissionItem.h 中ComplexMissionItem復(fù)雜任務(wù)項基類提供了presetsSupported是否支持預(yù)設(shè)、presetNames預(yù)設(shè)名稱列表、loadPreset/savePreset/deletePreset等接口以及presetNamesChanged信號// src/MissionManager/ComplexMissionItem.h關(guān)鍵接口節(jié)選 Q_PROPERTY(bool presetsSupported READ presetsSupported CONSTANT) Q_PROPERTY(QStringList presetNames READ presetNames NOTIFY presetNamesChanged) /// Loads the specified preset into the complex item. virtual void loadPreset(const QString name); /// Saves the current state of the complex item as the named preset. /// param name User visible name for preset. Will replace existing preset if already exists. virtual void savePreset(const QString name); /// Returns the name of the settings group for presets. /// Empty string signals no support for presets. virtual QString presetsSettingsGroup(void) { return QString(); }基類通過presetsSettingsGroup()是否返回非空字符串來決定是否支持預(yù)設(shè)presetsSupported默認返回空字符串即表示不支持。在當前版本中僅有測繪Survey與走廊掃描CorridorScan兩類模式實現(xiàn)了該接口src/MissionManager/SurveyComplexItem.hsettingsGroup SurveyjsonComplexItemTypeValue surveysrc/MissionManager/CorridorScanComplexItem.hsettingsGroup CorridorScanjsonComplexItemTypeValue CorridorScan。這也是主文檔中目前僅在測繪Survey模式中支持其他模式的支持正在開發(fā)中這一提示的源碼依據(jù)——文檔編寫時 CorridorScan 的預(yù)設(shè)實現(xiàn)與 Survey 一同落地規(guī)劃視圖中模式項頂部的預(yù)設(shè)管理入口由 src/PlanView/TransectStyleComplexItemTabBar.qml 提供Tab 欄中的PatternPresets.png圖標標簽頁即預(yù)設(shè)管理頁。2.2 預(yù)設(shè)管理界面操作繼承自原文檔在模式項編輯器的頂部新增了一個預(yù)設(shè)管理選擇控件提供以下操作自定義Custom手動設(shè)置全部參數(shù)選擇此項表示不使用任何預(yù)設(shè)所有參數(shù)手動逐項指定保存預(yù)設(shè)Save Preset將當前模式的全部設(shè)置以命名預(yù)設(shè)的形式保存刪除預(yù)設(shè)Delete Preset刪除當前選中的預(yù)設(shè)預(yù)設(shè)Presets列表列出可用于該模式的所有已保存預(yù)設(shè)供直接選用。2.3 預(yù)設(shè)的創(chuàng)建與更新點擊將設(shè)置保存為預(yù)設(shè)Save Settings as Preset后界面會提示輸入預(yù)設(shè)名稱保存后該名稱出現(xiàn)在預(yù)設(shè)列表中。更新已有預(yù)設(shè)在預(yù)設(shè)列表中選中某個已有預(yù)設(shè)使其處于當前選中狀態(tài)再點擊將設(shè)置保存為預(yù)設(shè)即可用當前參數(shù)覆蓋同名預(yù)設(shè)同名覆蓋邏輯在源碼savePreset的注釋中亦有說明Will replace existing preset if already exists.。關(guān)于相機的可選行為保存預(yù)設(shè)時可以選擇是否將**當前選定的相機Camera**一并存入預(yù)設(shè)若選擇不保存相機加載預(yù)設(shè)時使用當前飛行器配置的相機且在使用預(yù)設(shè)期間可以自由切換相機若選擇保存相機適用于同一預(yù)設(shè)會在不同時間配合不同相機使用之外的絕大多數(shù)場景——即你通常用同一架飛行器搭配同一套預(yù)設(shè)時建議勾選保存相機以保證預(yù)設(shè)完整復(fù)現(xiàn)。2.4 查看預(yù)設(shè)的精確設(shè)置要查看某個預(yù)設(shè)的具體參數(shù)值可以切換回自定義Custom顯示所有設(shè)置模式此時編輯器會展開該預(yù)設(shè)對應(yīng)的全部設(shè)置項查看完畢后再切換回命名預(yù)設(shè)即可繼續(xù)使用。2.5 預(yù)設(shè)與計劃文件Plan 文件的關(guān)系當前選中的預(yù)設(shè)名稱會隨計劃Plan文件一并保存因此當計劃文件被重新加載時會自動重新選中該預(yù)設(shè)。??版本差異注意預(yù)設(shè)是與 QGroundControl版本相關(guān)的不同版本對設(shè)置項的序列化方式可能不同。如果你與他人共享包含預(yù)設(shè)的計劃文件而對方擁有同名但設(shè)置不同的預(yù)設(shè)可能會在加載時產(chǎn)生錯誤行為incorrect behavior——例如對方設(shè)備上相同名稱的預(yù)設(shè)參數(shù)不同導致模式內(nèi)容與預(yù)期不符。2.6 源碼級原理預(yù)設(shè)如何存儲與加載在 src/MissionManager/ComplexMissionItem.cc 中可以看到預(yù)設(shè)的持久化實現(xiàn)存儲格式預(yù)設(shè)以 QSettings 的分組Group 鍵Key形式保存在系統(tǒng)配置中// src/MissionManager/ComplexMissionItem.cc QStringList ComplexMissionItem::presetNames(void) { QStringList names; QSettings settings; settings.beginGroup(presetsSettingsGroup()); // 例如 Survey 或 CorridorScan settings.beginGroup(_presetSettingsKey); // _presets return settings.childKeys(); // 返回所有預(yù)設(shè)名稱 }_presetSettingsKey定義為_presets見 src/MissionManager/ComplexMissionItem.h也就是說預(yù)設(shè)存儲在形如Survey/_presets/預(yù)設(shè)名的配置路徑下。保存_savePresetJson將預(yù)設(shè)的 QJsonObject由_saveCommon/TransectStyleComplexItem::_save序列化而來包含版本號、類型、網(wǎng)格角度、交替航線、多邊形形狀等字段通過QCborMap::fromJsonObject(...).toCborValue().toVariant()轉(zhuǎn)換為 CBOR 變體后寫入 QSettings代碼中還有一段被#if 0注釋掉的邏輯用于將預(yù)設(shè)導出為 JSON 文件以便打包為內(nèi)置預(yù)設(shè)built-in preset不可刪除說明該能力已預(yù)留但默認未啟用。加載_loadPresetJson從 QSettings 讀回數(shù)據(jù)并還原為 QJsonObject然后Survey 模式調(diào)用_loadV4V5(presetObject, 0, errorString, 5, true /* forPresets */)見 src/MissionManager/SurveyComplexItem.cc即按 v4/v5 格式解析并重建測線CorridorScan 模式調(diào)用_loadWorker(...)見 src/MissionManager/CorridorScanComplexItem.cc加載完成后調(diào)用_rebuildTransects()重新生成航線。刪除保護deletePreset會先檢查預(yù)設(shè)名是否屬于QGCCorePlugin::instance()-options()-surveyBuiltInPresetNames()中的內(nèi)置預(yù)設(shè)——內(nèi)置預(yù)設(shè)不可刪除刪除時會彈出提示%1 is a built-in preset which cannot be deleted.。界面聯(lián)動預(yù)設(shè) Tab 頁與編輯器之間通過presetNamesChanged信號聯(lián)動每次保存/刪除預(yù)設(shè)后都會發(fā)出該信號刷新 QML 界面中的預(yù)設(shè)下拉列表。2.7 使用建議小結(jié)場景建議固定機位、固定相機的常規(guī)測繪作業(yè)保存預(yù)設(shè)時勾選保存相機一鍵復(fù)現(xiàn)整套配置同一預(yù)設(shè)要配合多種相機使用不保存相機加載時使用當前相機與團隊共享計劃文件注意接收方同名預(yù)設(shè)可能不同必要時提示對方刪除/重命名沖突預(yù)設(shè)想確認預(yù)設(shè)內(nèi)部參數(shù)切回自定義顯示所有設(shè)置查看后再切回命名預(yù)設(shè)三、ArduPilotPID 調(diào)參支持CopterQGroundControl v4.0 為 ArduPilot 的 ArduCopter 機型新增了PID 調(diào)參PID Tuning支持。在飛控設(shè)置Vehicle Setup的 Tuning 頁面中可以針對 Roll滾轉(zhuǎn)、Pitch俯仰、Yaw偏航三個軸分別調(diào)整角度環(huán)Angle Loop與速率環(huán)Rate Loop的 PID 參數(shù)。界面核心元素對應(yīng)倉庫資源 docs/assets/daily_build_changes/arducopter_pid_tuning.jpgTuning Axis調(diào)優(yōu)軸Roll / Pitch / Yaw 軸切換Tuning Values調(diào)優(yōu)參數(shù)角度環(huán)與速率環(huán)的 P / I / D 值例如ATC_ANG_RLL_P角度環(huán)滾轉(zhuǎn) P、ATC_RAT_RLL_P速率環(huán)滾轉(zhuǎn) P、ATC_RAT_RLL_I速率環(huán)滾轉(zhuǎn) I、ATC_RAT_RLL_D速率環(huán)滾轉(zhuǎn) D并支持參數(shù)增減按鈕與百分比調(diào)整下拉框響應(yīng)曲線圖實時顯示 Roll / Roll Rate 的 Response響應(yīng)與 Command指令曲線便于對比指令與實際姿態(tài)響應(yīng)判斷振蕩、超調(diào)等調(diào)參問題參數(shù)剪貼板Clipboard提供當前軸參數(shù)的存儲 / 恢復(fù)按鈕方便在調(diào)參前后備份與還原圖表控制Clear清空與 Start開始按鈕控制曲線記錄過程頂部Advanced高級復(fù)選框用于展開/收起高級參數(shù)項。圖中左側(cè)為飛控設(shè)置導航欄當前選中 Tuning 選項右側(cè)中部為滾轉(zhuǎn)軸的響應(yīng)曲線對比區(qū)域。截圖說明該功能在 4.0 中已具備完整的調(diào)參工作臺形態(tài)可在實際飛行測試中邊觀察響應(yīng)曲線邊調(diào)整參數(shù)。四、ArduPilot額外的基礎(chǔ)調(diào)優(yōu)選項Copter除 PID 調(diào)參外v4.0 還為 ArduCopter 提供了額外的基礎(chǔ)調(diào)優(yōu)Basic Tuning選項位于 Tuning 頁面的基礎(chǔ)區(qū)域?qū)?yīng)圖片 docs/assets/daily_build_changes/arducopter_basic_tuning.jpgSpin While Armed上鎖旋轉(zhuǎn)調(diào)節(jié)電機在 armed上鎖/解鎖待飛狀態(tài)下的轉(zhuǎn)動幅度用于指示當前處于 armed 狀態(tài)便于操作者確認上鎖成功Minimum Thrust最小推力調(diào)節(jié)飛行器開始移動所需的最小推力值用于消除電機推力響應(yīng)死區(qū)、提升懸停與低速操控手感。兩個選項均以帶說明文字的滑塊控件呈現(xiàn)拖動滑塊即可修改對應(yīng) ArduPilot 參數(shù)無需手動打開全參數(shù)表查找。五、ArduPilot機架設(shè)置 UICopter / Roverv4.0 為 ArduCopter 與 ArduRover 提供了新的Frame機架設(shè)置界面對應(yīng)圖片 docs/assets/daily_build_changes/arducopter_setup_frame.jpg。界面以可視化卡片方式列出可選機架類型支持直接點選多旋翼類Quad四軸含 X / 型等子類型、Hexa六軸、Octa八軸、OctaQuad八軸四旋翼復(fù)合布局、Y6、Tri三軸其他類SingleCopter單旋翼、CoaxCopter共軸雙旋翼等早期/特殊機架以帶問號的占位圖標呈現(xiàn)選中后可在下拉框中進一步選擇對應(yīng)機架子類型頁面上方會顯示當前已設(shè)置的機架類別說明如圖中已設(shè)為 Quad / X 型機架。這一 UI 降低了機架選擇的門檻用戶無需記憶FRAME_CLASS/FRAME_TYPE等參數(shù)的數(shù)值編碼直接在圖形化界面中匹配實際機體即可完成配置避免因選錯機架類型導致解鎖失敗或異常飛行特性。六、ArduPilotChibiOS 固件刷寫與引導程序板卡連接支持v4.0 對 ArduPilot 的ChibiOS 固件支持做了兩項改進ChibiOS 固件刷寫Flashing支持改進QGroundControl 可通過 USB 直接為基于 ChibiOS 的 ArduPilot 飛控板刷寫固件ChibiOS 是 ArduPilot 自 3.x 中期以來主推的實時操作系統(tǒng)基礎(chǔ)替代早期版本使用的 PX4/NuttX 內(nèi)核改進后對不同板卡的固件文件識別與燒寫流程更穩(wěn)定ChibiOS 引導程序Bootloader板卡連接支持改進引導程序模式下板卡的 USB 枚舉與連接識別更可靠便于用戶在有刷寫需求時將飛控置于 bootloader 模式進行固件升級或恢復(fù)。這兩項改進共同提升了基于 ChibiOS 的 ArduPilot 板卡包括常見 Pixhawk 系列及眾多衍生板在 Windows / Linux / macOS 上的固件管理體驗。需要說明的是本倉庫為 QGroundControl 應(yīng)用代碼倉庫并不包含 ArduPilot 固件源碼具體板卡支持列表以 ArduPilot 官方固件為準。七、ArduPilot可配置的 Mavlink 流速率Stream Ratesv4.0 新增了對ArduPilot 可配置 Mavlink 流速率Stream Rates的支持入口位于設(shè)置 → Mavlink 頁面Settings → Mavlink對應(yīng)圖片 docs/assets/daily_build_changes/arducopter_stream_rates.jpg。7.1 界面與可配置項該頁面標題為Telemetry Stream Rates (ArduPilot Only)僅在連接 ArduPilot 飛行器時可用核心元素包括All Streams Controlled By Vehicle Settings所有流由飛行器設(shè)置控制復(fù)選框勾選后所有流的速率交由飛行器端 SR* 參數(shù)控制地面站不再覆蓋以下 Mavlink 遙測流各自擁有獨立的下拉選擇框可分別設(shè)置刷新率示例數(shù)值取自截圖數(shù)據(jù)流說明示例刷新率Raw Sensors原始傳感器IMU/氣壓計等原始傳感器數(shù)據(jù)2 HzExtended Status擴展狀態(tài)擴展系統(tǒng)狀態(tài)信息2 HzRC Channel遙控通道遙控接收機通道值2 HzPosition位置位置/速度/航向等導航數(shù)據(jù)3 HzExtra 1擴展遙測組 1如姿態(tài)、空速等10 HzExtra 2擴展遙測組 210 HzExtra 3擴展遙測組 33 Hz7.2 源碼層面的實現(xiàn)依據(jù)在 src/Vehicle/Vehicle.cc 中Vehicle類通過std::make_uniqueMAVLinkStreamConfig(std::bind(Vehicle::_setMessageInterval, this, ...))構(gòu)造流配置管理器也就是說每個流的刷新率最終會轉(zhuǎn)換為MAV_CMD_SET_MESSAGE_INTERVAL消息間隔指令_setMessageInterval回調(diào)以消息間隔單位微秒的形式下發(fā)到飛控相關(guān)配置類型定義可參考 src/MAVLink/MAVLinkStreamConfig.h。界面代碼位于 src/AppSettings/MavlinkLinkStatus.qmlMavlink 設(shè)置頁。7.3 使用建議默認情況下建議保持各流在合理區(qū)間如遙測鏈路 2~10 Hz避免過高的總速率擠占帶寬、影響鏈路穩(wěn)定性若在野外使用低帶寬鏈路如 433 MHz 數(shù)傳可適當降低 Raw Sensors / RC Channel 等非關(guān)鍵流的速率優(yōu)先保證 Position 與 Extra 1 的刷新率若飛行器端已通過 SR* 參數(shù)如SR1_*完整規(guī)劃了流速率可勾選All Streams Controlled By Vehicle Settings讓地面站完全遵循飛行器配置。八、總結(jié)QGroundControl v4.0 的這組補充特性體現(xiàn)了兩個方向的產(chǎn)品演進效率提升模式預(yù)設(shè)Pattern Presets將測繪等復(fù)雜模式項的整套配置沉淀為可復(fù)用資產(chǎn)配合計劃文件持久化顯著減少重復(fù)設(shè)置成本其實現(xiàn)依托ComplexMissionItem的預(yù)設(shè)接口與 QSettings 存儲src/MissionManager/ComplexMissionItem.cc目前已在 Survey 與 CorridorScan 兩類模式中落地。ArduPilot 生態(tài)深化從 PID 調(diào)參工作臺、基礎(chǔ)調(diào)優(yōu)滑塊、圖形化機架選擇到 ChibiOS 固件/引導程序連接改進再到可配置 Mavlink 流速率QGroundControl 正在把原本需要參數(shù)表 命令行/外部工具完成的工作逐步收攏到地面站內(nèi)部完成。如需進一步閱讀可參考模式預(yù)設(shè)的完整用戶文檔docs/ko/qgc-user-guide/plan_view/pattern_presets.md英文/中文等語言版本位于docs/zh/qgc-user-guide/plan_view/pattern_presets.md等路徑預(yù)設(shè)實現(xiàn)的基類與派生類源碼src/MissionManager/ComplexMissionItem.h、src/MissionManager/SurveyComplexItem.cc、src/MissionManager/CorridorScanComplexItem.cc預(yù)設(shè)管理界面src/PlanView/TransectStyleComplexItemTabBar.qml、src/PlanView/TransectStyleComplexItemEditor.qmlMavlink 流速率實現(xiàn)src/MAVLink/MAVLinkStreamConfig.h、src/Vehicle/Vehicle.cc。贊分享無人機智能硬件【免費下載鏈接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)項目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol點擊查看免費下載相關(guān)推薦Plan View 圖案預(yù)設(shè)Pattern PresetsQGroundControl 航測任務(wù)參數(shù)模板的保存、加載與管理Plan View 圖案預(yù)設(shè)Pattern PresetsQGroundControl 航測任務(wù)參數(shù)模板的保存、加載與管理 QGroundControl無人機智能硬件QGroundControl 計劃視圖模式預(yù)設(shè)Pattern Presets指南Survey 常用配置的命名保存、復(fù)用與管理QGroundControl 計劃視圖模式預(yù)設(shè)Pattern Presets指南Survey 常用配置的命名保存、復(fù)用與管理 QGroundControl無人機智能硬件QGroundControl ArduPilot 日志設(shè)置頁詳解LOG_* 參數(shù)配置指南QGroundControl ArduPilot 日志設(shè)置頁詳解LOG_ 參數(shù)配置指南 本文以 QGroundControlQGC中 ArduPilot無人機智能硬件上一篇Swift Key Path 字面量與函數(shù)類型的子類型轉(zhuǎn)換SE-0416 提案深度解析下一篇Swagger Codegen C 客戶端模型文檔解析以 SwaggerClientNetCoreProject 的 Cat 模型為例創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考