QGroundControl的总体架构,模块化设计和主要组件的功能。
QGroundControl 总体架构详细描述
QGroundControl (QGC) 作为一个开源地面控制站软件,其设计原则是模块化、高扩展性和高可维护性。
总体架构
QGroundControl 由多个层次构成,每个层次负责不同的功能。这种分层结构确保了系统的高内聚性和低耦合性。
-
用户界面 (UI) 层:
- 使用 Qt Quick 和 QML 技术构建。
- 提供动态和响应迅速的用户界面。
- 包括主窗口、工具栏、菜单、状态栏和各类功能窗口(如地图、视频流、任务规划等)。
-
业务逻辑层:
- 处理与飞行控制相关的逻辑。
- 包括任务管理、飞行模式切换、参数设置等功能。
-
通信层:
- 负责与无人机和其他外围设备的通信。
- 实现 MAVLink 协议,用于数据传输和控制命令的发送。
-
数据存储层:
- 管理飞行日志、用户配置、地图缓存等数据的存储。
- 提供数据持久化功能,以便于后续的分析和使用。
模块化设计
QGroundControl 的模块化设计分为多个功能模块,每个模块负责特定的功能。主要模块包括:
-
核心模块:
- Application Core:负责应用程序的初始化和主事件循环。
- Logging:提供系统日志记录功能。
- Settings:管理应用程序设置和用户配置。
-
飞行控制模块:
- Vehicle Manager:管理连接的无人机,包括状态监控和命令发送。
- Mission Manager:处理飞行任务的创建、编辑、上传和执行。
- Parameter Manager:管理无人机参数的读取和设置。
-
地图与导航模块:
- Map Widget:显示地图,并支持路径规划和地理围栏功能。
- Geofence Manager:管理地理围栏的设置和监控。
-
视频流模块:
- Video Receiver:接收和处理来自无人机的视频流。
- Video Display:在 UI 中显示实时视频。
-
日志和回放模块:
- Log Recorder:记录飞行数据和事件。
- Log Player:提供飞行数据的回放和分析功能。
主要组件及其功能
-
MainWindow:
- 主窗口,包含了所有主要的 UI 组件。
- 提供与用户交互的主要界面,包括工具栏、菜单和状态栏。
-
MAVLink:
- 实现 MAVLink 通信协议,用于与无人机进行数据传输。
- 负责消息的编码和解码,以及消息的发送和接收。
-
Vehicle:
- 表示一个无人机对象,包含无人机的状态信息和控制接口。
- 处理无人机的连接、状态更新和命令执行。
-
Mission Manager:
- 管理飞行任务,包括任务的创建、编辑、上传和执行。
- 提供任务规划的图形界面,支持多种任务类型。
-
Parameter Manager:
- 读取和设置无人机的参数。
- 提供参数的分类显示和搜索功能,便于用户管理。
-
Map Widget:
- 显示地图,支持多种地图源(如 Google Maps、Bing Maps)。
- 提供路径规划、地理围栏和实时位置显示等功能。
-
Video Receiver:
- 处理来自无人机的视频流,支持多种视频格式和协议。
- 提供视频的解码和显示功能,支持低延迟的实时视频监控。
通信与数据处理
QGroundControl 主要通过 MAVLink 协议与无人机通信。通信层负责处理所有 MAVLink 消息,并将这些消息传递给相应的业务逻辑层进行处理。以下是通信与数据处理的流程:
-
消息接收:
- 从无人机接收到的 MAVLink 消息通过串口、UDP 或 TCP 传输。
- 消息被解码并传递给相应的模块(如 Vehicle、Mission Manager)。
-
消息处理:
- 不同类型的消息由不同的模块处理。例如,心跳消息用于更新无人机的连接状态,飞行状态消息用于更新无人机的当前位置和姿态。
-
命令发送:
- 用户在 UI 上进行操作(如改变飞行模式、设置任务),相应的命令通过 MAVLink 发送给无人机。
- 这些命令由飞行控制模块生成,并通过通信层传输。
扩展性
QGroundControl 的模块化设计使其具备良好的扩展性。开发者可以根据需求添加新的模块或扩展现有模块。例如:
- 添加新的传感器支持。
- 集成新的飞行控制系统(如新的无人机平台)。
- 开发自定义的 UI 界面以满足特定需求。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
QGroundControl的总体架构,模块化设计和主要组件的功能。
QGroundControl 总体架构详细描述 QGroundControl (QGC) 作为一个开源地面控制站软件,其设计原则是模块化、高扩展性和高可维护性。 总体架构 QGroundControl 由多个层次构成,每个层次负责不同的功能。这种分层结构确保了系统的高内聚性和低耦合性。 …...
![](https://www.ngui.cc/images/no-images.jpg)
oracle 表空间文件迁移
表空间文件迁移 背景 由于各种原因,在实际工作中可能会出现oracle服务器数据盘空间被占满的情况,这个时候单纯的添加新磁盘,后续表空间文件放新盘的方案已经不适用了,因为源盘已经占用满了,数据库服务会异常…...
![](https://i-blog.csdnimg.cn/direct/e1c23fd291ee4c03b96e26e74155749f.png)
JVM学习(day1)
JVM 运行时数据区 线程共享:方法区、堆 线程独享(与个体“同生共死”):虚拟机栈、本地方法栈、程序计数器 程序计数器 作用:记录下次要执行的代码行的行号 特点:为一个没有OOM(内存溢出&a…...
![](https://www.ngui.cc/images/no-images.jpg)
js项目生产环境中移除 console
1、terser-webpack-plugin webpack 构建的项目中安装使用 安装: npm install terser-webpack-plugin --save-dev 配置 在webpack.config.js文件中 new TerserPlugin({terserOptions: {output: {comments: false, // 去除注释},warnings: false, // 去除黄色警告,co…...
![](https://i-blog.csdnimg.cn/direct/e3597f2bbeb34383822e37f300145d00.png)
ROS2 + 科大讯飞 初步实现机器人语音控制
环境配置: 电脑端: ubuntu22.04实体机作为上位机 ROS版本:ros2-humble 实体机器人: STM32 思岚A1激光雷达 科大讯飞语音SDK 讯飞开放平台-以语音交互为核心的人工智能开放平台 实现步骤: 1. 下载和处理科大讯飞语音模…...
![](https://i-blog.csdnimg.cn/direct/522345789f90489e89f0aa6cd3721008.png)
HTML5新增的input元素属性:placeholder、required、autofocus、min、max等
HTML5 大幅度地增加与改良了 input 元素的属性,可以简单地使用这些属性来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 下面将详细介绍这些新增的 input 元素的属性。 属性说明属性说明placeholder在输入框显示描述性或提示性文本autocomplete是否保…...
![](https://i-blog.csdnimg.cn/direct/88cfe8096a6c4dab8f83509158ecfb13.png#pic_center)
Cornerstone3D导致浏览器崩溃的踩坑记录
WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost ⛳️ 问题描述 在使用vue3vite重构Cornerstone相关项目后,在Mac本地运行良好,但是部署测试环境后,在window系统的Chrome浏览器中切换页面会导致页面崩溃。查看Chrome的任务管理器&am…...
![](https://i-blog.csdnimg.cn/direct/91454a8dac284ccea793b6a1691a5053.png)
【鸿蒙学习笔记】Stage模型
官方文档:Stage模型开发概述 目录标题 Stage模型好处Stage模型概念图ContextAbilityStageUIAbility组件和ExtensionAbility组件WindowStage Stage模型-组件模型Stage模型-进程模型Stage模型-ArkTS线程模型和任务模型关于任务模型,我们先来了解一下什么是…...
![](https://i-blog.csdnimg.cn/direct/c38620bb10d64fb3b29336fe8adae2f1.png)
Docker进入MongoDB
先是命令行开启docker镜像,然后进入docker镜像,这是两步 进入之后,开头会变成root,我的理解是进入了另一个linux系统了,直接执行相应的软件 这里直接use databse就是进入了,据说MongoDB是慢启动,…...
![](https://www.ngui.cc/images/no-images.jpg)
APP与API:魔法世界的咒语与念咒者
1. 什么是API? API,即应用程序编程接口(Application Programming Interface),就像是魔法世界中的咒语。API是两个独立软件系统之间进行通信和数据交换的桥梁。通过API,一个软件系统可以调用另一个软件系统中…...
![](https://www.ngui.cc/images/no-images.jpg)
云计算安全需求分析与安全保护工程
云计算基本概念 云计算(Cloud Computing)是一种通过互联网提供计算资源和服务的技术。它允许用户按需访问和使用计算资源,如服务器、存储、数据库、网络、安全、分析和软件应用等,而无需管理底层基础设施。以下是云计算的基本概念…...
![](https://img-blog.csdnimg.cn/img_convert/acb5e2953d5a586eb67c0bce3f661ba1.png)
七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境
前言 SQLite的一个重要的特性是零配置的、无需服务器,这意味着不需要复杂的安装或管理。它跟微软的Access差不多,只是一个.db格式的文件。但是与Access不同的是,它不需要安装任何软件,非常轻巧。 七天.NET 8操作SQLite入门到实战…...
![](https://img-blog.csdnimg.cn/direct/ef40d19840424336bdc7886a1f4640b2.png)
操作系统——进程的状态与转换
...
![](https://i-blog.csdnimg.cn/direct/78c566e6c12d4033bbf08b29822c98f1.png)
80. UE5 RPG 实现UI显示技能冷却进度功能
在上一篇文章里,我们实现了通过GE给技能增加资源消耗和技能冷却功能。UI也能够显示角色能够使用的技能的UI,现在还有一个问题,我们希望在技能释放进去冷却时,技能变成灰色,并在技能冷却完成,技能可以再次使…...
![](https://img-blog.csdnimg.cn/direct/6c7c3edff1e848ef97441e61ac760eb3.jpeg#pic_center)
Vue2-集成路由Vue Router介绍与使用
文章目录 路由(Vue2)1. SPA 与前端路由2. vue-router基本使用创建路由组件声明路由链接和占位标签创建路由模块挂载路由模块 3. vue-router进阶路由重定向嵌套路由动态路由编程式导航导航守卫 本篇小结 更多相关内容可查看 路由(Vue2…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
TemuAPI接口:获取商品详情功能
temu作为拼多多海外的跨境电商平台,已经在海外电商领域崭露头角,越来越多的外贸人选择temu作为发展平台。今天的接口可以用于获取temu平台的商品详情,包括价格、商品图片、规格、评论等内容,如有需要,请点击文末链接或…...
![](https://www.ngui.cc/images/no-images.jpg)
deepstream读取mp4文件及不同类型视频输入bug解决
在deepstream中使用mp4文件,与rtsp类似,使用uridecodebin即可,(可见官方test.py文件) def create_source_bin(index, uri):print("Creating source bin")# Create a source GstBin to abstract this bins c…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis服务器统计和配置信息简介
Redis服务器统计和配置信息简介 首先使用INFO命令在Redis中用于获取Redis服务器的各种统计和配置信息;执行上述命令后,返回的信息分为多个部分,包括服务器信息、客户端信息、内存信息、持久化信息、统计信息、复制信息、CPU信息和键空间信息;…...
![](https://img-blog.csdnimg.cn/img_convert/eb641d38f764b4be5a0eec1ff0004098.png)
Linux Mac 安装Higress 平替 Spring Cloud Gateway
Linux Mac 安装Higress 平替 Spring Cloud Gateway Higress是什么?传统网关分类Higress定位下载安装包执行安装命令执行脚本 安装成功打开管理界面使用方法configure.shreset.shstartup.shshutdown.shstatus.shlogs.sh Higress官网 Higress是什么? Higress是基于阿里内部的…...
![](https://img-blog.csdnimg.cn/img_convert/76e0c6490eb8b8857c1e1e7c25e1196d.png)
基于重叠群稀疏的总变分信号降噪及在旋转机械故障诊断中的应用(MATLAB)
基于振动分析的故障诊断方法基本流程主要由以下五个步骤组成,分别是信号采集、信号处理、特征提取、状态识别与诊断结果。这五个步骤中信号采集与特征提取是故障诊断中最为重要的步骤,而故障微弱特征信息又是其中最难解决的问题。“故障微弱特征信息”站…...
![](https://i-blog.csdnimg.cn/direct/4e26899d7712464db4e2e1ba06e7f3ae.png)
【YOLOv8】 用YOLOv8实现数字式工业仪表智能读数(一)
上一篇圆形表盘指针式仪表的项目受到很多人的关注,咱们一鼓作气,把数字式工业仪表的智能读数也研究一下。本篇主要讲如何用YOLOV8实现数字式工业仪表的自动读数,并将读数结果进行输出,若需要完整数据集和源代码可以私信。 目录 &…...
![](https://i-blog.csdnimg.cn/direct/c367000b97134f5bb0948da122428d84.png)
微信小程序---npm 支持
一、构建 npm 目前小程序已经支持使用 npm 安装第三方包,但是这些 npm 包在小程序中不能够直接使用,必须得使用小程序开发者工具进行构建后才可以使用。 为什么得使用小程序开发者工具需要构建呢❓ 因为 node_modules 目录下的包,不会参与…...
![](https://i-blog.csdnimg.cn/direct/14ff341233624b2292c9c3bbbf008cbe.png)
02MFC画笔/画刷/画椭圆/圆/(延时)文字
文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件 画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本 定时器与定时事件...
![](https://i-blog.csdnimg.cn/direct/e2907f3e654a4743897c781c7ce6020e.png)
JavaWeb(四:Ajax与Json)
一、Ajax 1.定义 Ajax(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML AJAX 不是新的编程语言,指的是⼀种交互方式:异步加载。 客户端和服务器的数据交互更新在局部页面的技术,不需要刷新…...
![](https://i-blog.csdnimg.cn/direct/5175cfdb74e74021989ec9675aa0e75d.png)
Spring源码中的模板方法模式
1. 什么是模板方法模式 模板方法模式(Template Method Pattern)是一种行为设计模式,它在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。 模板方法模式的定义&…...
![](https://i-blog.csdnimg.cn/direct/a98de8500ee44a12929d96df7b1f76f7.png)
初学SpringMVC之 JSON 篇
JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式 采用完全独立于编程语言的文本格式来存储和表示数据 JSON 键值对是用来保存 JavaScript 对象的一种方式 比如:{"name": "张三"}…...
![](https://www.ngui.cc/images/no-images.jpg)
Mojo AI编程语言(三)数据结构:高效数据处理
目录 1. Mojo AI编程语言简介 2. 数据结构在数据处理中的重要性 3. Mojo AI中的基础数据结构 3.1 数组 3.2 列表 3.3 字典 4. 高效数据结构的实现与优化 4.1 哈希表 4.2 树结构 4.3 图结构 5. 高效数据处理技术 5.1 并行处理 5.2 内存优化 5.3 数据压缩 6. 实战…...
![](https://www.ngui.cc/images/no-images.jpg)
Java学习笔记整理: 关于SpringBoot 2024/7/12;
SpringBoot springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 特点specialty: springboot的特点: 1) 自动配置 Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程&a…...
![](https://i-blog.csdnimg.cn/direct/b9b4b06aa21c4f03bd4df56e2b8aa815.png)
ASP.NET MVC Lock锁的测试
思路:我们让后台Thread.Sleep一段时间,来模拟一个耗时操作,而这个时间可以由前台提供。 我们开启两个或以上的页面,第一个耗时5秒(提交5000),第二个耗时1秒(提交1000)。 期望的测试结果: 不加Lock锁&…...
![](https://i-blog.csdnimg.cn/direct/7182560c663d4de9896dd11365df9ee1.png)
Hadoop3:HDFS-通过配置黑白名单对集群进行扩缩容,并实现数据均衡(实用)
一、集群情况介绍 我的本地虚拟机,一共有三个节点,hadoop102、hadoop103、hadoop104 二、白名单 创建白名单文件whitelist,通过白名单的配置,只允许集群包含102和103两台机器可以存储数据,104无法存储数据。 需求 …...
网站建设策划/兰州网络推广公司哪家好
复制(Copying)算法说到底也是为了解决标记-清除算法产生的那些碎片。 首先将内存分为大小相等的两部分(假设A、B两部分),每次呢只使用其中的一部分(这里我们假设为A区),等这部分用完…...
![](/images/no-images.jpg)
做网站买房可靠吗/贵阳seo网站推广
wpf 基础: 绑定,不会绑定谈不上懂wpf布局,不管是web还是winform,都必须要会布局,布局基础类Panel触发器,要想用好wpf,触发器必须要会样式,给软件穿衣服,布局和样式一般是…...
![](/images/no-images.jpg)
腾讯云建设一个网站要多少钱/东莞百度搜索优化
Day -? 居然还能报上thupc,我在队里唯一的作用大约是cfrating稍微高点方便过审。另外两位是lz和xyy。 Day -2 我夫人生日! Day -1 lz和xyy的家长都来了带我飞。住在去年thusc住的宾馆。晚上开黑打cometoj,好像又有小裙子了。 Day 0 早上九点…...
![](/images/no-images.jpg)
建设网站找谁/百度搜索竞价推广
happens-before和as-if-serial并发编程系列汇总先行发生原则(happens-before)什么是happens-beforehappens-before规则示例as-if-serial语义总结并发编程系列汇总 并发编程系列文章飞机票Thread生命周期及interrupted登机入口synchronized锁升级原理分析登机入口volatile内存屏…...
![](/images/no-images.jpg)
彩票的网站怎么做/定制网站和模板建站
1、互斥锁原理 在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。 互斥锁,是一种信号量…...
![](https://img-blog.csdnimg.cn/img_convert/f957846c25ad13ecf9ad0f468ba35115.png)
甘肃手机网站建设/seo算法是什么
新人大礼包,30G Java架构资料,免费领取zhuanlan.zhihu.comTomcat性能调优:找到Tomcat根目录下的conf目录,修改server.xml文件的内容。对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomc…...