Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

For calculating waypoint targets after the ground height sensor has been checked to see if the drone has landedduring Takeoff.

Code Block
languagecpp
_PathData LandingTakeoffManager::createLandingWaypointcreateTakeoffWaypoint(const SFOutput_t & input)
{
    // Use current Lat/long if origin not known
    if (landingLat == -1 and landingLong == -1) {
        landingLat = input.latitude;
        landingLong = input.longitude;
    }
    _PathData desiredWaypoint;

    desiredWaypoint.latitude = landingLat;
    desiredWaypoint.longitude = landingLong;
    desiredWaypoint.waypointType = LANDING_WAYPOINT;

    int curAltitude = input.altitude;

    desiredWaypoint.altitude = getAltitudeTargetgetTakeoffAltitudeTarget(curAltitude, groundHeight);

    return desiredWaypoint;
}

double LandingTakeoffManager::getAltitudeTargetgetTakeoffAltitudeTarget(double curAltitude, double targetAltitude)
{
    double waypointTarget;
    double droneHeighttargetDistance = (curAltitudetargetAltitude - targetAltitudecurAltitude);
    if (droneHeighttargetDistance < 1.0) {
        // TouchdownFinal Takeoff speed of 0.1 m/s, set as waypoint targets at PM Freq
        waypointTarget = curAltitude -+ (0.1 / PM_FREQ);
    } else {
        // Scale descentascent velocity based on 0.2 * heighttargetDistance (Eg. 0.4 m/s at 2m away)
        // Use altitude waypoint targets geing calculated at PM Freq
        waypointTarget = droneHeight * (01.2 / PM_FREQ);
    }
    return waypointTarget;
}

...