Browse Source

Fix bugs relating to incorrect complex item min/max amsl alt (#9281)

QGC4.4
Don Gagne 4 years ago committed by GitHub
parent
commit
23524e5ca4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/MissionManager/ComplexMissionItem.h
  2. 6
      src/MissionManager/MissionSettingsItem.cc
  3. 28
      src/MissionManager/StructureScanComplexItem.cc
  4. 2
      src/MissionManager/StructureScanComplexItem.h
  5. 45
      src/MissionManager/TransectStyleComplexItem.cc
  6. 4
      src/MissionManager/TransectStyleComplexItem.h

4
src/MissionManager/ComplexMissionItem.h

@ -107,8 +107,8 @@ signals: @@ -107,8 +107,8 @@ signals:
void greatestDistanceToChanged (void);
void presetNamesChanged (void);
void isIncompleteChanged (void);
void minAMSLAltitudeChanged (double minAMSLAltitude);
void maxAMSLAltitudeChanged (double maxAMSLAltitude);
void minAMSLAltitudeChanged (void);
void maxAMSLAltitudeChanged (void);
void terrainCollisionChanged (bool terrainCollision);
protected slots:

6
src/MissionManager/MissionSettingsItem.cc

@ -114,12 +114,8 @@ void MissionSettingsItem::setSequenceNumber(int sequenceNumber) @@ -114,12 +114,8 @@ void MissionSettingsItem::setSequenceNumber(int sequenceNumber)
}
}
bool MissionSettingsItem::load(const QJsonObject& complexObject, int sequenceNumber, QString& errorString)
bool MissionSettingsItem::load(const QJsonObject& /*complexObject*/, int /*sequenceNumber*/, QString& /*errorString*/)
{
Q_UNUSED(complexObject);
Q_UNUSED(sequenceNumber);
Q_UNUSED(errorString);
return true;
}

28
src/MissionManager/StructureScanComplexItem.cc

