integrator-force.h
Go to the documentation of this file.
1 /*
2  * Copyright 2010,
3  * François Bleibel,
4  * Olivier Stasse,
5  *
6  * CNRS/AIST
7  *
8  */
9 
10 #ifndef __SOT_SOTINTEGRATORFORCE_H__
11 #define __SOT_SOTINTEGRATORFORCE_H__
12 
13 /* --------------------------------------------------------------------- */
14 /* --- INCLUDE --------------------------------------------------------- */
15 /* --------------------------------------------------------------------- */
16 
17 /* Matrix */
18 #include <dynamic-graph/linear-algebra.h>
19 
20 /* SOT */
21 #include <dynamic-graph/entity.h>
22 #include <dynamic-graph/signal-ptr.h>
23 #include <dynamic-graph/signal-time-dependent.h>
24 #include <sot/core/matrix-geometry.hh>
25 
26 /* STD */
27 #include <string>
28 
29 /* --------------------------------------------------------------------- */
30 /* --- API ------------------------------------------------------------- */
31 /* --------------------------------------------------------------------- */
32 
33 #if defined(WIN32)
34 #if defined(integrator_force_EXPORTS)
35 #define SOTINTEGRATORFORCE_EXPORT __declspec(dllexport)
36 #else
37 #define SOTINTEGRATORFORCE_EXPORT __declspec(dllimport)
38 #endif
39 #else
40 #define SOTINTEGRATORFORCE_EXPORT
41 #endif
42 
43 namespace dynamicgraph {
44 namespace sot {
45 namespace dg = dynamicgraph;
46 
47 /* --------------------------------------------------------------------- */
48 /* --- CLASS ----------------------------------------------------------- */
49 /* --------------------------------------------------------------------- */
50 
51 class SOTINTEGRATORFORCE_EXPORT IntegratorForce : public dg::Entity {
52  public:
53  static const std::string CLASS_NAME;
54  virtual const std::string& getClassName(void) const { return CLASS_NAME; }
55 
56  protected:
57  double timeStep;
58  static const double TIME_STEP_DEFAULT; // = 5e-3
59 
60  public: /* --- CONSTRUCTION --- */
61  IntegratorForce(const std::string& name);
62  virtual ~IntegratorForce(void);
63 
64  public: /* --- SIGNAL --- */
65  dg::SignalPtr<dynamicgraph::Vector, int> forceSIN;
66  dg::SignalPtr<dynamicgraph::Matrix, int> massInverseSIN;
67  dg::SignalPtr<dynamicgraph::Matrix, int> frictionSIN;
68 
69  /* Memory of the previous iteration. The sig is fed by the previous
70  * computations. */
71  dg::SignalPtr<dynamicgraph::Vector, int> velocityPrecSIN;
72  dg::SignalTimeDependent<dynamicgraph::Vector, int> velocityDerivativeSOUT;
73  dg::SignalTimeDependent<dynamicgraph::Vector, int> velocitySOUT;
74 
75  dg::SignalPtr<dynamicgraph::Matrix, int> massSIN;
76  dg::SignalTimeDependent<dynamicgraph::Matrix, int> massInverseSOUT;
77 
78  public: /* --- FUNCTIONS --- */
79  dynamicgraph::Vector& computeDerivative(dynamicgraph::Vector& res, const int& time);
80  dynamicgraph::Vector& computeIntegral(dynamicgraph::Vector& res, const int& time);
81 
82  dynamicgraph::Matrix& computeMassInverse(dynamicgraph::Matrix& res, const int& time);
83 };
84 
85 } /* namespace sot */
86 } /* namespace dynamicgraph */
87 
88 #endif // #ifndef __SOT_WAISTATTITUDEFROMSENSOR_H__
dg::SignalPtr< dynamicgraph::Vector, int > velocityPrecSIN
Definition: integrator-force.h:71
static const std::string CLASS_NAME
Definition: integrator-force.h:53
virtual const std::string & getClassName(void) const
Definition: integrator-force.h:54
dg::SignalPtr< dynamicgraph::Matrix, int > massInverseSIN
Definition: integrator-force.h:66
dg::SignalTimeDependent< dynamicgraph::Vector, int > velocityDerivativeSOUT
Definition: integrator-force.h:72
dg::SignalTimeDependent< dynamicgraph::Matrix, int > massInverseSOUT
Definition: integrator-force.h:76
Definition: integrator-force.h:51
static const double TIME_STEP_DEFAULT
Definition: integrator-force.h:58
#define SOTINTEGRATORFORCE_EXPORT
Definition: integrator-force.h:40
dg::SignalPtr< dynamicgraph::Matrix, int > frictionSIN
Definition: integrator-force.h:67
dg::SignalPtr< dynamicgraph::Vector, int > forceSIN
Definition: integrator-force.h:65
dg::SignalTimeDependent< dynamicgraph::Vector, int > velocitySOUT
Definition: integrator-force.h:73
double timeStep
Definition: integrator-force.h:57
dg::SignalPtr< dynamicgraph::Matrix, int > massSIN
Definition: integrator-force.h:75
Definition: angle-estimator.h:42