force-compensation.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_SOTFORCECOMPENSATION_H__
11 #define __SOT_SOTFORCECOMPENSATION_H__
12 
13 /* --------------------------------------------------------------------- */
14 /* --- INCLUDE --------------------------------------------------------- */
15 /* --------------------------------------------------------------------- */
16 
17 /* Matrix */
19 
20 /* SOT */
21 #include <dynamic-graph/entity.h>
24 
26 
27 /* STD */
28 #include <string>
29 
30 /* --------------------------------------------------------------------- */
31 /* --- API ------------------------------------------------------------- */
32 /* --------------------------------------------------------------------- */
33 
34 #if defined(WIN32)
35 #if defined(force_compensation_EXPORTS)
36 #define SOTFORCECOMPENSATION_EXPORT __declspec(dllexport)
37 #else
38 #define SOTFORCECOMPENSATION_EXPORT __declspec(dllimport)
39 #endif
40 #else
41 #define SOTFORCECOMPENSATION_EXPORT
42 #endif
43 
44 namespace dynamicgraph {
45 namespace sot {
46 namespace dg = dynamicgraph;
47 
48 /* --------------------------------------------------------------------- */
49 /* --- CLASS ----------------------------------------------------------- */
50 /* --------------------------------------------------------------------- */
51 
53  private:
55 
56  protected:
58 
59  public:
60  ForceCompensation(void);
61  static MatrixForce& computeHandXworld(
62  const MatrixRotation& worldRhand,
63  const dynamicgraph::Vector& transSensorCom, MatrixForce& res);
64 
65  static MatrixForce& computeHandVsensor(const MatrixRotation& sensorRhand,
66  MatrixForce& res);
67  static MatrixForce& computeSensorXhand(
68  const MatrixRotation& sensorRhand,
69  const dynamicgraph::Vector& transSensorCom, MatrixForce& res);
70  /* static dynamicgraph::Matrix& computeInertiaSensor( const
71  * dynamicgraph::Matrix& inertiaJoint, */
72  /* const MatrixForce& sensorXhand, */
73  /* dynamicgraph::Matrix& res ); */
74 
75  static dynamicgraph::Vector& computeTorsorCompensated(
76  const dynamicgraph::Vector& torqueInput,
77  const dynamicgraph::Vector& torquePrecompensation,
78  const dynamicgraph::Vector& gravity, const MatrixForce& handXworld,
79  const MatrixForce& handVsensor, const dynamicgraph::Matrix& gainSensor,
80  const dynamicgraph::Vector& momentum, dynamicgraph::Vector& res);
81 
82  static dynamicgraph::Vector& crossProduct_V_F(
83  const dynamicgraph::Vector& velocity, const dynamicgraph::Vector& force,
85  static dynamicgraph::Vector& computeMomentum(
86  const dynamicgraph::Vector& velocity,
87  const dynamicgraph::Vector& acceleration, const MatrixForce& sensorXhand,
88  const dynamicgraph::Matrix& inertiaJoint, dynamicgraph::Vector& res);
89 
90  static dynamicgraph::Vector& computeDeadZone(
91  const dynamicgraph::Vector& torqueInput,
92  const dynamicgraph::Vector& deadZoneLimit, dynamicgraph::Vector& res);
93 
94  public: // CALIBRATION
95  std::list<dynamicgraph::Vector> torsorList;
96  std::list<MatrixRotation> rotationList;
97 
98  void clearCalibration(void);
99  void addCalibrationValue(const dynamicgraph::Vector& torsor,
100  const MatrixRotation& worldRhand);
101 
102  dynamicgraph::Vector calibrateTransSensorCom(
103  const dynamicgraph::Vector& gravity, const MatrixRotation& handRsensor);
104  dynamicgraph::Vector calibrateGravity(
105  const MatrixRotation& handRsensor,
106  bool precompensationCalibration = false,
107  const MatrixRotation& hand0Rsensor = I3);
108 };
109 
110 /* --------------------------------------------------------------------- */
111 /* --- PLUGIN ---------------------------------------------------------- */
112 /* --------------------------------------------------------------------- */
113 
115  : public dg::Entity,
116  public ForceCompensation {
117  public:
118  static const std::string CLASS_NAME;
119  virtual const std::string& getClassName(void) const { return CLASS_NAME; }
121 
122  public: /* --- CONSTRUCTION --- */
123  ForceCompensationPlugin(const std::string& name);
124  virtual ~ForceCompensationPlugin(void);
125 
126  public: /* --- SIGNAL --- */
127  /* --- INPUTS --- */
130 
131  /* --- CONSTANTS --- */
140 
143 
144  /* --- INTERMEDIATE OUTPUTS --- */
148 
150  // dg::SignalTimeDependent<dynamicgraph::Matrix,sigtime_t> inertiaSensorSOUT;
153 
154  /* --- OUTPUTS --- */
158 
159  typedef int sotDummyType;
161 
162  public: /* --- COMMANDLINE --- */
163  sotDummyType& calibrationTriger(sotDummyType& dummy, sigtime_t time);
164 };
165 
166 } // namespace sot
167 } // namespace dynamicgraph
168 
169 #endif // #ifndef __SOT_SOTFORCECOMPENSATION_H__
dynamicgraph::sot::ForceCompensationPlugin::sensorXhandSOUT
dg::SignalTimeDependent< MatrixForce, sigtime_t > sensorXhandSOUT
Definition: force-compensation.h:149
signal-ptr.h
signal-time-dependent.h
dynamicgraph::sot::ForceCompensationPlugin::sotDummyType
int sotDummyType
Definition: force-compensation.h:159
dynamicgraph::sot::ForceCompensation::usingPrecompensation
bool usingPrecompensation
Definition: force-compensation.h:57
dynamicgraph::SignalPtr< dynamicgraph::Vector, sigtime_t >
dynamicgraph
dynamicgraph::sot::ForceCompensationPlugin::worldRhandSIN
dg::SignalPtr< MatrixRotation, sigtime_t > worldRhandSIN
Definition: force-compensation.h:129
dynamicgraph::sot::ForceCompensationPlugin::velocitySIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > velocitySIN
Definition: force-compensation.h:141
matrix-geometry.hh
dynamicgraph::Entity
dynamicgraph::sot::ForceCompensation::torsorList
std::list< dynamicgraph::Vector > torsorList
Definition: force-compensation.h:95
dynamicgraph::sot::ForceCompensationPlugin::getClassName
virtual const std::string & getClassName(void) const
Definition: force-compensation.h:119
dynamicgraph::sot::ForceCompensation::rotationList
std::list< MatrixRotation > rotationList
Definition: force-compensation.h:96
dynamicgraph::sot::ForceCompensationPlugin::accelerationSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > accelerationSIN
Definition: force-compensation.h:142
dynamicgraph::sot::ForceCompensationPlugin::calibrationStarted
bool calibrationStarted
Definition: force-compensation.h:120
dynamicgraph::sot::ForceCompensationPlugin
Definition: force-compensation.h:114
dynamicgraph::Matrix
Eigen::MatrixXd Matrix
dynamicgraph::sot::ForceCompensationPlugin::gravitySIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > gravitySIN
Definition: force-compensation.h:134
SOTFORCECOMPENSATION_EXPORT
#define SOTFORCECOMPENSATION_EXPORT
Definition: force-compensation.h:41
dynamicgraph::sot::ForceCompensationPlugin::deadZoneLimitSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > deadZoneLimitSIN
Definition: force-compensation.h:137
dynamicgraph::sot::ForceCompensationPlugin::CLASS_NAME
static const std::string CLASS_NAME
Definition: force-compensation.h:118
dynamicgraph::sot::ForceCompensationPlugin::torsorCompensatedSOUT
dg::SignalTimeDependent< dynamicgraph::Vector, sigtime_t > torsorCompensatedSOUT
Definition: force-compensation.h:156
dynamicgraph::sot::ForceCompensationPlugin::handVsensorSOUT
dg::SignalTimeDependent< MatrixForce, sigtime_t > handVsensorSOUT
Definition: force-compensation.h:146
dynamicgraph::sot::ForceCompensationPlugin::momentumSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > momentumSIN
Definition: force-compensation.h:152
dynamicgraph::Vector
Eigen::VectorXd Vector
dynamicgraph::sot::ForceCompensationPlugin::handXworldSOUT
dg::SignalTimeDependent< MatrixForce, sigtime_t > handXworldSOUT
Definition: force-compensation.h:145
dynamicgraph::sot::ForceCompensationPlugin::precompensationSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > precompensationSIN
Definition: force-compensation.h:135
dynamicgraph::sot::ForceCompensationPlugin::torsorDeadZoneSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > torsorDeadZoneSIN
Definition: force-compensation.h:147
linear-algebra.h
dynamicgraph::SignalTimeDependent< MatrixForce, sigtime_t >
dynamicgraph::sot::ForceCompensationPlugin::torsorDeadZoneSOUT
dg::SignalTimeDependent< dynamicgraph::Vector, sigtime_t > torsorDeadZoneSOUT
Definition: force-compensation.h:157
dynamicgraph::sot::ForceCompensationPlugin::transSensorJointSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > transSensorJointSIN
Definition: force-compensation.h:138
dynamicgraph::sot::ForceCompensationPlugin::handRsensorSIN
dg::SignalPtr< MatrixRotation, sigtime_t > handRsensorSIN
Definition: force-compensation.h:132
dynamicgraph::sot::ForceCompensationPlugin::inertiaJointSIN
dg::SignalPtr< dynamicgraph::Matrix, sigtime_t > inertiaJointSIN
Definition: force-compensation.h:139
dynamicgraph::sot::MatrixRotation
Eigen::Matrix< double, 3, 3 > SOT_CORE_EXPORT MatrixRotation
dynamicgraph::sot::ForceCompensation
Definition: force-compensation.h:52
dynamicgraph::sot::MatrixForce
Eigen::Matrix< double, 6, 6 > SOT_CORE_EXPORT MatrixForce
dynamicgraph::sot::ForceCompensationPlugin::translationSensorComSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > translationSensorComSIN
Definition: force-compensation.h:133
dynamicgraph::sot::ForceCompensation::I3
static MatrixRotation I3
Definition: force-compensation.h:54
sot
Definition: zmp-from-forces.cpp:11
dynamicgraph::sot::ForceCompensationPlugin::calibrationTrigerSOUT
dg::SignalTimeDependent< sotDummyType, sigtime_t > calibrationTrigerSOUT
Definition: force-compensation.h:160
dynamicgraph::sot::ForceCompensationPlugin::gainSensorSIN
dg::SignalPtr< dynamicgraph::Matrix, sigtime_t > gainSensorSIN
Definition: force-compensation.h:136
dynamicgraph::sot::ForceCompensationPlugin::momentumSOUT
dg::SignalTimeDependent< dynamicgraph::Vector, sigtime_t > momentumSOUT
Definition: force-compensation.h:151
dynamicgraph::sot::ForceCompensationPlugin::torsorSIN
dg::SignalPtr< dynamicgraph::Vector, sigtime_t > torsorSIN
Definition: force-compensation.h:128
compile.name
name
Definition: compile.py:22


sot-dynamic-pinocchio
Author(s): Olivier Stasse
autogenerated on Fri Jul 28 2023 02:10:01