QGC地⾯站⼆次开发(⼀)地⾯站介绍以及软件框架(1)地
⾯站使⽤介绍和接⼝介绍
⽬录
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
Airframe AirframeComponent.qml AirframeComponentSummary.qml
Sensors SensorsComponent.qml SensorsComponentSummary.qml
Radio RadioComponent.qml PX4RadioComponentSummary.qml
Flight Modes PX4FlightModes.qml FlightModesComponentSummary.qml
Power PowerComponent.qml PowerComponentSummary.qml
Safety SafetyComponent.qml SafetyComponentSummary.qml
Tuning机型相关空
Plan页⾯
该页⾯的实现位于PlanView.qml,可以实现Mission、电⼦围栏、Rally的操作,在通过PlanMasterController类实现和C++的数据交互,在其中构造:
MissionController:实现普通航点和测绘的操作交互
GeoFenceController:实现电⼦围栏操作交互
RallyPointController:实现Rally操作交互
航点和航测
view ui框架
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论