
Refactoring and other updates
Dependencies: BLE_API mbed nRF51822
Fork of nRF51822_SimpleChat by
RSTController.cpp
- Committer:
- carbune92
- Date:
- 2017-05-10
- Revision:
- 7:806b08205b25
- Parent:
- 3:b6e4e5529a52
File content as of revision 7:806b08205b25:
#include "RSTController.hpp" RSTController::RSTController() { R = 0; S = 0; T = 0; } void RSTController::calculateCmd() { static float last_references[ControllerParams::MAX_ORD]; static float last_outputs[ControllerParams::MAX_ORD]; static float last_commands[ControllerParams::MAX_ORD]; float R_component; float S_component; float T_component; float outputPWM; for(int i=0;i<(ordR+1);i++) { last_references[0] = this->ref; R_component = R_component + R[i]*last_references[i]; } for(int i=0;i<ordR;i++) { last_references[i+1] = last_references[i]; } for(int i=0;i<(ordT+1);i++) { last_outputs[0] = this->out; T_component = T_component + T[i]*last_outputs[i]; } for(int i=0;i<ordT;i++) { last_outputs[i+1] = last_outputs[i]; } for(int i=1;i<(ordS+1);i++) { S_component = S_component + last_commands[i]*S[i]; } outputPWM = T_component - R_component - S_component; for(int i=0;i<ordS;i++) { last_commands[i+1] = last_commands[i]; } cmd = outputPWM; } void RSTController::updateParams(ControllerParams &cp) { ordR = cp.ordR; ordS = cp.ordS; ordT = cp.ordT; R = new float[ordR+1]; S = new float[ordS+1]; T = new float[ordT+1]; int i; for (i=0; i<ordR+1; i++) R[i] = cp.R[i]; for (i=0; i<ordS+1; i++) S[i] = cp.S[i]; for (i=0; i<ordT+1; i++) T[i] = cp.T[i]; } RSTController& RSTController::operator=(const RSTController& rst) { this->ordR = rst.ordR; this->ordS = rst.ordS; this->ordT = rst.ordT; int i; for(i = 0; i<ordR+1; i++) this->R[i] = rst.R[i]; for(i = 0; i<ordS+1; i++) this->S[i] = rst.S[i]; for(i = 0; i<ordT+1; i++) this->T[i] = rst.T[i]; return *this; } RSTController::~RSTController() { delete [] R; delete [] S; delete [] T; }