QGC地面站二次开发(一)地面站介绍以及软件框架(1)地面站使用介绍和接口介绍

2023-05-16

目录

QGC界面显示框架

页面介绍 

飞行页面

Application Setting页面

General

Offline map 

连接

Mock Link

Vehicle Setup页面

Plan页面

航点和航测 

​电子围栏  ​

Rally

Analyse页面


QGC的界面由三大部分组成:

  • 1 菜单栏(File和Widget两项):其中File包含一个是否使能日志回放功能以及手动退出操作。Widget则包含了HIL和MAVLInk Inspector等功能控件。
  • 2 任务栏:实现将地面站的日志文件回放。
  • 3 主显示区域,该部分将支持的功能分类按照不同的页面进行展示。为方便大家将页面和代码对应我们先了解一下QGC界面显示的整体框架。

QGC界面显示框架

地面站的UI界面是通过MainWindow类实现开始调用的,其中MainWindow.ui是GUI控件页面,同时该类中开始加载了qml文件,通过一些定制化的qml控件完成整个界面。下面根据代码来进行详细讲解:

1、MainWindow的构造函数中,通过加载了MainWindowHybrid.qml文件,相关代码如下:

 QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
    _mainQmlWidgetHolder->setContextPropertyObject("controller", this);
    _mainQmlWidgetHolder->setContextPropertyObject("debugMessageModel", AppMessages::getModel());
    _mainQmlWidgetHolder->setSource(QUrl::fromUserInput("qrc:qml/MainWindowHybrid.qml"));

2、在MainWindowHybrid.qml,在该文件中通过一个Loader加载了MainWindowInner.qml.

Loader {
        id:             mainWindowInner
        anchors.fill:   parent
        source:         "MainWindowInner.qml"
            ...
    }

3 MainWindowInner.qml主要的控制页面的切换和加载。

  • MainToolBar:显示页面切换按钮栏
  • AppSettings.qml : Application Setting页面
  • SetupView.qml:Setup页面
  • PlanView.qml:Plan页面
  • FlightDisplayView:飞行页面
  • AnalyzeView.qml: Analyze页面

页面介绍 

在第一张图中左上角的第一个红框显示了地面站的五个主页面,点击可以实现页面切换。下面对这五个页面进行讲解。

飞行页面

上图时一副连接飞机之后的显示界面,我们按照从上到下、从左到右的顺序一一描述:

  • 页面切换按钮的右侧有一排图标显示飞机的状态数据,可以点击查看更详细的信息,例如电池状态
  • 电池状态的右边是飞行模式切换按钮,点击会下拉出支持操作的飞行模式。
  • 页面切换按钮的下方有一个Fly开头的按钮区域,该区域对应于飞机的控制操作。相较于之前的版本该版本引入了飞行前检查项,右方的List对应于检查项,完成此项检查则点击确认。
  • Fly操作区域平行的右侧有一个姿态显示仪表盘以及飞机详细数据展示,大家可以点击左上角的设置图标选中关注的数据进行更多数据显示操作。
  • 页面的左下角是视频显示区域

该页面对应的QML文件是FlightDisplayView.qml。 

Application Setting页面

General

可以进行显示单位、配色、字体大小、地图设置等等

Offline map 

可以进行离线地图的下载

连接

可以选择通过串口、UDP、TCP、Mock以及日志回放方式和地面站建立连接 

Mock Link

模拟一个飞机和地面站进行通信。

 该页面位于AppSettings.qml文件,

Vehicle Setup页面

 整体的页面规划位于SetupView.qml,该页面包含一系列的子页面,其中Summary和Firmware是无论连接或者不连接飞机都可以看到,而其他的控件是否可见以及状态取决于您的飞机的状态,QGC在根据飞机心跳中的固件类型构造PX4AutoPilotPlugin类或者APMAutoPilotPlugin类,该类中的vehicleComponents定制了统一的接口实现name、ico、Summary部件和详情页面。下面以PX4AutoPilotPlugin来详细描述:

  • Summary:参看showSummaryPanel函数,其根据目前的状态显示不同的页面。
  • FirmwareUpgrade.qml:Firmware页面
控件名称详情页面Summary
AirframeAirframeComponent.qmlAirframeComponentSummary.qml
SensorsSensorsComponent.qmlSensorsComponentSummary.qml
RadioRadioComponent.qmlPX4RadioComponentSummary.qml
Flight ModesPX4FlightModes.qmlFlightModesComponentSummary.qml
PowerPowerComponent.qmlPowerComponentSummary.qml
SafetySafetyComponent.qmlSafetyComponentSummary.qml
Tuning机型相关

