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

目录

QGC界面显示框架

页面介绍 

飞行页面

Application Setting页面

General

Offline map 

连接

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以及日志回放方式和地面站建立连接 

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

 该页面位于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

 

  • 13
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chris_Brown

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值