gripper-control.hh
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_SOTGRIPPERCONTROL_H__
11 #define __SOT_SOTGRIPPERCONTROL_H__
12 
13 /* --------------------------------------------------------------------- */
14 /* --- INCLUDE --------------------------------------------------------- */
15 /* --------------------------------------------------------------------- */
16 
17 /* Matrix */
18 #include <dynamic-graph/linear-algebra.h>
19 namespace dg = dynamicgraph;
20 
21 /* SOT */
22 #include <dynamic-graph/all-signals.h>
23 #include <dynamic-graph/entity.h>
24 #include <sot/core/flags.hh>
25 
26 /* STD */
27 #include <string>
28 
29 /* --------------------------------------------------------------------- */
30 /* --- API ------------------------------------------------------------- */
31 /* --------------------------------------------------------------------- */
32 
33 #if defined(WIN32)
34 #if defined(gripper_control_EXPORTS)
35 #define SOTGRIPPERCONTROL_EXPORT __declspec(dllexport)
36 #else
37 #define SOTGRIPPERCONTROL_EXPORT __declspec(dllimport)
38 #endif
39 #else
40 #define SOTGRIPPERCONTROL_EXPORT
41 #endif
42 
43 /* --------------------------------------------------------------------- */
44 /* --- CLASS ----------------------------------------------------------- */
45 /* --------------------------------------------------------------------- */
46 
47 namespace dynamicgraph {
48 namespace sot {
49 
50 namespace dg = dynamicgraph;
51 
59 protected:
60  double offset;
61  static const double OFFSET_DEFAULT;
63  dg::Vector factor;
64 
65 public:
66  GripperControl(void);
67 
69  // if the torque limit is reached, the normalized position is reduced by
70  // (offset)
71  void computeIncrement(const dg::Vector &torques,
72  const dg::Vector &torqueLimits,
73  const dg::Vector &currentNormVel);
74 
76  dg::Vector &computeDesiredPosition(const dg::Vector &currentPos,
77  const dg::Vector &desiredPos,
78  const dg::Vector &torques,
79  const dg::Vector &torqueLimits,
80  dg::Vector &referencePos);
81 
86  static dg::Vector &selector(const dg::Vector &fullsize, const Flags &selec,
87  dg::Vector &desPos);
88 };
89 
90 /* --------------------------------------------------------------------- */
91 /* --- PLUGIN ---------------------------------------------------------- */
92 /* --------------------------------------------------------------------- */
93 
95  public GripperControl {
96  DYNAMIC_GRAPH_ENTITY_DECL();
97 
98 public:
100 
101 public: /* --- CONSTRUCTION --- */
102  GripperControlPlugin(const std::string &name);
103  virtual ~GripperControlPlugin(void);
104 
105  /* --- DOCUMENTATION --- */
106  virtual std::string getDocString() const;
107 
108 public: /* --- SIGNAL --- */
109  /* --- INPUTS --- */
110  dg::SignalPtr<dg::Vector, int> positionSIN;
111  dg::SignalPtr<dg::Vector, int> positionDesSIN;
112  dg::SignalPtr<dg::Vector, int> torqueSIN;
113  dg::SignalPtr<dg::Vector, int> torqueLimitSIN;
114  dg::SignalPtr<Flags, int> selectionSIN;
115 
116  /* --- INTERMEDIARY --- */
117  dg::SignalPtr<dg::Vector, int> positionFullSizeSIN;
118  dg::SignalTimeDependent<dg::Vector, int> positionReduceSOUT;
119  dg::SignalPtr<dg::Vector, int> torqueFullSizeSIN;
120  dg::SignalTimeDependent<dg::Vector, int> torqueReduceSOUT;
121  dg::SignalPtr<dg::Vector, int> torqueLimitFullSizeSIN;
122  dg::SignalTimeDependent<dg::Vector, int> torqueLimitReduceSOUT;
123 
124  /* --- OUTPUTS --- */
125  dg::SignalTimeDependent<dg::Vector, int> desiredPositionSOUT;
126 
127 public: /* --- COMMANDLINE --- */
128  void initCommands();
129 
130  void setOffset(const double &value);
131 };
132 
133 } /* namespace sot */
134 } /* namespace dynamicgraph */
135 
136 #endif // #ifndef __SOT_SOTGRIPPERCONTROL_H__
dynamicgraph::sot::GripperControlPlugin::positionFullSizeSIN
dg::SignalPtr< dg::Vector, int > positionFullSizeSIN
Definition: gripper-control.hh:117
dynamicgraph::sot::GripperControlPlugin::torqueFullSizeSIN
dg::SignalPtr< dg::Vector, int > torqueFullSizeSIN
Definition: gripper-control.hh:119
dynamicgraph
Definition: abstract-sot-external-interface.hh:17
dynamicgraph::sot::GripperControl::factor
dg::Vector factor
The multiplication.
Definition: gripper-control.hh:63
dynamicgraph::sot::GripperControlPlugin::positionSIN
dg::SignalPtr< dg::Vector, int > positionSIN
Definition: gripper-control.hh:110
dynamicgraph::sot::GripperControlPlugin::positionReduceSOUT
dg::SignalTimeDependent< dg::Vector, int > positionReduceSOUT
Definition: gripper-control.hh:118
dynamicgraph::sot::GripperControlPlugin::torqueLimitFullSizeSIN
dg::SignalPtr< dg::Vector, int > torqueLimitFullSizeSIN
Definition: gripper-control.hh:121
dynamicgraph::sot::GripperControlPlugin::selectionSIN
dg::SignalPtr< Flags, int > selectionSIN
Definition: gripper-control.hh:114
dynamicgraph::sot::GripperControlPlugin::positionDesSIN
dg::SignalPtr< dg::Vector, int > positionDesSIN
Definition: gripper-control.hh:111
dynamicgraph::sot::GripperControl
The goal of this entity is to ensure that the maximal torque will not be exceeded during a grasping t...
Definition: gripper-control.hh:58
dynamicgraph::sot::GripperControlPlugin::torqueReduceSOUT
dg::SignalTimeDependent< dg::Vector, int > torqueReduceSOUT
Definition: gripper-control.hh:120
flags.hh
dynamicgraph::sot::GripperControlPlugin
Definition: gripper-control.hh:94
dynamicgraph::sot::GripperControlPlugin::torqueLimitSIN
dg::SignalPtr< dg::Vector, int > torqueLimitSIN
Definition: gripper-control.hh:113
dynamicgraph::sot::GripperControlPlugin::desiredPositionSOUT
dg::SignalTimeDependent< dg::Vector, int > desiredPositionSOUT
Definition: gripper-control.hh:125
dynamicgraph::sot::GripperControl::OFFSET_DEFAULT
static const double OFFSET_DEFAULT
Definition: gripper-control.hh:61
dynamicgraph::sot::GripperControlPlugin::torqueLimitReduceSOUT
dg::SignalTimeDependent< dg::Vector, int > torqueLimitReduceSOUT
Definition: gripper-control.hh:122
SOTGRIPPERCONTROL_EXPORT
#define SOTGRIPPERCONTROL_EXPORT
Definition: gripper-control.hh:40
dynamicgraph::sot::Flags
Definition: flags.hh:31
dynamicgraph::sot::GripperControl::offset
double offset
Definition: gripper-control.hh:60
dynamicgraph::sot::GripperControlPlugin::torqueSIN
dg::SignalPtr< dg::Vector, int > torqueSIN
Definition: gripper-control.hh:112
dynamicgraph::sot::GripperControlPlugin::calibrationStarted
bool calibrationStarted
Definition: gripper-control.hh:99