31 #ifndef _DYNAMICALSYSTEM_H_ 32 #define _DYNAMICALSYSTEM_H_ 34 #include "../util/nocopy.h" 73 virtual void step(Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const = 0;
78 virtual Eigen::VectorXd
getGoal()
const = 0;
85 virtual void setGoal(
const Eigen::VectorXd& x_des) = 0;
92 virtual double goalDistance(
const Eigen::VectorXd& x_curr)
const;
110 virtual void step(Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const;
120 step(Eigen::VectorXd& x_ddot,
const Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const = 0;
135 DSConst(
const Eigen::VectorXd& constVelocity);
139 void step(Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const;
141 Eigen::VectorXd
getGoal()
const;
143 void setGoal(
const Eigen::VectorXd& x_des);
161 DSLinear(
const Eigen::MatrixXd& errorDynamics,
const Eigen::VectorXd& equilibriumPoint);
165 void step(Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const;
167 Eigen::VectorXd
getGoal()
const;
169 void setGoal(
const Eigen::VectorXd& x_des);
191 Spring(Eigen::VectorXd equilibriumPoint,
double stiffness) :
192 equilibriumPoint(equilibriumPoint), stiffness(stiffness) {}
202 const Spring& attractor,
const std::vector<Spring>& repellers,
const double damping,
203 const double mass = 1.0);
207 void step(Eigen::VectorXd& x_ddot,
const Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const;
209 Eigen::VectorXd
getGoal()
const;
211 void setGoal(
const Eigen::VectorXd& x_des);
238 const Spring& attractor,
const std::vector<Spring>& repellers,
const double damping,
239 const double mass = 1.0);
243 void step(Eigen::VectorXd& x_ddot,
const Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const;
267 virtual void step(Eigen::VectorXd& x_dot,
const Eigen::VectorXd& x,
double dt)
const;
269 virtual void setGoal(
const Eigen::VectorXd& x_des);
271 virtual Eigen::VectorXd
getGoal()
const;
273 virtual double goalDistance(
const Eigen::VectorXd& x_cur)
const;
unsigned int getStateDim() const
virtual DynamicalSystem * clone() const =0
std::vector< Spring > repellerSprings
repeller springs pushing the mass away from points in space (e.g. obstacles)
virtual void step(Eigen::VectorXd &x_dot, const Eigen::VectorXd &x, double dt) const =0
Eigen::VectorXd equilibriumPoint
Zero position of the spring, force is applied to reach this state.
Eigen::VectorXd x_dot_des
virtual ~DynamicalSystem()=default
Eigen::MatrixXd errorDynamics
Eigen::VectorXd constVelocity
static DynamicalSystem * create(PropertySource *properties, unsigned int innerTaskDim)
DynamicalSystem()=default
virtual void setGoal(const Eigen::VectorXd &x_des)=0
Spring attractorSpring
attractor spring pulling the mass to the goal poisiton (there is only one for every dynamical system)...
virtual Eigen::VectorXd getGoal() const =0
Spring(Eigen::VectorXd equilibriumPoint, double stiffness)
double stiffness
Stiffness of the spring.
DynamicalSystem * wrapped
Eigen::VectorXd equilibriumPoint
virtual double goalDistance(const Eigen::VectorXd &x_curr) const
double damping
daming of the dynamical system (there is only one for every dynamical system)
double mass
mass of the particle
Properties for one spring component.