DMP_BBO library
SpringDamperSystem.hpp
Go to the documentation of this file.
1 
24 #ifndef _SPRING_DAMPER_SYSTEM_H_
25 #define _SPRING_DAMPER_SYSTEM_H_
26 
28 
29 namespace DmpBbo {
30 
34 double const CRITICALLY_DAMPED = -1.0;
35 
43 {
44 public:
45 
56  SpringDamperSystem(double tau, Eigen::VectorXd y_init, Eigen::VectorXd y_attr,
57  double damping_coefficient, double spring_constant=CRITICALLY_DAMPED, double mass=1.0, std::string name="SpringDamperSystem");
58 
60  ~SpringDamperSystem(void);
61 
62  DynamicalSystem* clone(void) const;
63 
65  const Eigen::Ref<const Eigen::VectorXd>& x,
66  Eigen::Ref<Eigen::VectorXd> xd
67  ) const;
68 
69  void analyticalSolution(const Eigen::VectorXd& ts, Eigen::MatrixXd& xs, Eigen::MatrixXd& xds) const;
70 
71  std::string toString(void) const;
72 
77  inline double damping_coefficient(void) { return damping_coefficient_; }
78 
83  inline double spring_constant(void) { return spring_constant_; }
84 
89  inline double mass(void) { return mass_; }
90 
95  inline void set_damping_coefficient(double damping_coefficient) {
96  damping_coefficient_=damping_coefficient;
97  }
98 
103  inline void set_spring_constant(double spring_constant) {
104  spring_constant_ = spring_constant;
105  }
106 
111  inline void set_mass(double mass) {
112  mass_=mass;
113  }
114 
115 private:
117  double damping_coefficient_;
118 
120  double spring_constant_;
121 
123  double mass_;
124 
125 
126 private:
132 
134  friend class boost::serialization::access;
135 
137  mutable Eigen::VectorXd y_,z_,yd_,zd_,y_attr_;
138 
144  template<class Archive>
145  void serialize(Archive & ar, const unsigned int version)
146  {
147  // serialize base class information
148  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(DynamicalSystem);
149 
150  ar & BOOST_SERIALIZATION_NVP(damping_coefficient_);
151  ar & BOOST_SERIALIZATION_NVP(spring_constant_);
152  ar & BOOST_SERIALIZATION_NVP(mass_);
153  }
154 };
155 
156 }
157 
158 #include <boost/serialization/export.hpp>
159 
162 
163 
164 BOOST_CLASS_IMPLEMENTATION(DmpBbo::SpringDamperSystem,boost::serialization::object_serializable)
165 
166 #endif // _SPRING_DAMPER_SYSTEM_H_
167 
double tau(void) const
Accessor function for the time constant.
DynamicalSystem class header file.
void set_damping_coefficient(double damping_coefficient)
Accessor function for damping coefficient.
void set_spring_constant(double spring_constant)
Accessor function for spring constant.
DynamicalSystem * clone(void) const
Return a pointer to a deep copy of the DynamicalSystem object.
void analyticalSolution(const Eigen::VectorXd &ts, Eigen::MatrixXd &xs, Eigen::MatrixXd &xds) const
Return analytical solution of the system at certain times.
BOOST_CLASS_EXPORT_KEY2(DmpBbo::TimeSystem,"TimeSystem")
Register this derived class.
void set_mass(double mass)
Accessor function for mass.
double damping_coefficient(void)
Accessor function for damping coefficient.
std::string toString(void) const
Returns a string representation of the object.
std::string name(void) const
Accessor function for the name of the dynamical system.
void differentialEquation(const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::Ref< Eigen::VectorXd > xd) const
The differential equation which defines the system.
Interface for implementing dynamical systems.
double mass(void)
Accessor function for mass.
Dynamical System modelling the evolution of a spring-damper system: .
double spring_constant(void)
Accessor function for spring constant.
double const CRITICALLY_DAMPED
Value indicating that the spring constant should be set such that the spring damper system is critica...
BOOST_CLASS_IMPLEMENTATION(DmpBbo::DistributionGaussian, boost::serialization::object_serializable)
Don&#39;t add version information to archives.
~SpringDamperSystem(void)
Destructor.
friend class boost::serialization::access
Give boost serialization access to private members.