New version of quadcopter software written to OO principles

Dependencies:   mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers NavigationController.h Source File

NavigationController.h

00001 #ifndef NavigationController_H
00002 #define NavigationController_H
00003 
00004 #include "mbed.h"
00005 #include "Global.h"
00006 #include "Status.h"
00007 #include "rtos.h"
00008 #include "Rc.h"
00009 #include "Sensors.h"
00010 #include "AltitudeController.h"
00011 #include "ConfigFileWrapper.h"
00012 
00013 class NavigationController                
00014 {
00015   public:             
00016     NavigationController(Status& status, Sensors& sensors, Rc& rc, ConfigFileWrapper& configFileWrapper);    
00017     ~NavigationController();
00018     
00019     struct SetPoint
00020     {
00021        double yaw;
00022        double pitch;
00023        double roll;
00024        double throttle;
00025        double yawTarget;
00026        double yawDifference;
00027        double climbRate;
00028        double targetAltitude;
00029     };
00030     
00031     SetPoint getSetPoint();
00032     void updateYawTarget();
00033     void updateAltitudeTarget();
00034     PidWrapper::NavigationControllerPidParameters getPidParameters();
00035     void setAltitudeRatePidParameters(PidWrapper::PidParameter pidParameters);
00036     void setAltitudeStabPidParameters(PidWrapper::PidParameter pidParameters);
00037     
00038   private:
00039     static void threadStarter(void const *p);
00040     void threadWorker();
00041     double map(double input, double inputMin, double inputMax, double outputMin, double outputMax);   
00042     
00043     Thread* _thread;
00044     Status& _status;
00045     Sensors& _sensors;
00046     Rc& _rc;
00047     ConfigFileWrapper& _configFileWrapper;
00048     void saveSettings();
00049     SetPoint _setPoints;
00050     AltitudeController* _altitudeController;
00051     Status::State _state;
00052     Status::NavigationMode _navigationMode;
00053     Rc::MappedRc _mappedRc;
00054     Imu::Angle _angle;
00055     Sensors::Altitude _altitude;
00056     double _altitudeHoldPidOutput;
00057 };
00058 
00059 #endif