New version of quadcopter software written to OO principles
Dependencies: mbed MODSERIAL filter mbed-rtos ConfigFile PID PPM FreeIMU_external_magnetometer TinyGPS
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
Generated on Fri Jul 15 2022 00:21:58 by 1.7.2