diff --git a/src/MissionManager/CorridorScanComplexItem.cc b/src/MissionManager/CorridorScanComplexItem.cc index a7b0527bfee1c44f3a9f296eae95e0044efb0b69..73836271ebe33788ca2cff3e898e263f74138e58 100644 --- a/src/MissionManager/CorridorScanComplexItem.cc +++ b/src/MissionManager/CorridorScanComplexItem.cc @@ -353,7 +353,7 @@ CorridorScanComplexItem::ReadyForSaveState CorridorScanComplexItem::readyForSave double CorridorScanComplexItem::timeBetweenShots(void) { - return _cruiseSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintFrontal()->rawValue().toDouble() / _cruiseSpeed; + return _vehicleSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintFrontal()->rawValue().toDouble() / _vehicleSpeed; } double CorridorScanComplexItem::_calcTransectSpacing(void) const diff --git a/src/MissionManager/CorridorScanComplexItemTest.cc b/src/MissionManager/CorridorScanComplexItemTest.cc index de1c7d189285f8228f100ea1e2ea5a9f278de745..cf85ddc17595802a5f1e21345cb05c4c1faae404 100644 --- a/src/MissionManager/CorridorScanComplexItemTest.cc +++ b/src/MissionManager/CorridorScanComplexItemTest.cc @@ -32,11 +32,6 @@ void CorridorScanComplexItemTest::init(void) int expectedTransectCount = _expectedTransectCount; QCOMPARE(_corridorItem->_transectCount(), expectedTransectCount); - // vehicleSpeed need for terrain calcs - MissionController::MissionFlightStatus_t missionFlightStatus; - missionFlightStatus.vehicleSpeed = 5; - _corridorItem->setMissionFlightStatus(missionFlightStatus); - _corridorItem->setDirty(false); _rgCorridorPolygonSignals[corridorPolygonPathChangedIndex] = SIGNAL(pathChanged()); diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 4a25e9593a77af9fdd9581476d08986c7e5f0fe9..ff341049420790ba83a202a18f1e764a5cdb912e 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -331,7 +331,6 @@ VisualMissionItem* MissionController::_insertSimpleMissionItemWorker(QGeoCoordin } } } - newItem->setMissionFlightStatus(_missionFlightStatus); if (visualItemIndex == -1) { _visualItems->append(newItem); } else { @@ -372,7 +371,6 @@ VisualMissionItem* MissionController::insertTakeoffItem(QGeoCoordinate /*coordin newItem->setAltitudeMode(static_cast(prevAltitudeMode)); } } - newItem->setMissionFlightStatus(_missionFlightStatus); if (visualItemIndex == -1) { _visualItems->append(newItem); } else { diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index 473c9b17dd5da04b48ac21023a276dfbbb2a341a..7df122531e7348070282179ca117bfcc958b9f4b 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -44,7 +44,7 @@ public: MissionController(PlanMasterController* masterController, QObject* parent = nullptr); ~MissionController(); - typedef struct _MissionFlightStatus_t { + typedef struct { double maxTelemetryDistance; double totalDistance; double totalTime; diff --git a/src/MissionManager/SimpleMissionItem.cc b/src/MissionManager/SimpleMissionItem.cc index 37bfd1fbda9313884e187d353ff8330d74df793e..922109161eb2ef40d9d19045c5032f65cf0267a8 100644 --- a/src/MissionManager/SimpleMissionItem.cc +++ b/src/MissionManager/SimpleMissionItem.cc @@ -935,7 +935,7 @@ void SimpleMissionItem::applyNewAltitude(double newAltitude) void SimpleMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) { - // If user has not already set speed/gimbal, set defaults from previous items. + // If speed and/or gimbal are not specifically set on this item. Then use the flight status values as initial defaults should a user turn them on. VisualMissionItem::setMissionFlightStatus(missionFlightStatus); if (_speedSection->available() && !_speedSection->specifyFlightSpeed() && !qFuzzyCompare(_speedSection->flightSpeed()->rawValue().toDouble(), missionFlightStatus.vehicleSpeed)) { _speedSection->flightSpeed()->setRawValue(missionFlightStatus.vehicleSpeed); diff --git a/src/MissionManager/StructureScanComplexItem.cc b/src/MissionManager/StructureScanComplexItem.cc index 8f35b48d421e47bb96b9c1f89e432437fce2e07c..2e548a72c2f8779c6d7abdf474868b42524a0bc9 100644 --- a/src/MissionManager/StructureScanComplexItem.cc +++ b/src/MissionManager/StructureScanComplexItem.cc @@ -474,8 +474,8 @@ int StructureScanComplexItem::cameraShots(void) const void StructureScanComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) { ComplexMissionItem::setMissionFlightStatus(missionFlightStatus); - if (!qFuzzyCompare(_cruiseSpeed, missionFlightStatus.vehicleSpeed)) { - _cruiseSpeed = missionFlightStatus.vehicleSpeed; + if (!qFuzzyCompare(_vehicleSpeed, missionFlightStatus.vehicleSpeed)) { + _vehicleSpeed = missionFlightStatus.vehicleSpeed; emit timeBetweenShotsChanged(); } } @@ -499,7 +499,7 @@ void StructureScanComplexItem::_polygonDirtyChanged(bool dirty) double StructureScanComplexItem::timeBetweenShots(void) { - return _cruiseSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintSide()->rawValue().toDouble() / _cruiseSpeed; + return _vehicleSpeed == 0 ? 0 : _cameraCalc.adjustedFootprintSide()->rawValue().toDouble() / _vehicleSpeed; } QGeoCoordinate StructureScanComplexItem::coordinate(void) const diff --git a/src/MissionManager/StructureScanComplexItem.h b/src/MissionManager/StructureScanComplexItem.h index 9a6deb9a12913fe8fc0bef11c1668ed6ae3dfdd7..0e83616c4199fcfddfc02da17ab49fee9434d216 100644 --- a/src/MissionManager/StructureScanComplexItem.h +++ b/src/MissionManager/StructureScanComplexItem.h @@ -151,7 +151,7 @@ private: double _scanDistance; int _cameraShots; double _timeBetweenShots; - double _cruiseSpeed; + double _vehicleSpeed; CameraCalc _cameraCalc; diff --git a/src/MissionManager/SurveyComplexItem.cc b/src/MissionManager/SurveyComplexItem.cc index f1c6461ae1ab0fdc416b9b6e694e1a9c28735eae..e2d2d0e7c5c63845e310378318c339f51057a0fa 100644 --- a/src/MissionManager/SurveyComplexItem.cc +++ b/src/MissionManager/SurveyComplexItem.cc @@ -1416,7 +1416,7 @@ void SurveyComplexItem::rotateEntryPoint(void) double SurveyComplexItem::timeBetweenShots(void) { - return _cruiseSpeed == 0 ? 0 : triggerDistance() / _cruiseSpeed; + return _vehicleSpeed == 0 ? 0 : triggerDistance() / _vehicleSpeed; } double SurveyComplexItem::additionalTimeDelay (void) const diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc index 313b7e689ea8f1a9ed676533485d582083d29d71..35b40ad2d8245ff95953da0e59362f5dc3b615f2 100644 --- a/src/MissionManager/TransectStyleComplexItem.cc +++ b/src/MissionManager/TransectStyleComplexItem.cc @@ -327,8 +327,10 @@ double TransectStyleComplexItem::greatestDistanceTo(const QGeoCoordinate &other) void TransectStyleComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) { ComplexMissionItem::setMissionFlightStatus(missionFlightStatus); - if (!qFuzzyCompare(_cruiseSpeed, missionFlightStatus.vehicleSpeed)) { - _cruiseSpeed = missionFlightStatus.vehicleSpeed; + if (!qFuzzyCompare(_vehicleSpeed, missionFlightStatus.vehicleSpeed)) { + _vehicleSpeed = missionFlightStatus.vehicleSpeed; + // Vehicle speed change affects max climb/descent rates calcs for terrain so we need to re-adjust + _rebuildTransects(); emit timeBetweenShotsChanged(); } } @@ -707,9 +709,9 @@ int TransectStyleComplexItem::_maxPathHeight(const TerrainPathQuery::PathHeightI void TransectStyleComplexItem::_adjustForMaxRates(QList& transect) { - double maxClimbRate = _terrainAdjustMaxClimbRateFact.rawValue().toDouble(); - double maxDescentRate = _terrainAdjustMaxDescentRateFact.rawValue().toDouble(); - double flightSpeed = _missionFlightStatus.vehicleSpeed; + double maxClimbRate = _terrainAdjustMaxClimbRateFact.rawValue().toDouble(); + double maxDescentRate = _terrainAdjustMaxDescentRateFact.rawValue().toDouble(); + double flightSpeed = _vehicleSpeed; if (qIsNaN(flightSpeed) || (maxClimbRate == 0 && maxDescentRate == 0)) { if (qIsNaN(flightSpeed)) { diff --git a/src/MissionManager/TransectStyleComplexItem.h b/src/MissionManager/TransectStyleComplexItem.h index 09435bb30dceea853772d50f558045a585fdbe38..9882151563b434063b0393aca27b3632e592cae3 100644 --- a/src/MissionManager/TransectStyleComplexItem.h +++ b/src/MissionManager/TransectStyleComplexItem.h @@ -185,7 +185,7 @@ protected: double _complexDistance = qQNaN(); int _cameraShots = 0; double _timeBetweenShots = 0; - double _cruiseSpeed = 0; + double _vehicleSpeed = 5; CameraCalc _cameraCalc; bool _followTerrain = false; double _minAMSLAltitude = qQNaN(); diff --git a/src/MissionManager/VisualMissionItem.cc b/src/MissionManager/VisualMissionItem.cc index 0895cc7bd2025b0b46e7d35ed91b83e06153e6e9..1913e449316dec051fb8d77acf5364dcd11f8809 100644 --- a/src/MissionManager/VisualMissionItem.cc +++ b/src/MissionManager/VisualMissionItem.cc @@ -152,12 +152,11 @@ void VisualMissionItem::setAzimuth(double azimuth) void VisualMissionItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus) { - _missionFlightStatus = missionFlightStatus; - if (qIsNaN(_missionFlightStatus.gimbalYaw) && qIsNaN(_missionGimbalYaw)) { + if (qIsNaN(missionFlightStatus.gimbalYaw) && qIsNaN(_missionGimbalYaw)) { return; } - if (!qFuzzyCompare(_missionFlightStatus.gimbalYaw, _missionGimbalYaw)) { - _missionGimbalYaw = _missionFlightStatus.gimbalYaw; + if (!qFuzzyCompare(missionFlightStatus.gimbalYaw, _missionGimbalYaw)) { + _missionGimbalYaw = missionFlightStatus.gimbalYaw; emit missionGimbalYawChanged(_missionGimbalYaw); } } diff --git a/src/MissionManager/VisualMissionItem.h b/src/MissionManager/VisualMissionItem.h index ce4c43654b3af078ffd5825489b5b38b29d92f9f..93f32d17113aac9510e4d394ac8cbb8f04db827d 100644 --- a/src/MissionManager/VisualMissionItem.h +++ b/src/MissionManager/VisualMissionItem.h @@ -271,8 +271,6 @@ protected: VisualMissionItem* _parentItem = nullptr; QGCGeoBoundingCube _boundingCube; ///< The bounding "cube" of this element. - MissionController::MissionFlightStatus_t _missionFlightStatus; - /// This is used to reference any subsequent mission items which do not specify a coordinate. QmlObjectListModel _childItems;