Plan页面

 该页面的实现位于PlanView.qml,可以实现Mission、电子围栏、Rally的操作,在通过PlanMasterController类实现和C++的数据交互,在其中构造:

  • MissionController:实现普通航点和测绘的操作交互
  • GeoFenceController:实现电子围栏操作交互
  • RallyPointController:实现Rally操作交互

航点和航测 

电子围栏  

Rally

Analyse页面

该页面实现位于AnalyzeView.qml文件,其中包含一些子页面,下面我用表格展示一下子页面控件名称、qml、后端C++类之间对应关系:

子页面qmlC++类
Log DownloadLogDownloadPage.qmlLogDownloadController
GeoTag ImagesGeoTagPage.qmlGeoTagController
Mavlink ConsoleMavlinkConsolePage.qmlMavlinkConsoleController

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QGC地面站二次开发(一)地面站介绍以及软件框架(1)地面站使用介绍和接口介绍 的相关文章

  • gazebo中urdf、xacro、sdf模型文件关系

    gazebo的模型是用xml格式的文本文件来描述的 具体有三种形式 xff1a urdf xacro sdf urdf urdf是老的gazebo模型格式 xff0c 本身有一些缺陷 xff0c 也缺一些功能 但是网上很多gazebo模型都
  • 1_树莓派开启ssh服务

    树莓派3 开启 SSH 服务 原文链接 xff1a https blog csdn net qq 16775293 article details 88385393 文章目录 1 使用管理工具2 启动服务3 自动启动服务 3 1 Windo
  • 树莓派4b串口通信配置

    树莓派4b本身是两个串口 xff0c 运行ls dev al如下 xff1a 请注意 xff1a 在默认状态下 xff0c serial0 就是GPIO14 15 是映射到ttyS0的 xff08 就是MINI串口 xff1a dev tt
  • Pandas第三次作业20200907

    练习1 读取北向 csv 指定trade date为行索引 查看数据的基本信息 有无缺失值 对其缺失值进行处理 删除缺失值所在行 查看数据的基本信息 查看数据是否清洗完毕 index列没啥用 将index列删除 观察数据是否有重复行 将重复
  • 新手入门板卡硬件调试

    硬件电路调试步骤 新手入门板卡硬件调试一看 观察焊接情况二测 测量阻抗三接触式上电调试遇到的问题一般解决思路电源供电运放出现震荡测量时GND的选取振铃现象 新手入门板卡硬件调试 一看 观察焊接情况 1 拿到板卡后 xff0c 首先观察下焊接
  • 用shell 命令获取占用cpu 最多的前五位

    通常情况下使用ps axu 来获得系统中所有进程占用资源情况 xff0c 通常也可以使用top 命令来动态的获得系统中资源占用最多的进程 假设我们使用ps aux gt file tmp来获取linux系统中的进程占用资源情况 xff0c
  • 关于准确率accuracy和召回率recall的理解

    假设有100个样本 xff0c 其中正样本70 xff0c 负样本30 xff0c 这个是由数据集本身决定的 xff0c 机器要做的就是判别这100个样本中哪几个样本是正样本 xff0c 哪几个样本是负样本 现在机器做出了预测 xff1a
  • pytorch BERT文本分类保姆级教学

    pytorch BERT文本分类保姆级教学 本文主要依赖的工具为huggingface的transformers xff0c 更详细的解释可以查阅文档 定义模型 模型定义主要是tokenizer config和model的定义 xff0c
  • class balanced loss pytorch 实现

    cb loss pytorch 实现 xff0c 可直接调用 参考 xff1a https github com vandit15 Class balanced loss pytorch blob master class balanced
  • 解决不平衡数据集问题

    解决不平衡数据集问题 数据不平衡通常反映数据集中类的不均匀分布 例如 xff0c 在信用卡欺诈检测数据集中 xff0c 大多数信用卡交易都不是欺诈 xff0c 只有很少的类是欺诈交易 这使得我们在欺诈类和非欺诈类之间的比例约为50 1 迄今
  • matlab报错解决---当前文件夹或MATLAB路径中未发现xxxx.m,但它位于xx\xxx\xxx\路径下

    解决 xff1a 选定为找到的文件 xff0c 右键 xff0c 找到 选择文件夹和子文件夹 选项 xff0c 添加到路径即可 xff0c 之后文件会变亮色 xff0c 不是灰色 修改之后 xff0c 发现没有 添加路径 的选项了 最后解决
  • sdf模型插入gazebo_ros_control插件

    gazebo ros control目前只支持老版的urdf模型 xff0c 官方教程 xff1a http gazebosim org tutorials tut 61 ros control sdf模型怎么办呢 xff1f 回答 xff
  • PreparedStatement 在mysql下中文乱码解决方案

    在顶目中无意中碰到PreparedStatement 在存DB时出现乱码 xff0c 困扰了好久终于解决问题 问题代码如下 pstmt 61 con prepareStatement INSERT OFFLINE pstmt setStri
  • 2013年终总结

    2013年即将过去 xff0c 回顾这一年 xff0c 有得有失 xff0c 有喜有悲 xff0c 些许记忆碎片留在脑海中 简单做个总结 xff0c 也算划上一个完美的句号 xff0c 再迎接充满挑战的2014 xff01 项目 一年过来
  • 程序员的生活,其实苦不堪言

    前一天 A 下班前把这个代码发给我 B 好的 xff01 第二天 A 都他妈中午了 xff0c 代码怎么还没发过来 xff1f B 我他妈还没下班呢 xff01 程序猿的真实写照 曾经刚参加工作 xff0c 接手一个项目的维护 xff0c
  • 不容错过的用户标签全面解读。建议收藏!

    过去几年来 xff0c 随着我国整体人口红利优势不再 xff0c 市场竞争加剧 xff0c 获客成本不断飙升 xff0c 互联网也告别增长进入存量时代 xff0c 品牌方的营销目标也从最大化追求用户数量规模转变为追求用户质量的精细化营销上
  • 【书写makefile】相关符号介绍

    本文将介绍一下几种符号 xff1a 61 43 61 61 61 makefile中 xff0c 的意思是取变量的意思 xff0c 比如 xff0c a 61 4 那么在后面的语句中 xff0c a 就代表的是取a的值 如果给a定义的是个宏
  • python人工智能技术

    人工智能 xff08 AI xff09 已成为当今世界的热门话题 xff0c 它的应用范围越来越广泛 其中 xff0c Python成为AI开发中最受欢迎的编程语言之一 Python提供了许多功能强大的库和框架 xff0c 大大简化了开发人
  • 利用X-CTU软件给P900数传配置参数

    转自 xff1a 70条消息 P900数传参数配置 落体偏东 CSDN博客 ATS104设置网络号 xff08 设置主从之间通讯连接的密码 xff09 ATS105设置单元号 xff08 给自己使用的数传进行编号 xff0c 防止主从混乱
  • px4添加自己编写的代码并编译

    1 在px4项目下的src文件夹下的modules文件夹中创建一个文件夹 xff0c 如图我创建了一个position control文件夹 xff0c 在该文件夹中添加自己写的代码程序 xff0c 同时添加一个CmakeLists txt

