Commit 312c2896 authored by DonLakeFlyer's avatar DonLakeFlyer

Add vehicle heading to plan toolbar

Also work on plan toolbar readability
parent 09bde0c7
......@@ -77,6 +77,7 @@ void MissionController::_resetMissionFlightStatus(void)
_missionFlightStatus.cruiseSpeed = _activeVehicle ? _activeVehicle->defaultCruiseSpeed() : std::numeric_limits<double>::quiet_NaN();
_missionFlightStatus.hoverSpeed = _activeVehicle ? _activeVehicle->defaultHoverSpeed() : std::numeric_limits<double>::quiet_NaN();
_missionFlightStatus.vehicleSpeed = _activeVehicle ? (_activeVehicle->multiRotor() || _activeVehicle->vtol() ? _missionFlightStatus.hoverSpeed : _missionFlightStatus.cruiseSpeed) : std::numeric_limits<double>::quiet_NaN();
_missionFlightStatus.vehicleYaw = 0.0;
_missionFlightStatus.gimbalYaw = std::numeric_limits<double>::quiet_NaN();
// Battery information
......@@ -97,6 +98,17 @@ void MissionController::_resetMissionFlightStatus(void)
_missionFlightStatus.ampMinutesAvailable = (double)_missionFlightStatus.mAhBattery / 1000.0 * 60.0 * ((100.0 - batteryPercentRemainingAnnounce) / 100.0);
}
}
emit missionDistanceChanged(_missionFlightStatus.totalDistance);
emit missionTimeChanged();
emit missionHoverDistanceChanged(_missionFlightStatus.hoverDistance);
emit missionCruiseDistanceChanged(_missionFlightStatus.cruiseDistance);
emit missionHoverTimeChanged();
emit missionCruiseTimeChanged();
emit missionMaxTelemetryChanged(_missionFlightStatus.maxTelemetryDistance);
emit batteryChangePointChanged(_missionFlightStatus.batteryChangePoint);
emit batteriesRequiredChanged(_missionFlightStatus.batteriesRequired);
}
void MissionController::start(bool editMode)
......@@ -322,6 +334,7 @@ void MissionController::removeAll(void)
_addMissionSettings(_activeVehicle, _visualItems, false /* addToCenter */);
_initAllVisualItems();
_visualItems->setDirty(true);
_resetMissionFlightStatus();
}
}
......@@ -953,8 +966,6 @@ void MissionController::_recalcMissionFlightStatus()
const double homePositionAltitude = _settingsItem->coordinate().altitude();
minAltSeen = maxAltSeen = _settingsItem->coordinate().altitude();
double lastVehicleYaw = 0;
_resetMissionFlightStatus();
bool vtolInHover = true;
......@@ -1034,8 +1045,8 @@ void MissionController::_recalcMissionFlightStatus()
if (item->specifiesCoordinate()) {
// Update vehicle yaw assuming direction to next waypoint
if (item != lastCoordinateItem) {
lastVehicleYaw = lastCoordinateItem->exitCoordinate().azimuthTo(item->coordinate());
lastCoordinateItem->setMissionVehicleYaw(lastVehicleYaw);
_missionFlightStatus.vehicleYaw = lastCoordinateItem->exitCoordinate().azimuthTo(item->coordinate());
lastCoordinateItem->setMissionVehicleYaw(_missionFlightStatus.vehicleYaw);
}
// Keep track of the min/max altitude for all waypoints so we can show altitudes as a percentage
......@@ -1115,7 +1126,7 @@ void MissionController::_recalcMissionFlightStatus()
lastCoordinateItem = item;
}
}
lastCoordinateItem->setMissionVehicleYaw(lastVehicleYaw);
lastCoordinateItem->setMissionVehicleYaw(_missionFlightStatus.vehicleYaw);
if (_missionFlightStatus.mAhBattery != 0 && _missionFlightStatus.batteryChangePoint == -1) {
_missionFlightStatus.batteryChangePoint = 0;
......
......@@ -48,6 +48,7 @@ public:
double cruiseSpeed;
double hoverSpeed;
double vehicleSpeed; ///< Either cruise or hover speed based on vehicle type and vtol state
double vehicleYaw;
double gimbalYaw; ///< NaN signals yaw was never changed
int mAhBattery; ///< 0 for not available
double hoverAmps; ///< Amp consumption during hover
......
......@@ -71,10 +71,10 @@ public:
// The following properties are calculated/set by the MissionController recalc methods
Q_PROPERTY(double altDifference READ altDifference WRITE setAltDifference NOTIFY altDifferenceChanged) ///< Change in altitude from previous waypoint
Q_PROPERTY(double altPercent READ altPercent WRITE setAltPercent NOTIFY altPercentChanged) ///< Percent of total altitude change in mission altitude
Q_PROPERTY(double azimuth READ azimuth WRITE setAzimuth NOTIFY azimuthChanged) ///< Azimuth to previous waypoint
Q_PROPERTY(double distance READ distance WRITE setDistance NOTIFY distanceChanged) ///< Distance to previous waypoint
Q_PROPERTY(double altDifference READ altDifference WRITE setAltDifference NOTIFY altDifferenceChanged) ///< Change in altitude from previous waypoint
Q_PROPERTY(double altPercent READ altPercent WRITE setAltPercent NOTIFY altPercentChanged) ///< Percent of total altitude change in mission altitude
Q_PROPERTY(double azimuth READ azimuth WRITE setAzimuth NOTIFY azimuthChanged) ///< Azimuth to previous waypoint
Q_PROPERTY(double distance READ distance WRITE setDistance NOTIFY distanceChanged) ///< Distance to previous waypoint
// Property accesors
......
......@@ -39,9 +39,10 @@ Rectangle {
property bool _controllerValid: missionController != undefined
property bool _manualUpload: QGroundControl.settingsManager.appSettings.automaticMissionUpload.rawValue == 0
property real _dataFontSize: ScreenTools.isMobile ? ScreenTools.smallFontPointSize : ScreenTools.defaultFontPointSize
property real _dataFontSize: ScreenTools.defaultFontPointSize
property real _largeValueWidth: ScreenTools.defaultFontPixelWidth * 8
property real _smallValueWidth: ScreenTools.defaultFontPixelWidth * 4
property real _mediumValueWidth: ScreenTools.defaultFontPixelWidth * 4
property real _smallValueWidth: ScreenTools.defaultFontPixelWidth * 3
property real _labelToValueSpacing: ScreenTools.defaultFontPixelWidth
property real _rowSpacing: ScreenTools.isMobile ? 1 : 0
property real _distance: _statusValid ? currentMissionItem.distance : NaN
......@@ -49,6 +50,7 @@ Rectangle {
property real _gradient: _statusValid && currentMissionItem.distance > 0 ? Math.atan(currentMissionItem.altDifference / currentMissionItem.distance) : NaN
property real _gradientPercent: isNaN(_gradient) ? NaN : _gradient * 100
property real _azimuth: _statusValid ? currentMissionItem.azimuth : NaN
property real _heading: _statusValid ? currentMissionItem.missionVehicleYaw : NaN
property real _missionDistance: _missionValid ? missionDistance : NaN
property real _missionMaxTelemetry: _missionValid ? missionMaxTelemetry : NaN
property real _missionTime: _missionValid ? missionTime : NaN
......@@ -57,8 +59,9 @@ Rectangle {
property string _distanceText: isNaN(_distance) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_distance).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _altDifferenceText: isNaN(_altDifference) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_altDifference).toFixed(1) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _gradientText: isNaN(_gradient) ? "-.-" : _gradientPercent.toFixed(0) + "%"
property string _gradientText: isNaN(_gradient) ? "-.-" : _gradientPercent.toFixed(0) + " %"
property string _azimuthText: isNaN(_azimuth) ? "-.-" : Math.round(_azimuth)
property string _headingText: isNaN(_azimuth) ? "-.-" : Math.round(_heading)
property string _missionDistanceText: isNaN(_missionDistance) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_missionDistance).toFixed(0) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _missionMaxTelemetryText: isNaN(_missionMaxTelemetry) ? "-.-" : QGroundControl.metersToAppSettingsDistanceUnits(_missionMaxTelemetry).toFixed(0) + " " + QGroundControl.appSettingsDistanceUnitsString
property string _batteryChangePointText: _batteryChangePoint < 0 ? "N/A" : _batteryChangePoint
......@@ -120,50 +123,55 @@ Rectangle {
GridLayout {
anchors.verticalCenter: parent.verticalCenter
columns: 5
columns: 8
rowSpacing: _rowSpacing
columnSpacing: _labelToValueSpacing
QGCLabel {
text: qsTr("Selected Waypoint")
Layout.columnSpan: 5
Layout.columnSpan: 8
font.pointSize: ScreenTools.smallFontPointSize
}
QGCLabel { text: qsTr("Distance:"); font.pointSize: _dataFontSize; }
QGCLabel { text: qsTr("Alt diff:"); font.pointSize: _dataFontSize; }
QGCLabel {
text: _distanceText
text: _altDifferenceText
font.pointSize: _dataFontSize
Layout.minimumWidth: _largeValueWidth
horizontalAlignment: Text.AlignRight
Layout.minimumWidth: _mediumValueWidth
}
Item { width: 1; height: 1 }
QGCLabel { text: qsTr("Gradient:"); font.pointSize: _dataFontSize; }
QGCLabel { text: qsTr("Azimuth:"); font.pointSize: _dataFontSize; }
QGCLabel {
text: _gradientText
text: _azimuthText
font.pointSize: _dataFontSize
Layout.minimumWidth: _smallValueWidth
horizontalAlignment: Text.AlignRight
}
QGCLabel { text: qsTr("Alt diff:"); font.pointSize: _dataFontSize; }
Item { width: 1; height: 1 }
QGCLabel { text: qsTr("Distance:"); font.pointSize: _dataFontSize; }
QGCLabel {
text: _altDifferenceText
text: _distanceText
font.pointSize: _dataFontSize
Layout.minimumWidth: _largeValueWidth
horizontalAlignment: Text.AlignRight
}
QGCLabel { text: qsTr("Gradient:"); font.pointSize: _dataFontSize; }
QGCLabel {
text: _gradientText
font.pointSize: _dataFontSize
Layout.minimumWidth: _mediumValueWidth
}
Item { width: 1; height: 1 }
QGCLabel { text: qsTr("Azimuth:"); font.pointSize: _dataFontSize; }
QGCLabel { text: qsTr("Heading:"); font.pointSize: _dataFontSize; }
QGCLabel {
text: _azimuthText
text: _headingText
font.pointSize: _dataFontSize
Layout.minimumWidth: _smallValueWidth
horizontalAlignment: Text.AlignRight
}
}
......@@ -184,7 +192,6 @@ Rectangle {
text: _missionDistanceText
font.pointSize: _dataFontSize
Layout.minimumWidth: _largeValueWidth
horizontalAlignment: Text.AlignRight
}
Item { width: 1; height: 1 }
......@@ -194,7 +201,6 @@ Rectangle {
text: _missionMaxTelemetryText
font.pointSize: _dataFontSize
Layout.minimumWidth: _largeValueWidth
horizontalAlignment: Text.AlignRight
}
QGCLabel { text: qsTr("Time:"); font.pointSize: _dataFontSize; }
......@@ -202,7 +208,6 @@ Rectangle {
text: getMissionTime()
font.pointSize: _dataFontSize
Layout.minimumWidth: _largeValueWidth
horizontalAlignment: Text.AlignRight
}
}
......@@ -222,8 +227,7 @@ Rectangle {
QGCLabel {
text: _batteriesRequiredText
font.pointSize: _dataFontSize
horizontalAlignment: Text.AlignRight
Layout.minimumWidth: _smallValueWidth
Layout.minimumWidth: _mediumValueWidth
}
Item { width: 1; height: 1 }
......@@ -232,8 +236,7 @@ Rectangle {
QGCLabel {
text: _batteryChangePointText
font.pointSize: _dataFontSize
horizontalAlignment: Text.AlignRight
Layout.minimumWidth: _smallValueWidth
Layout.minimumWidth: _mediumValueWidth
}
}
}
......@@ -245,7 +248,7 @@ Rectangle {
anchors.verticalCenter: parent.verticalCenter
text: missionController ? (missionController.dirty ? qsTr("Upload Required") : qsTr("Upload")) : ""
enabled: _activeVehicle
visible: _manualUpload
visible: _activeVehicle && _manualUpload
onClicked: missionController.upload()
PropertyAnimation on opacity {
......
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