@ -99,14 +99,14 @@ StructureScanComplexItem::StructureScanComplexItem(PlanMasterController* masterC @@ -99,14 +99,14 @@ StructureScanComplexItem::StructureScanComplexItem(PlanMasterController* masterC
connect(&_entranceAltFact, &Fact::valueChanged, this, &StructureScanComplexItem::_amslEntryAltChanged);
connect(this, &StructureScanComplexItem::amslEntryAltChanged, this, &StructureScanComplexItem::amslExitAltChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &StructureScanComplexItem::_minAMSLAltChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &StructureScanComplexItem::_maxAMSLAltChanged);
connect(this, &StructureScanComplexItem::topFlightAltChanged, this, &StructureScanComplexItem::_minAMSLAltChanged);
connect(this, &StructureScanComplexItem::topFlightAltChanged, this, &StructureScanComplexItem::_maxAMSLAltChanged);
connect(this, &StructureScanComplexItem::bottomFlightAltChanged, this, &StructureScanComplexItem::_minAMSLAltChanged);
connect(this, &StructureScanComplexItem::bottomFlightAltChanged, this, &StructureScanComplexItem::_maxAMSLAltChanged);
connect(&_entranceAltFact, &Fact::valueChanged, this, &StructureScanComplexItem::_minAMSLAltChanged);
connect(&_entranceAltFact, &Fact::valueChanged, this, &StructureScanComplexItem::_maxAMSLAltChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &StructureScanComplexItem::minAMSLAltitudeChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &StructureScanComplexItem::maxAMSLAltitudeChanged);
connect(this, &StructureScanComplexItem::topFlightAltChanged, this, &StructureScanComplexItem::minAMSLAltitudeChanged);
connect(this, &StructureScanComplexItem::topFlightAltChanged, this, &StructureScanComplexItem::maxAMSLAltitudeChanged);
connect(this, &StructureScanComplexItem::bottomFlightAltChanged, this, &StructureScanComplexItem::minAMSLAltitudeChanged);
connect(this, &StructureScanComplexItem::bottomFlightAltChanged, this, &StructureScanComplexItem::maxAMSLAltitudeChanged);
connect(&_entranceAltFact, &Fact::valueChanged, this, &StructureScanComplexItem::minAMSLAltitudeChanged);
connect(&_entranceAltFact, &Fact::valueChanged, this, &StructureScanComplexItem::maxAMSLAltitudeChanged);
connect(&_flightPolygon, &QGCMapPolygon::pathChanged, this, &StructureScanComplexItem::_updateFlightPathSegmentsSignal);
connect(&_startFromTopFact, &Fact::valueChanged, this, &StructureScanComplexItem::_updateFlightPathSegmentsSignal);
@ -269,7 +269,7 @@ bool StructureScanComplexItem::load(const QJsonObject& complexObject, int sequen @@ -269,7 +269,7 @@ bool StructureScanComplexItem::load(const QJsonObject& complexObject, int sequen
void StructureScanComplexItem::_flightPathChanged(void)
{
// Calc bounding cube
// Calc bounding cubetopFlightAlt
double north = 0.0;
double south = 180.0;
double east = 0.0;
@ -764,16 +764,6 @@ double StructureScanComplexItem::maxAMSLAltitude(void) const @@ -764,16 +764,6 @@ double StructureScanComplexItem::maxAMSLAltitude(void) const
return maxAlt + _missionController->plannedHomePosition().altitude();
}
void StructureScanComplexItem::_minAMSLAltChanged(void)
{
emit minAMSLAltitudeChanged(minAMSLAltitude());
}
void StructureScanComplexItem::_maxAMSLAltChanged(void)
{
emit maxAMSLAltitudeChanged(maxAMSLAltitude());
}
void StructureScanComplexItem::_segmentTerrainCollisionChanged(bool terrainCollision)
{
ComplexMissionItem::_segmentTerrainCollisionChanged(terrainCollision);

2
src/MissionManager/StructureScanComplexItem.h

@ -134,8 +134,6 @@ private slots: @@ -134,8 +134,6 @@ private slots:
void _recalcScanDistance (void);
void _updateWizardMode (void);
void _updateFlightPathSegmentsDontCallDirectly (void);
void _minAMSLAltChanged (void);
void _maxAMSLAltChanged (void);
private:
void _setCameraShots (int cameraShots);

45
src/MissionManager/TransectStyleComplexItem.cc

@ -118,6 +118,13 @@ TransectStyleComplexItem::TransectStyleComplexItem(PlanMasterController* masterC @@ -118,6 +118,13 @@ TransectStyleComplexItem::TransectStyleComplexItem(PlanMasterController* masterC
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &TransectStyleComplexItem::_amslEntryAltChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &TransectStyleComplexItem::_amslExitAltChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &TransectStyleComplexItem::minAMSLAltitudeChanged);
connect(_missionController, &MissionController::plannedHomePositionChanged, this, &TransectStyleComplexItem::maxAMSLAltitudeChanged);
connect(_cameraCalc.distanceToSurface(), &Fact::rawValueChanged, this, &TransectStyleComplexItem::minAMSLAltitudeChanged);
connect(_cameraCalc.distanceToSurface(), &Fact::rawValueChanged, this, &TransectStyleComplexItem::maxAMSLAltitudeChanged);
connect(&_cameraCalc, &CameraCalc::distanceToSurfaceRelativeChanged, this, &TransectStyleComplexItem::minAMSLAltitudeChanged);
connect(&_cameraCalc, &CameraCalc::distanceToSurfaceRelativeChanged, this, &TransectStyleComplexItem::maxAMSLAltitudeChanged);
connect(&_surveyAreaPolygon, &QGCMapPolygon::isValidChanged, this, &TransectStyleComplexItem::readyForSaveStateChanged);
setDirty(false);
@ -305,13 +312,11 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, bool forP @@ -305,13 +312,11 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, bool forP
}
}
}
} else if (!forPresets) {
_minAMSLAltitude = _maxAMSLAltitude = _cameraCalc.distanceToSurface()->rawValue().toDouble() + (_cameraCalc.distanceToSurfaceRelative() ? _missionController->plannedHomePosition().altitude() : 0);
}
if (!forPresets) {
emit minAMSLAltitudeChanged(_minAMSLAltitude);
emit maxAMSLAltitudeChanged(_maxAMSLAltitude);
emit minAMSLAltitudeChanged();
emit maxAMSLAltitudeChanged();
_amslEntryAltChanged();
_amslExitAltChanged();
emit _updateFlightPathSegmentsSignal();
@ -395,16 +400,14 @@ void TransectStyleComplexItem::_rebuildTransects(void) @@ -395,16 +400,14 @@ void TransectStyleComplexItem::_rebuildTransects(void)
_rebuildTransectsPhase1();
_minAMSLAltitude = _maxAMSLAltitude = qQNaN();
if (_followTerrain) {
// Query the terrain data. Once available terrain heights will be calculated
_queryTransectsPathHeightInfo();
// We won't know min/max till were done
_minAMSLAltitude = _maxAMSLAltitude = qQNaN();
} else {
// Not following terrain so we can build the flight path now
_buildRawFlightPath();
double requestedAltitude = _cameraCalc.distanceToSurface()->rawValue().toDouble();
_minAMSLAltitude = _maxAMSLAltitude = requestedAltitude + (_cameraCalc.distanceToSurfaceRelative() ? _missionController->plannedHomePosition().altitude() : 0);
}
// Calc bounding cube
@ -452,8 +455,8 @@ void TransectStyleComplexItem::_rebuildTransects(void) @@ -452,8 +455,8 @@ void TransectStyleComplexItem::_rebuildTransects(void)
emit timeBetweenShotsChanged();
emit additionalTimeDelayChanged();
emit minAMSLAltitudeChanged(_minAMSLAltitude);
emit maxAMSLAltitudeChanged(_maxAMSLAltitude);
emit minAMSLAltitudeChanged();
emit maxAMSLAltitudeChanged();
emit _updateFlightPathSegmentsSignal();
_amslEntryAltChanged();
@ -635,8 +638,8 @@ void TransectStyleComplexItem::_adjustTransectsForTerrain(void) @@ -635,8 +638,8 @@ void TransectStyleComplexItem::_adjustTransectsForTerrain(void)
_minAMSLAltitude = std::fmin(_minAMSLAltitude, coordInfo.coord.altitude());
_maxAMSLAltitude = std::fmax(_maxAMSLAltitude, coordInfo.coord.altitude());
}
emit minAMSLAltitudeChanged(_minAMSLAltitude);
emit maxAMSLAltitudeChanged(_maxAMSLAltitude);
emit minAMSLAltitudeChanged();
emit maxAMSLAltitudeChanged();
}
}
@ -1216,3 +1219,21 @@ void TransectStyleComplexItem::applyNewAltitude(double newAltitude) @@ -1216,3 +1219,21 @@ void TransectStyleComplexItem::applyNewAltitude(double newAltitude)
_cameraCalc.distanceToSurface()->setRawValue(newAltitude);
_cameraCalc.setDistanceToSurfaceRelative(true);
}
double TransectStyleComplexItem::minAMSLAltitude(void) const
{
if (_followTerrain) {
return _minAMSLAltitude;
} else {
return _cameraCalc.distanceToSurface()->rawValue().toDouble() + (_cameraCalc.distanceToSurfaceRelative() ? _missionController->plannedHomePosition().altitude() : 0);
}
}
double TransectStyleComplexItem::maxAMSLAltitude(void) const
{
if (_followTerrain) {
return _maxAMSLAltitude;
} else {
return _cameraCalc.distanceToSurface()->rawValue().toDouble() + (_cameraCalc.distanceToSurfaceRelative() ? _missionController->plannedHomePosition().altitude() : 0);
}
}

4
src/MissionManager/TransectStyleComplexItem.h

@ -111,8 +111,8 @@ public: @@ -111,8 +111,8 @@ public:
void setSequenceNumber (int sequenceNumber) final;
double amslEntryAlt (void) const final;
double amslExitAlt (void) const final;
double minAMSLAltitude (void) const final { return _minAMSLAltitude; }
double maxAMSLAltitude (void) const final { return _maxAMSLAltitude; }
double minAMSLAltitude (void) const final;
double maxAMSLAltitude (void) const final;
static const char* turnAroundDistanceName;
static const char* turnAroundDistanceMultiRotorName;

Loading…
Cancel
Save