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