00001 /* 00002 * PositionControl.hpp 00003 * 00004 * Created on: Oct 27, 2011 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef POSITIONCONTROL_HPP_ 00009 #define POSITIONCONTROL_HPP_ 00010 00011 #include <telekyb_defines/telekyb_defines.hpp> 00012 #include <telekyb_base/Options.hpp> 00013 #include <telekyb_base/Time.hpp> 00014 00015 #include <tk_ctrlalgo/PosCtrlDefines.hpp> 00016 #include <telekyb_base/Messages.hpp> 00017 00018 namespace TELEKYB_NAMESPACE { 00019 00020 class PositionControlOptions : public OptionContainer { 00021 public: 00022 Option<double>* tPropGain; 00023 Option<double>* tDerivGain; 00024 Option<double>* tIntegGain; 00025 00026 Option<double>* tDerGainVelMode; 00027 00028 Option<double>* tZPropGain; 00029 Option<double>* tZDerivGain; 00030 00031 Option<double>* tSatIntTerm; 00032 00033 Option<double>* tMinThrust; 00034 00035 Option<double>* tMaxRollSin; 00036 Option<double>* tMaxPitchSin; 00037 00038 //Option<double>* tMaxVelInVelMode; 00039 00040 Option<double>* tGravity; 00041 00042 PositionControlOptions(); 00043 }; 00044 00045 class PositionControl { 00046 private: 00047 PositionControlOptions options; 00048 00049 //double mass; 00050 double xIntErr, yIntErr; 00051 00052 //double gravity; 00053 00054 Timer integTimer; 00055 00056 public: 00057 // gravity is provided by 00058 PositionControl(); 00059 virtual ~PositionControl(); 00060 00061 void run(const TKTrajectory& input, const TKState& currentState, const double mass, PosCtrlOutput& output); 00062 //void setMass(double mass_); 00063 }; 00064 00065 } 00066 00067 #endif /* POSITIONCONTROL_HPP_ */