Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Allan Su + Ben Carnes

We are looking to research if Gordon’s vector implementation would still be valid, or should we come up with completely new code for Path Manager zp 3.5, Assuming that the input comes from FreeRTOS queue, and show our approach.

  • We will be assuming that the inputs will be FreeRTOS queues.

Previous research we could refer, and possibly extend from:

Landing Procedure

Landing Control

Takeoff Procedure

Takeoff Control

Current Method

-Using vectors and way points

-The current vector implementation of the drone relies on ideal conditions for takeoff.

-Does not seem to use strong feedback loop to compare current position to goal, does not respond dynamically

PID Control Loop

We can better handle a changing environment if we add in some PID concepts into the implementation. We can adjust gradually the trajectories and get smoother acceleration and deceleration during takeoff or landing. This can also improve deviations, undershoots/overshoots. Given a set of waypoints assumed to be in a queue, we compare current position to the next waypoint. The error between the two position can be used to make corrective changes.

Model Predicative Control

Existing Information:

Landing Procedure

Takeoff Procedure

Functions

double getTakeoffAltitudeTarget(double currentAltitude);

When first called set the current height as ground, then return the takeoff altitude target (ground height + TAKEOFF_TARGET).

double getLandingAltitudeTarget(double currentAltitude);

This function returns the ground height set during takeoff and uses it as the target landing altitude.

AM::AttitudeManagerInput createLandingWaypoint(const LOS::LosSFData & input);

Calculates the waypoints that the drone should follow during landing. Missing horizontal components as of now.

AM::AttitudeManagerInput createTakeoffWaypoint(const LOS::LosSFData & input);

Returns the waypoints that should be followed for takeoff.

double getSpeedTarget(double currentAltitude, double rangeConstant);

Return desired climb speed for both landing and takeoff.

double getRangeConstant(double midpointAltitude);

Returns range constant to calculate velocity.

Question : Does PM output speed to AM? Or does AM computes the speed

Should still PM generate waypoints for landing/takeoff?

Useful Documents to look over:

https://liu.diva-portal.org/smash/get/diva2:1055556/FULLTEXT01.pdf

  • No labels