diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index a5054afe4c3e28b53182af839258c22ae30c946e..da5e9bb6291af87f287268d3b838c4f97a28afea 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1524,7 +1524,9 @@ void MissionController::_setPlannedHomePositionFromFirstCoordinate(void) VisualMissionItem* item = _visualItems->value(i); if (item->specifiesCoordinate()) { - _settingsItem->setCoordinate(item->coordinate().atDistanceAndAzimuth(30, 0)); + QGeoCoordinate plannedHomeCoord = item->coordinate().atDistanceAndAzimuth(30, 0); + plannedHomeCoord.setAltitude(0); + _settingsItem->setCoordinate(plannedHomeCoord); } } } diff --git a/src/MissionManager/MissionSettingsItem.cc b/src/MissionManager/MissionSettingsItem.cc index af784e7657642303936efb28747395eefde5e52e..912e67fc5737efac2db58528aeff4f49376ff7f8 100644 --- a/src/MissionManager/MissionSettingsItem.cc +++ b/src/MissionManager/MissionSettingsItem.cc @@ -231,7 +231,7 @@ void MissionSettingsItem::setHomePositionFromVehicle(const QGeoCoordinate& coord void MissionSettingsItem::setCoordinate(const QGeoCoordinate& coordinate) { if (_plannedHomePositionCoordinate != coordinate) { - // ArduPilot tends to send crap home positions at initial vehicel boot, discard them + // ArduPilot tends to send crap home positions at initial vehicle boot, discard them if (coordinate.isValid() && (coordinate.latitude() != 0 || coordinate.longitude() != 0)) { _plannedHomePositionCoordinate = coordinate; emit coordinateChanged(coordinate); @@ -269,7 +269,6 @@ void MissionSettingsItem::_updateAltitudeInCoordinate(QVariant value) double newAltitude = value.toDouble(); if (!qFuzzyCompare(_plannedHomePositionCoordinate.altitude(), newAltitude)) { - _plannedHomePositionCoordinate.setAltitude(newAltitude); emit coordinateChanged(_plannedHomePositionCoordinate); emit exitCoordinateChanged(_plannedHomePositionCoordinate); @@ -295,7 +294,7 @@ void MissionSettingsItem::setMissionEndRTL(bool missionEndRTL) void MissionSettingsItem::_setHomeAltFromTerrain(double terrainAltitude) { - if (!_plannedHomePositionFromVehicle) { + if (!_plannedHomePositionFromVehicle && !qIsNaN(terrainAltitude)) { _plannedHomePositionAltitudeFact.setRawValue(terrainAltitude); } }