Joseph Roberts / Mbed 2 deprecated Quadcopter_mk2

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

Revision:
0:c6a85bb2a827
Child:
2:969dfa4f2436
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FlightController/RateController/RateController.cpp	Wed Mar 04 18:50:37 2015 +0000
@@ -0,0 +1,39 @@
+#include "RateController.h"
+
+RateController::RateController(){}
+
+RateController::~RateController(){}
+
+bool RateController::initialise(Sensors& sensors, NavigationController& navigationController)
+{
+    _sensors = sensors;
+    _navigationController = navigationController;
+    
+    ConfigFileWrapper configFileWrapper = new ConfigFileWrapper();
+    configFileWrapper.initialise();
+    
+    _yawRatePidController.initialise(configFileWrapper.getYawRateParameters, IMU_YAW_RATE_MIN, IMU_YAW_RATE_MAX, RATE_PID_CONTROLLER_OUTPUT_MIN, RATE_PID_CONTROLLER_OUTPUT_MAX);
+    _pitchRatePidController.initialise(configFileWrapper.getPitchRateParameters, IMU_PITCH_RATE_MIN, IMU_PITCH_RATE_MAX, RATE_PID_CONTROLLER_OUTPUT_MIN, RATE_PID_CONTROLLER_OUTPUT_MAX);
+    _rollRatePidController.initialise(configFileWrapper.getRollRateParameters, IMU_ROLL_RATE_MIN, IMU_ROLL_RATE_MAX, RATE_PID_CONTROLLER_OUTPUT_MIN, RATE_PID_CONTROLLER_OUTPUT_MAX);
+
+    DEBUG("Rate controller initialised");
+    return true; 
+}
+
+PidWrapper::PidOutputs RateController::compute()
+{
+    //Update rate PID process value with gyro rate
+    _yawRatePIDController->setProcessValue(_gyroRate[0]);
+    _pitchRatePIDController->setProcessValue(_gyroRate[1]);
+    _rollRatePIDController->setProcessValue(_gyroRate[2]);
+    
+    //Update rate PID set point with desired rate from RC
+    _yawRatePIDController->setSetPoint(_rcMappedCommands[0]);
+    _pitchRatePIDController->setSetPoint(_rcMappedCommands[1]);
+    _rollRatePIDController->setSetPoint(_rcMappedCommands[2]);
+    
+    //Compute rate PID outputs
+    _ratePIDControllerOutputs[0] = _yawRatePIDController->compute();
+    _ratePIDControllerOutputs[1] = _pitchRatePIDController->compute();
+    _ratePIDControllerOutputs[2] = _rollRatePIDController->compute();
+}
\ No newline at end of file