随机推荐

  • 思岚A1M8激光雷达-ubuntu18.04-slam建图参考

    Rplidar A1 A2使用及Hector SLAM建图 NouriXiiX的博客 CSDN博客 激光雷达初体验 Ubuntu 18 04 43 思岚科技 RPLIDAR A1M8 43 ROS 上手使用 银时大魔王的博客 CSDN博客
  • intel Realsense D/T系列 kalibr标定

    kalibr官方源码GitHub ethz asl kalibr The Kalibr visual inertial calibration toolbox 鼠标下拉找到install follow the install wiki pa
  • gazebo仿真遇到的FCU问题

    当使用roslaunch xxx launch命令进行gazebo仿真时出现 FCU Preflight Fail Accel 0 uncalibrated或者FCU Preflight Fail Baro Sensor 0 missing
  • 大广角USB摄像头选用指南

    起因是我要做一个二维码引导无人机降落的实验 四旋翼无人机搭载单目下视摄像头 xff0c 用于识别地面的二维码 我选择摄像头的标准基本上只有一个 xff1a 视场角越大越好 为此查阅了一些资料 xff0c 买了很多镜头和底板 xff0c 有了
  • 一:XTDrone平台上将视觉SLAM2与gazebo仿真集合

    1 XTDrone仿真平台配置 参考官方教程 xff0c 基本没大问题 仿真平台基础配置 语雀 依赖安装sudo apt install y n https www yuque com xtdrone manual cn basic con
  • 线程和进程的区别

    不少刚看到这两个词 xff08 特别是不是计算机专业的 xff09 小伙伴可能会比较疑惑 xff0c 线程和进程有什么区别 xff0c 网上有许多专业性的解答 xff0c 但是既然不少小伙伴不是计算机专业的 xff0c 那就结合例子做个大概
  • Pixhawk烧写自己开发过的1.11.0固件连接不上QGC

    最近在更改代码烧写固件后 xff0c 飞控就连接不上地面站 xff0c 以为是飞控坏了 xff0c 烧写了最新版的固件发现有可以连接到地面站了 xff0c 又烧写了同一版本的其他代码发现也可以连接qgc xff0c 应该是自己写的代码某个部
  • C标准库string.h源码(简单版)

    C标准库string h源码 xff08 简单版 xff09 strcpy strncpystrcat strncatstrcmp strncmpstrchr strrchr strchrnul strstrmemcpy memmove s
  • 二进制浮点数以及二进制浮点数算术运算

    二进制浮点数以及二进制浮点数算术运算 二进制浮点数表示半精度浮点数单精度浮点数双精度浮点数特殊情况 浮点数的运算步骤一 对阶二 尾数运算三 结果规格化左规操作右规操作 四 舍入处理五 溢出判断六 例子二进制浮点数加法二进制浮点数减法二进制浮
  • SMPL源代码实现和模型解读

    对于SLAM的工作已经告一段落了 xff0c 传统的人体动态三维重建也要告一段落了 xff0c 由于课题研究的方向是基于图像 视频的人体三维重建 xff0c 三维shape pose的恢复 xff1a 所以今天和大家交流的是SMPL模型 x
  • 自主悬停&高度融合 作者:nieyong

    自主悬停 amp 高度融合 作者 xff1a nieyong 自主悬停是Crazepony玩家问得最多的问题 xff0c 也是技术难度最高的问题 首先我们明确什么是自主悬停 xff1f 下面是一位资深航模玩家对于自主悬停的解释 飞行器能够悬
  • 如何高效地阅读技术类书籍与博客

    原文地址 xff1a http www nowamagic net librarys veda detail 2050 如何高效地阅读技术类书籍与博客 影像阅读法 阅读是自我提升的一个有效方法 xff0c 阅读书籍 阅读博客都是我们技术提升
  • MP地面站二次开发教程(一)开发环境搭建和编译

    目录 基于Mavlink的上位机地面站开发教程 第一节 开发环境搭建 1 预编译 xff08 源码尽量放到非中文目录下面 xff09 2 初次编译 3 删除这个speech引用 xff0c 重新引用这个speech包 每个人的环境不一样 x
  • MP地面站二次开发教程(三)Mavlink通讯协议(1)

    目录 1 协议介绍 消息结构 消息解析 消息数据流 2 消息解析 3 指令发送 Mavlink主要是飞控和地面站之间的消息指令发送 xff0c 包含地面站解析飞控发来的mavlink数据流 xff0c 和地面站向飞控发送mavlink指令
  • pdf嵌入字体(不用adobe pdf打印机)

    外文会议 期刊投稿一般要求pdf中的字体应当是嵌入状态 xff0c 避免其他电脑缺失字体导致pdf文字无法正常显示 1 检查字体是否嵌入 可以用Adobe Reader或者Acrobat等pdf阅读器打开后 xff0c 查看 属性 gt 字
  • MP地面站二次开发教程(三)Mavlink通讯协议(2)协议使用

    目录 1 协议移植 2 协议代码框架 1 协议移植 移植MAVLINK库 xff0c 在写新的代码的时候添加到项目工程即可 2 协议代码框架 理解三个线程1 主界面UI线程 2 数据读取线程 3 MAVLINK数据填充线程 主要的类的理解
  • MP地面站二次开发教程(三)Mavlink通讯协议(4)地面站数据显示调试及其指令填充

    目录 1 利用SimpleExample和Mavlink inspector的调试使用 2 Mavlink设置模式指令的填充 3 Mavlink控制指令的填充 4 MAV CMD 在地面站做一些显示和指令写入的时候 xff0c 因为PX4和
  • MP地面站二次开发教程(三)Mavlink通讯协议(5)航点的上传

    目录 1 航点传输协议 航点的规划是地面站的核心功能 xff0c 航点的规划分为自动规划和手动规划 自动规划是根据设定规则自动规划好航点上传 手动规划是用鼠标在地图上点击规划航点 航点的规划具有逻辑验证 xff0c 不符合逻辑的航点 xff
  • QGC地面站二次开发(二)QGC 界面自定义和修改

    目录 1 QGC 地面站的显示机制 1 1 C 43 43 类注册为 qml 可访问类型 1 2 注册属性或者方法 1 1 1 属性声明 1 1 2 方法声明 2 QGC 地面站界面初步修改 3 QGC 地面站菜单和 LOGO 修改 3 1
  • QGC地面站二次开发(一)地面站介绍以及软件框架(1)地面站使用介绍和接口介绍

    目录 QGC界面显示框架 页面介绍 飞行页面 Application Setting页面 General Offline map 连接 Mock Link Vehicle Setup页面 Plan页面 航点和航测 电子围栏 Rally An