ARTICLE DETAIL

资讯详情

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

QGroundControl V5.1 之后的新特性速览:GeoMap 3D 地图引擎、ROI 高度设置与自定义设置页

QGroundControl V5.1 之后的新特性速览:GeoMap 3D 地图引擎、ROI 高度设置与自定义设置页 无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载本文基于 QGroundControl 用户指南中的 Whats New 发布说明docs/ko/qgc-user-guide/getting_started/whats_new.md系统梳理自上一稳定版 V5.1 以来面向用户的三项核心变化实验性的 GeoMap 3D 地图引擎、Fly View 中可设置高度的 ROI感兴趣区域点击操作以及 Custom Builds 的 JSON 驱动自定义设置页。读完后你将掌握这三项新特性的启用方式、操作细节与底层实现原理能够在自己的 QGroundControl 构建中直接使用或扩展它们。总览这份发布说明覆盖了什么QGroundControl 的 Whats New 页面用于汇总自上一稳定版V5.1以来、面向普通用户可见的功能变化属于增量发布说明而非完整用户手册。V5.1 之后的这份说明聚焦于三件事GeoMap 引擎技术预览——一个全新的实验性地图引擎把 2D/3D 地图渲染统一起来Fly View 的 ROI at location 高度设置——地图点击操作的一次小但实用的增强Custom Builds 的自定义设置页——针对二次开发者的 JSON 驱动设置页扩展能力。三个主题分别对应不同的用户群体前两项面向最终使用者第三项面向基于 QGC 做定制构建的开发者。下文按此顺序逐一展开并在每个主题中补充对应源码与配置文件的实现细节。GeoMap 引擎技术预览让地图站起来的 3D 新地图引擎它是什么GeoMap 引擎是 QGroundControl 的一套新地图引擎核心能力是渲染一张无缝的 2D/3D 地图你选择的地图影像卫星图/街道图被披挂在真实地形高程之上并配备 Google Earth 风格的相机操控。启用后它取代 Fly View 中的地图把以下对象以真 3D形式呈现无人机车辆图标规划的任务含航点标记、连接路径、以及显示每个航点相对地形高度的垂线已飞行的航迹起飞地点地面站位置。文档明确标注这是实验性技术预览Tech Preview仍在积极开发中存在功能缺失和粗糙之处官方甚至提示现在报告问题还为时过早。它的长期目标是最终取代 QGroundControl 中所有地图使用场景包括 Plan 视图提供全应用一致的 2D/3D 地图体验。注意依据当前文档地图点击操作goto、orbit、ROI 等目前仅在 2D 模式下可用3D 模式暂时只可查看而解锁、起飞、引导操作、仪表等其他 Fly View 控件在两种模式下均正常工作。如何启用与重启注意事项GeoMap 引擎默认禁用。启用步骤打开Application Settings应用设置 Fly View打开Use GeoMap engine (preview)开关重启 QGroundControl。重启后Fly View 的地图便由 GeoMap 引擎渲染。从源码可以印证必须重启并非偶然设计。在 src/FlyView/FlyView.qml 中地图引擎的选择通过一个Loader完成加载哪个引擎取决于QGroundControl.settingsManager.flyViewSettings.useGeoMapEngine.rawValue且该选择在启动时快照qgcRebootRequired。源码注释issue #14901明确指出如果运行中热切换引擎会遗留跨地图的过期状态引导控制器注册、ROI 坐标等因此刻意要求重启后生效。相机视角控制GeoMap 引擎的相机手势遵循 Google Earth 语义手势开始时光标下的地面点在整个手势过程中保持钉在光标下方保证操控的直观性。鼠标操作操作手势说明平移Pan左键拖拽抓住的地形点跟随光标移动环绕/旋转Orbit右键拖拽或中键拖拽围绕按下的地面点以枢轴环标记旋转左右改变航向上下在俯视与近水平之间改变倾角缩放Zoom滚轮或触控板滚动朝/远离光标下的点缩放触控操作操作手势平移单指拖拽缩放双指捏合以捏合点为中心旋转双指扭转键盘辅助适用于单键鼠标和触控板Shift 左键拖拽环绕等价于右键/中键拖拽Ctrl 左键拖拽第一人称视角相机原地不动、视野旋转如同转头看向目标方向macOS 上Ctrl与Cmd均可。2D/3D 模式切换右上角3D/2D按钮用于切换模式切换时相机会做倾角动画地形随之升起/压平2D 模式如同传统俯视地图倾角锁定罗盘按钮随当前航向旋转点击它可动画回到正北朝上。影像与地形数据来源GeoMap 引擎的地表影像直接复用你在Application Settings Maps中选择的地图影像而地形高程来自 Mapzen/Tilezen Terrain Tiles 数据集该数据集融合了多国/多机构的高程数据源包括按文档列出的数据归属ArcticDEM 地形数据源自 DigitalGlobe 影像由美国国家科学基金会资助澳大利亚地形数据 © Geoscience Australia奥地利地形数据 © offene Daten ÖsterreichsDGM加拿大地形数据按加拿大开放政府许可提供欧洲地形数据基于 Copernicus 计划与欧盟资金支持EU-DEM 图层全球 ETOPO1 地形数据美国 NOAA墨西哥地形数据INEGI2016 年大陆地貌新西兰地形数据2011 Crown copyrightLand Information New Zealand挪威地形数据 © Kartverket英国地形数据 © Environment Agency美国 3DEP原 NED及全球 GMTED2010、SRTM 地形数据美国地质调查局。详细说明与启用指引参见 docs/ko/qgc-user-guide/fly_view/geoview.md。源码层面引擎切换机制在代码层面GeoMap 引擎与原有 QtLocation 引擎是互斥共存的关系Fly View 中只同时实例化其中一个。相关实现集中在 src/FlyView/FlyView.qml 的mapEngineLoader中——它注册了qtLocationEngineComponent与geoMapEngineComponent两个组件并依据设置快照选择。地图点击操作的引导弹窗则通过 src/FlyView/FlyViewMapClickDropPanel.qml 实现该弹窗被 QtLocation FlyViewMap 与 GeoMap 引擎适配器src/FlyView/FlyViewGeoMapAdapter.qml共享。Fly View 新功能点击地图设置 ROI 高度功能说明Fly View 的地图点击菜单中有一项ROI at location在位置处设置感兴趣区域用于让相机/传感器对准地图上点击的某个点。V5.1 之后的改进是该操作现在支持设置 ROI 的高度。点击地图并选择 ROI 后会先弹出一个高度滑块滑块单位为米相对起飞点默认值为0即默认对准地面通过滑块可以给 ROI 一个高于地面的高度让云台/相机对准高处目标如楼顶、山坡上的物体而不是只能对准地面点。操作流程在 Fly View 地图上点击目标位置2D 模式下在弹出的地图点击操作面板中选择ROI at location对应按钮的 objectName 为mapClickROI见 src/FlyView/FlyViewMapClickDropPanel.qml在确认前通过高度滑块设置 ROI 高度米相对起飞点默认 0 地面确认后地面站向飞控下发 ROI 指令云台/相机转向该点。MAVLink 命令对应与源码实现ROI 功能在 MAVLink 协议层对应一组MAV_CMD_DO_SET_ROI系列命令QGroundControl 的命令元数据定义在 src/MissionManager/MavCmdInfoCommon.json 中包括MAV_CMD_DO_SET_ROI_LOCATIONid 195按坐标设置相机感兴趣区域MAV_CMD_DO_SET_ROI_WPNEXT_OFFSETid 196对准下一航点并带偏移MAV_CMD_DO_SET_ROI_NONEid 197取消 ROIMAV_CMD_DO_SET_ROIid 201通用 ROI 命令其 param1 为模式枚举None / Next waypoint / Mission item / Location / ROI item。在车辆端引导模式 ROI 的入口是 src/Vehicle/Vehicle.cc 中的Vehicle::guidedModeROI(const QGeoCoordinate centerCoord, double relativeAltitudeMeters)坐标无效时直接返回失败若飞控不支持 ROI 模式roiMode()为假会弹出提示ROI mode not supported by Vehicle.并拒绝执行高度参数若非有限数qIsFinite检查失败则回退为 0最终将相对高度传给固件插件_firmwarePlugin-guidedModeROI执行并在成功时发出roiCoordChanged信号供地图 UI 同步。取消 ROI 则走Vehicle::stopGuidedModeROI()通过MAV_CMD_DO_SET_ROI_NONE命令实现。由此可见新增的高度滑块本质上就是为guidedModeROI的relativeAltitudeMeters参数提供用户输入入口。Custom BuildsJSON 驱动的自定义设置页面背景设置页的 JSON 生成机制QGroundControl 的应用设置页并非手写 QML而是由 JSON 定义在构建期自动生成。其运行时链路为Fact 元数据定义在src/Settings/*.SettingsGroup.json设置 Fact 访问器在src/Settings/*Settings.h/.cc中设置 UI 页面定义在src/AppSettings/pages/*.SettingsUI.json页面清单在src/AppSettings/pages/SettingsPages.jsonPython 生成器位于tools/generators/settings_qml生成的 QML 由src/QmlControls/AppSettings.qml加载。生成动作在src/AppSettings/CMakeLists.txt中接线构建时执行python -m tools.generators.settings_qml.generate_pages --output-dir build/generated输入为上述 JSON 文件输出为各页面 QML 与SettingsPagesModel.qml。当*.SettingsUI.json中省略control字段时生成器会根据 Fact 类型自动挑选控件bool→ 复选框枚举型 → 下拉框其他类型 → 文本框。自定义构建如何叠加设置页Whats New 中宣布的新能力是Custom Builds 现在可以在 Application Settings 中新增自己的页面并替换、重排或移除内置页面——同样走 JSON 驱动无需手写设置 QML。完整开发文档见 docs/ko/qgc-dev-guide/views/settings_generation.md 的 Custom Build Settings Pages 一节。机制分为三层1. 页面清单叠加Page List Overlay在自定义目录QGC_CUSTOM_DIR下创建custom/src/AppSettings/pages/SettingsPages.json其条目在配置期与内置页面清单合并条目name与内置页面同名时原地替换该页面新条目支持insertAfter/insertBefore引用内置页面的name否则追加到末尾{ remove: name }用于移除内置页面。2. 页面定义Page Definitions将*.SettingsUI.json文件放入同一自定义 pages 目录文件名与内置定义相同的文件会**遮蔽shadow**内置定义。3. 自定义设置组Custom Settings Groups若要引用内置 QGC 中不存在的 Fact需要添加custom/src/Settings/Name.SettingsGroup.jsonFact 元数据并编入应用:/json资源前缀为其创建SettingsGroup子类在插件中重写QGCCorePlugin::registerCustomSettings调用SettingsManager::registerCustomSettingsGroup(accessor, new MySettings())管理器接管所有权。accessor 必须是camelCase 的 JSON 文件名 Settings例如Custom.SettingsGroup.json→customSettings这样生成的页面才能解析QGroundControl.settingsManager.accessor.fact。CMake 在自定义目录存在时自动完成上述接线生成输出清单由生成器的--list-outputs模式计算。仓库中的完整示例custom-example仓库自带的 custom-example 构建包含上述全部机制的可运行完整示例页面清单叠加 custom-example/src/AppSettings/pages/SettingsPages.json定义名为Custom的页面输出 QML 为CustomSettings.qml图标qrc:/res/gear-white.svg并insertAfter: General将其插入到内置 General 页之后页面定义 custom-example/src/AppSettings/pages/Custom.SettingsUI.json一个Custom Example分组包含三个控件分别引用customSettings.showAttitudeWidget、customSettings.updateInterval、customSettings.operatorName三个自定义 Fact自定义设置组定义位于custom-example/src/Settings/Custom.SettingsGroup.json含 Fact 元数据与对应SettingsGroup子类实现插件注册覆盖位于custom-example/src/CustomPlugin.cc/h中。开发者可以仿照该示例为自己的定制构建增加设置页面而无需接触任何手写 QML。小结V5.1 之后的这份 Whats New 体现了 QGroundControl 在地图体验与定制化能力两个方向的演进GeoMap 引擎把真实地形高程与无缝 2D/3D 渲染带入 Fly View默认关闭、需手动开启并重启作为技术预览面向尝鲜用户长期目标是统一全应用的地图体验ROI 高度设置用一次小的交互增强让对准高处目标成为可能底层由guidedModeROI与MAV_CMD_DO_SET_ROI系列命令支撑JSON 驱动的自定义设置页把原本只能手写 QML 的扩展路径简化为纯配置叠加custom-example提供了端到端的参考实现。如需更深入的启用步骤、完整设置页生成规范可继续阅读 docs/ko/qgc-user-guide/fly_view/geoview.md 与 docs/ko/qgc-dev-guide/views/settings_generation.md。赞分享无人机智能硬件【免费下载链接】qgroundcontrolCross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)项目地址https://gitcode.com/gh_mirrors/qg/qgroundcontrol点击查看免费下载相关推荐QGroundControl Whats NewV5.1 之后实战指南GeoMap 3D 地图引擎、ROI 高度与自定义设置页QGroundControl Whats NewV5.1 之后实战指南GeoMap 3D 地图引擎、ROI 高度与自定义设置页 本文面向从 QGroun无人机智能硬件QGroundControl GeoMap 引擎技术预览实战指南2D/3D 地形地图的启用、相机操控与影像地形原理QGroundControl GeoMap 引擎技术预览实战指南2D/3D 地形地图的启用、相机操控与影像地形原理 本指南围绕 QGroundContro无人机智能硬件Chrome新标签页自定义配置高效设置与性能优化秘籍Chrome新标签页自定义配置高效设置与性能优化秘籍 掌握Chrome新标签页重定向技巧让你的浏览器体验更上一层楼。NewTab Redirect扩展为用户前端上一篇devops-exercises 中文题库导读2624 道 DevOps 与 SRE 面试题的组织结构、内容地图与自测工具下一篇Nexus Mods App终极指南轻松管理游戏模组告别繁琐安装流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表