00001 00008 #ifndef EMBEDDEDSMOOTHER_H 00009 #define EMBEDDEDSMOOTHER_H 00010 00011 /***************************************************************************/ 00017 class EmbeddedSmoother 00018 { 00019 public: 00020 struct Settings 00021 { 00022 Settings() : timestep(0.), minVel(0.), maxAcc(0.), accGain(0.) {} 00023 00024 double timestep; 00025 double minVel; 00026 double maxAcc; 00027 double accGain; 00028 }; 00029 00030 EmbeddedSmoother(const Settings& settings_in); 00031 ~EmbeddedSmoother(); 00032 00033 double update(double desiredPosition, double desiredVelocity); 00034 double reset(double desiredPosition, double desiredVelocity); 00035 00036 private: 00037 Settings settings; 00038 00039 double prevDesiredPos; 00040 double smoothedPos; 00041 double smoothedVel; 00042 double smoothedAcc; 00043 double desiredDir; 00044 double velDir; 00045 double commandVel; 00046 double velError; 00047 }; 00048 00049 #endif