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 PidWrapper.cpp Source File

PidWrapper.cpp

00001 #include "PidWrapper.h"
00002 
00003 PidWrapper::PidWrapper(){}
00004 
00005 PidWrapper::~PidWrapper(){}
00006 
00007 bool PidWrapper::initialise(PidParameter pidParameter, double inputMin, double inputMax, double outputMin, double outputMax, float updateTime)
00008 {
00009     _pid = new PID(pidParameter.p, pidParameter.i, pidParameter.d, updateTime);
00010     _pid->setInputLimits(inputMin, inputMax);
00011     _pid->setOutputLimits(outputMin, outputMax);
00012     _pid->setMode(AUTO_MODE);
00013     _pid->setSetPoint(0.0);
00014     _pid->setBias(0);
00015     
00016     DEBUG("PID wrapper initialised\r\n");
00017     return true; 
00018 }
00019 
00020 double PidWrapper::compute(double setPoint, double processValue)
00021 {
00022     _pid->setSetPoint(setPoint);
00023     _pid->setProcessValue(processValue);
00024     return _pid->compute();   
00025 }
00026 
00027 PidWrapper::PidParameter  PidWrapper::getPidParameters()
00028 {
00029     PidWrapper::PidParameter pidParameters;
00030     pidParameters.p = _pid->getPParam();    
00031     pidParameters.i = _pid->getIParam(); 
00032     pidParameters.d = _pid->getDParam(); 
00033     
00034     return pidParameters;
00035 }
00036 
00037 void PidWrapper::reset()
00038 {
00039     _pid->reset();
00040 }
00041 
00042 void PidWrapper::setPidParameters(PidWrapper::PidParameter pidParameters)
00043 {
00044     _pid->setTunings(pidParameters.p, pidParameters.i, pidParameters.d);
00045     DEBUG("P %1.8f, I %1.8f, D %1.8f\r\n", pidParameters.p, pidParameters.i, pidParameters.d);
00046 }
00047 
00048 void PidWrapper::setBias(float bias)
00049 {
00050     _pid->setBias(bias);
00051 }