Unverified Commit c8c5f58d authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #7008 from Williangalvani/subtuning

Add tuning page for Sub
parents 95750936 df67dff5
......@@ -146,6 +146,7 @@
<file alias="QGroundControl/FactControls/FactTextFieldGrid.qml">src/FactSystem/FactControls/FactTextFieldGrid.qml</file>
<file alias="QGroundControl/FactControls/FactTextFieldRow.qml">src/FactSystem/FactControls/FactTextFieldRow.qml</file>
<file alias="QGroundControl/FactControls/FactValueSlider.qml">src/FactSystem/FactControls/FactValueSlider.qml</file>
<file alias="QGroundControl/FactControls/FactTextFieldSlider.qml">src/FactSystem/FactControls/FactTextFieldSlider.qml</file>
<file alias="QGroundControl/FactControls/qmldir">src/FactSystem/FactControls/qmldir</file>
<file alias="QGroundControl/FlightDisplay/FlightDisplayView.qml">src/FlightDisplay/FlightDisplayView.qml</file>
<file alias="QGroundControl/FlightDisplay/FlightDisplayViewMap.qml">src/FlightDisplay/FlightDisplayViewMap.qml</file>
......
......@@ -65,6 +65,9 @@ QUrl APMTuningComponent::setupSource(void) const
qmlFile = QStringLiteral("qrc:/qml/APMTuningComponentCopter.qml");
}
break;
case MAV_TYPE_SUBMARINE:
qmlFile = QStringLiteral("qrc:/qml/APMTuningComponentSub.qml");
break;
default:
// No tuning panel
break;
......
/****************************************************************************
*
* (c) 2009-2018 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import QtQuick 2.3
import QtQuick.Controls 1.2
import QGroundControl.FactSystem 1.0
import QGroundControl.FactControls 1.0
import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0
SetupPage {
id: tuningPage
pageComponent: tuningPageComponent
Component {
id: tuningPageComponent
Column {
width: availableWidth
spacing: _margins
FactPanelController { id: controller; factPanel: tuningPage.viewPanel }
QGCPalette { id: palette; colorGroupEnabled: true }
property real _margins: ScreenTools.defaultFontPixelHeight
ExclusiveGroup { id: buttonGroup }
Row {
spacing: _margins
QGCButton {
id: atcButton
text: qsTr("Attitude Controller Parameters")
exclusiveGroup: buttonGroup
checked: true
onClicked: checked = true
}
QGCButton {
id: posButton
text: qsTr("Position Controller Parameters")
exclusiveGroup: buttonGroup
onClicked: checked = true
}
QGCButton {
id: navButton
text: qsTr("Waypoint navigation parameters")
exclusiveGroup: buttonGroup
onClicked: checked = true
}
}
Rectangle {
id: atcParams
visible: atcButton.checked
anchors.left: parent.left
anchors.right: parent.right
height: posColumn.height + _margins*2
color: palette.windowShade
Column {
id: posColumn
width: parent.width/2
anchors.margins: _margins
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
spacing: _margins*1.5
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_ANG_PIT_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_ANG_RLL_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_ANG_YAW_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_PIT_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_PIT_I") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_PIT_IMAX") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_PIT_D") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_RLL_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_RLL_I") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_RLL_IMAX") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_RLL_D") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_YAW_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_YAW_I") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_YAW_IMAX") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ATC_RAT_YAW_D") }
} // Column - Position Controller Parameters
} // Rectangle - Position Controller Parameters
Rectangle {
id: posParams
visible: posButton.checked
anchors.left: parent.left
anchors.right: parent.right
height: velColumn.height + _margins*2
color: palette.windowShade
Column {
id: velColumn
anchors.margins: _margins
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
spacing: _margins*1.5
FactTextFieldSlider { fact: controller.getParameterFact(-1, "POS_XY_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "POS_Z_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "VEL_XY_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "VEL_XY_I") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "VEL_XY_IMAX") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "VEL_Z_P") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ACCEL_Z_D") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ACCEL_Z_FILT") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ACCEL_Z_I") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ACCEL_Z_IMAX") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "ACCEL_Z_P") }
} // Column - VEL parameters
} // Rectangle - VEL parameters
Rectangle {
id: navParams
visible: navButton.checked
anchors.left: parent.left
anchors.right: parent.right
height: wpnavColumn.height + _margins*2
color: palette.windowShade
Column {
id: wpnavColumn
anchors.margins: _margins
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
spacing: _margins*1.5
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_ACCEL") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_ACCEL_Z") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_LOIT_JERK") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_LOIT_MAXA") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_LOIT_MINA") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_LOIT_SPEED") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_RADIUS") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_SPEED") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_SPEED_DN") }
FactTextFieldSlider { fact: controller.getParameterFact(-1, "WPNAV_SPEED_UP") }
} // Column - WPNAV parameters
} // Rectangle - WPNAV parameters
} // Column
} // Component
} // SetupView
import QtQuick 2.7
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.2
import QGroundControl.FactSystem 1.0
import QGroundControl.Controls 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.FactControls 1.0
Row {
id: sliderRoot
width: parent.width
property Fact fact: null
property var _factValue: fact ? fact.value : null
property bool _loadComplete: false
property real _range: Math.abs(fact.max - fact.min)
property real _minIncrement: _range/50
property int precision: 2
on_FactValueChanged: {
slide.value = fact.value
}
Component.onCompleted: {
slide.minimumValue = fact.min
slide.maximumValue = fact.max
slide.value = fact.value
_loadComplete = true
}
// Used to find width of value string
QGCLabel {
id: textMeasure
visible: false
text: fact.value.toFixed(precision)
}
// Param name, value, description and slider adjustment
Column {
id: sliderColumn
width: parent.width
spacing: _margins/2
// Param name and value
Row {
spacing: _margins
QGCLabel {
text: fact.name
font.family: ScreenTools.demiboldFontFamily
font.pointSize: ScreenTools.defaultFontPointSize * 1.1
anchors.verticalCenter: parent.verticalCenter
}
// Row container for Value: xx.xx +/- (different spacing than parent)
Row {
spacing: ScreenTools.defaultFontPixelWidth
anchors.verticalCenter: parent.verticalCenter
QGCLabel {
text: "Value: "
anchors.verticalCenter: parent.verticalCenter
}
FactTextField {
anchors.verticalCenter: parent.verticalCenter
fact: sliderRoot.fact
showUnits: false
showHelp: false
text: fact.value.toFixed(precision)
width: textMeasure.width + ScreenTools.defaultFontPixelWidth*2 // Fudged, nothing else seems to work
}
QGCLabel {
text: fact.units
anchors.verticalCenter: parent.verticalCenter
}
QGCButton {
height: parent.height
width: height
text: "-"
anchors.verticalCenter: parent.verticalCenter
onClicked: fact.value = Math.max(Math.min(fact.value - _minIncrement, fact.max), fact.min)
}
QGCButton {
height: parent.height
width: height
text: "+"
anchors.verticalCenter: parent.verticalCenter
onClicked: fact.value = Math.max(Math.min(fact.value + _minIncrement, fact.max), fact.min)
}
} // Row - container for Value: xx.xx +/- (different spacing than parent)
} // Row - Param name and value
QGCLabel {
text: fact.shortDescription
}
// Slider, with minimum and maximum values labeled
Row {
width: parent.width
spacing: _margins
QGCLabel {
id: minLabel
width: ScreenTools.defaultFontPixelWidth * 10
text: fact.min.toFixed(precision)
horizontalAlignment: Text.AlignRight
}
QGCSlider {
id: slide
width: parent.width - minLabel.width - maxLabel.width - _margins * 2
stepSize: fact.increment ? Math.max(fact.increment, _minIncrement) : _minIncrement
tickmarksEnabled: true
onValueChanged: {
if (_loadComplete) {
if (Math.abs(fact.value - value) >= _minIncrement) { // prevent binding loop
fact.value = value
}
}
}
MouseArea {
anchors.fill: parent
onWheel: {
// do nothing
wheel.accepted = true;
}
onPressed: {
// propogate/accept
mouse.accepted = false;
}
onReleased: {
// propogate/accept
mouse.accepted = false;
}
}
} // Slider
QGCLabel {
id: maxLabel
width: ScreenTools.defaultFontPixelWidth * 10
text: fact.max.toFixed(precision)
}
} // Row - Slider with minimum and maximum values labeled
} // Column - Param name, value, description and slider adjustment
} // Row
......@@ -9,3 +9,4 @@ FactTextField 1.0 FactTextField.qml
FactTextFieldGrid 1.0 FactTextFieldGrid.qml
FactTextFieldRow 1.0 FactTextFieldRow.qml
FactValueSlider 1.0 FactValueSlider.qml
FactTextFieldSlider 1.0 FactTextFieldSlider.qml
......@@ -25,6 +25,7 @@
<file alias="APMSensorsComponent.qml">../../AutoPilotPlugins/APM/APMSensorsComponent.qml</file>
<file alias="APMSensorsComponentSummary.qml">../../AutoPilotPlugins/APM/APMSensorsComponentSummary.qml</file>
<file alias="APMTuningComponentCopter.qml">../../AutoPilotPlugins/APM/APMTuningComponentCopter.qml</file>
<file alias="APMTuningComponentSub.qml">../../AutoPilotPlugins/APM/APMTuningComponentSub.qml</file>
<file alias="QGroundControl/ArduPilot/APMSensorParams.qml">APMSensorParams.qml</file>
<file alias="QGroundControl/ArduPilot/qmldir">QGroundControl.ArduPilot.qmldir</file>
</qresource>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment