dynamic-pinocchio.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_DYNAMIC_PINOCCHIO_H__
11 #define __SOT_DYNAMIC_PINOCCHIO_H__
12 
13 /* --------------------------------------------------------------------- */
14 /* --- INCLUDE --------------------------------------------------------- */
15 /* --------------------------------------------------------------------- */
16 
17 /* STD */
18 #include <map>
19 #include <memory>
20 #include <string>
21 
22 /* pinocchio */
23 
24 #include <pinocchio/fwd.hpp>
25 
26 /* SOT */
27 #include <dynamic-graph/entity.h>
28 #include <dynamic-graph/pool.h>
31 
33 #include <sot/core/flags.hh>
35 /* Matrix */
37 
38 #include <sot/dynamic-pinocchio/deprecated.hh>
39 
40 /* PINOCCHIO */
41 #include <pinocchio/algorithm/frames.hpp>
42 #include <pinocchio/algorithm/jacobian.hpp>
43 #include <pinocchio/algorithm/rnea.hpp>
44 #include <pinocchio/macros.hpp>
45 #include <pinocchio/multibody/model.hpp>
46 
47 /* --------------------------------------------------------------------- */
48 /* --- API ------------------------------------------------------------- */
49 /* --------------------------------------------------------------------- */
50 
51 #if defined(WIN32)
52 #if defined(dynamic_EXPORTS)
53 #define SOTDYNAMIC_EXPORT __declspec(dllexport)
54 #else
55 #define SOTDYNAMIC_EXPORT __declspec(dllimport)
56 #endif
57 #else
58 #define SOTDYNAMIC_EXPORT
59 #endif
60 
61 namespace dynamicgraph {
62 namespace sot {
63 namespace dg = dynamicgraph;
64 
65 namespace command {
66 class SetFile;
67 class CreateOpPoint;
68 } // namespace command
69  /* --------------------------------------------------------------------- */
70  /* --- CLASS ----------------------------------------------------------- */
71  /* --------------------------------------------------------------------- */
72 
80  friend class sot::command::SetFile;
81  friend class sot::command::CreateOpPoint;
82  // friend class sot::command::InitializeRobot;
83 
84  public:
85  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
87 
88  /* --- MODEL ATRIBUTES --- */
90  std::unique_ptr<pinocchio::Data> m_data;
91 
92  /* --- MODEL ATRIBUTES --- */
93 
94  public:
95  /* --- SIGNAL ACTIVATION --- */
96  dg::SignalTimeDependent<dg::Matrix, sigtime_t>& createEndeffJacobianSignal(
97  const std::string& signame, const std::string&,
98  const bool isLocal = true);
100  const std::string& signame, const std::string&);
101  void destroyJacobianSignal(const std::string& signame);
102 
104  const std::string&, const std::string&);
105  void destroyPositionSignal(const std::string& signame);
106 
108  const std::string&, const std::string&);
109  void destroyVelocitySignal(const std::string& signame);
110 
111  dg::SignalTimeDependent<dg::Vector, sigtime_t>& createAccelerationSignal(
112  const std::string&, const std::string&);
113  void destroyAccelerationSignal(const std::string& signame);
114 
116  std::list<dg::SignalBase<sigtime_t>*> genericSignalRefs;
117 
118  public:
119  /* --- SIGNAL --- */
120  typedef int Dummy;
127 
131 
136 
137  int& computeNewtonEuler(int& dummy, const sigtime_t& time);
138  int& computeForwardKinematics(int& dummy, const sigtime_t& time);
139  int& computeCcrba(int& dummy, const sigtime_t& time);
140  int& computeJacobians(int& dummy, const sigtime_t& time);
141 
146 
148  const std::string& name);
150  const std::string& name);
152  const std::string& name);
154  const std::string& name);
155 
161 
168 
169  public:
170  /* --- CONSTRUCTOR --- */
171  DynamicPinocchio(const std::string& name);
172  virtual ~DynamicPinocchio(void);
173 
174  /* --- MODEL CREATION --- */
175 
176  void displayModel() const {
177  assert(m_model);
178  std::cout << (*m_model) << std::endl;
179  };
180 
181  void setModel(pinocchio::Model*);
182 
183  void createData();
184 
185  pinocchio::Model* getModel() { return m_model; };
186 
187  pinocchio::Data* getData() { return m_data.get(); };
188 
189  /* --- GETTERS --- */
190 
195  dg::Vector& getLowerPositionLimits(dg::Vector& res, const sigtime_t&) const;
196 
201  dg::Vector& getUpperPositionLimits(dg::Vector& res, const sigtime_t&) const;
202 
207  dg::Vector& getUpperVelocityLimits(dg::Vector& res, const sigtime_t&) const;
208 
213  dg::Vector& getMaxEffortLimits(dg::Vector& res, const sigtime_t&) const;
214 
215  // dg::Vector& getAnklePositionInFootFrame() const;
216 
217  protected:
218  dg::Matrix& computeGenericJacobian(const bool isFrame, const int jointId,
219  dg::Matrix& res, const sigtime_t& time);
220  dg::Matrix& computeGenericEndeffJacobian(const bool isFrame,
221  const bool isLocal,
222  const int jointId, dg::Matrix& res,
223  const sigtime_t& time);
224  MatrixHomogeneous& computeGenericPosition(const bool isFrame,
225  const int jointId,
226  MatrixHomogeneous& res,
227  const sigtime_t& time);
228  dg::Vector& computeGenericVelocity(const int jointId, dg::Vector& res,
229  const sigtime_t& time);
230  dg::Vector& computeGenericAcceleration(const int jointId, dg::Vector& res,
231  const sigtime_t& time);
232 
233  dg::Vector& computeZmp(dg::Vector& res, const sigtime_t& time);
234  dg::Vector& computeMomenta(dg::Vector& res, const sigtime_t& time);
235  dg::Vector& computeAngularMomentum(dg::Vector& res, const sigtime_t& time);
236  dg::Matrix& computeJcom(dg::Matrix& res, const sigtime_t& time);
237  dg::Vector& computeCom(dg::Vector& res, const sigtime_t& time);
238  dg::Matrix& computeInertia(dg::Matrix& res, const sigtime_t& time);
239  dg::Matrix& computeInertiaReal(dg::Matrix& res, const sigtime_t& time);
240  double& computeFootHeight(double& res, const sigtime_t& time);
241 
242  dg::Vector& computeTorqueDrift(dg::Vector& res, const sigtime_t& time);
243 
244  public: /* --- PARAMS --- */
245  void cmd_createOpPointSignals(const std::string& sig, const std::string& j);
246  void cmd_createJacobianWorldSignal(const std::string& sig,
247  const std::string& j);
248  void cmd_createJacobianEndEffectorSignal(const std::string& sig,
249  const std::string& j);
250  void cmd_createJacobianEndEffectorWorldSignal(const std::string& sig,
251  const std::string& j);
252  void cmd_createPositionSignal(const std::string& sig, const std::string& j);
253  void cmd_createVelocitySignal(const std::string& sig, const std::string& j);
254  void cmd_createAccelerationSignal(const std::string& sig,
255  const std::string& j);
256 
257  private:
261  dg::Vector& getPinocchioPos(dg::Vector& q, const sigtime_t& time);
262  dg::Vector& getPinocchioVel(dg::Vector& v, const sigtime_t& time);
263  dg::Vector& getPinocchioAcc(dg::Vector& a, const sigtime_t& time);
264 
265  //\brief Index list for the first dof of (spherical joints)/ (spherical part
266  // of free-flyer joint).
267  std::vector<int> sphericalJoints;
268 };
269 
270 // std::ostream& operator<<(std::ostream& os, const CjrlJoint& r);
271 } /* namespace sot */
272 } /* namespace dynamicgraph */
273 
274 #endif // #ifndef __SOT_DYNAMIC_PINOCCHIO_H__
signal-ptr.h
dynamicgraph::Signal< dg::Vector, sigtime_t >
dynamicgraph::sot::DynamicPinocchio::Dummy
int Dummy
Definition: dynamic-pinocchio.h:120
signal-time-dependent.h
exception-dynamic.hh
dynamicgraph::sot::DynamicPinocchio::ccrbaSINTERN
dg::SignalTimeDependent< Dummy, sigtime_t > ccrbaSINTERN
Definition: dynamic-pinocchio.h:135
dynamicgraph::sot::DynamicPinocchio::upperVlSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > upperVlSOUT
Definition: dynamic-pinocchio.h:159
pinocchio::DataTpl
dynamicgraph::sot::DynamicPinocchio::sphericalJoints
std::vector< int > sphericalJoints
Definition: dynamic-pinocchio.h:267
dynamicgraph::sot::DynamicPinocchio::pinocchioAccSINTERN
dg::SignalTimeDependent< dg::Vector, sigtime_t > pinocchioAccSINTERN
Definition: dynamic-pinocchio.h:130
dynamicgraph::sot::MatrixHomogeneous
Eigen::Transform< double, 3, Eigen::Affine > SOT_CORE_EXPORT MatrixHomogeneous
dynamicgraph::sot::DynamicPinocchio::forwardKinematicsSINTERN
dg::SignalTimeDependent< Dummy, sigtime_t > forwardKinematicsSINTERN
Definition: dynamic-pinocchio.h:134
dynamicgraph::sot::DynamicPinocchio::freeFlyerAccelerationSIN
dg::SignalPtr< dg::Vector, sigtime_t > freeFlyerAccelerationSIN
Definition: dynamic-pinocchio.h:126
dynamicgraph::SignalPtr< dg::Vector, sigtime_t >
dynamicgraph
matrix-geometry.hh
dynamicgraph::sot::DynamicPinocchio::getModel
pinocchio::Model * getModel()
Definition: dynamic-pinocchio.h:185
dynamicgraph::sot::DynamicPinocchio::jointVelocitySIN
dg::SignalPtr< dg::Vector, sigtime_t > jointVelocitySIN
Definition: dynamic-pinocchio.h:123
dynamicgraph::sot::DynamicPinocchio
This class provides an inverse dynamic model of the robot. More precisely it wraps the newton euler a...
Definition: dynamic-pinocchio.h:79
dynamicgraph::Entity
dynamicgraph::sot::DynamicPinocchio::m_model
pinocchio::Model * m_model
Definition: dynamic-pinocchio.h:89
dynamicgraph::sot::DynamicPinocchio::upperJlSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > upperJlSOUT
Definition: dynamic-pinocchio.h:157
dynamicgraph::sot::DynamicPinocchio::comSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > comSOUT
Definition: dynamic-pinocchio.h:144
dynamicgraph::sot::DynamicPinocchio::m_data
std::unique_ptr< pinocchio::Data > m_data
Definition: dynamic-pinocchio.h:90
dynamicgraph::sot::DynamicPinocchio::zmpSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > zmpSOUT
Definition: dynamic-pinocchio.h:142
dynamicgraph::sot::DynamicPinocchio::inertiaRealSOUT
dg::SignalTimeDependent< dg::Matrix, sigtime_t > inertiaRealSOUT
Definition: dynamic-pinocchio.h:164
dynamicgraph::sot::DynamicPinocchio::pinocchioPosSINTERN
dg::SignalTimeDependent< dg::Vector, sigtime_t > pinocchioPosSINTERN
Definition: dynamic-pinocchio.h:128
dynamicgraph::sot::DynamicPinocchio::freeFlyerVelocitySIN
dg::SignalPtr< dg::Vector, sigtime_t > freeFlyerVelocitySIN
Definition: dynamic-pinocchio.h:124
dynamicgraph::Matrix
Eigen::MatrixXd Matrix
dynamicgraph::sot::DynamicPinocchio::displayModel
void displayModel() const
Definition: dynamic-pinocchio.h:176
DYNAMIC_GRAPH_ENTITY_DECL
#define DYNAMIC_GRAPH_ENTITY_DECL()
dynamicgraph::sot::DynamicPinocchio::gearRatioSOUT
dg::Signal< dg::Vector, sigtime_t > gearRatioSOUT
Definition: dynamic-pinocchio.h:163
dynamicgraph::sot::DynamicPinocchio::getData
pinocchio::Data * getData()
Definition: dynamic-pinocchio.h:187
dynamicgraph::sot::DynamicPinocchio::inertiaRotorSOUT
dg::Signal< dg::Vector, sigtime_t > inertiaRotorSOUT
Definition: dynamic-pinocchio.h:162
dynamicgraph::sot::DynamicPinocchio::freeFlyerPositionSIN
dg::SignalPtr< dg::Vector, sigtime_t > freeFlyerPositionSIN
Definition: dynamic-pinocchio.h:122
dynamicgraph::sot::DynamicPinocchio::newtonEulerSINTERN
dg::SignalTimeDependent< Dummy, sigtime_t > newtonEulerSINTERN
Definition: dynamic-pinocchio.h:132
dynamicgraph::sot::DynamicPinocchio::MomentaSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > MomentaSOUT
Definition: dynamic-pinocchio.h:165
dynamicgraph::sot::DynamicPinocchio::genericSignalRefs
std::list< dg::SignalBase< sigtime_t > * > genericSignalRefs
Definition: dynamic-pinocchio.h:116
dynamicgraph::sot::DynamicPinocchio::footHeightSOUT
dg::SignalTimeDependent< double, sigtime_t > footHeightSOUT
Definition: dynamic-pinocchio.h:156
dynamicgraph::sot::DynamicPinocchio::jointPositionSIN
dg::SignalPtr< dg::Vector, sigtime_t > jointPositionSIN
Definition: dynamic-pinocchio.h:121
dynamicgraph::sot::DynamicPinocchio::JcomSOUT
dg::SignalTimeDependent< dg::Matrix, sigtime_t > JcomSOUT
Definition: dynamic-pinocchio.h:143
dynamicgraph::sot::DynamicPinocchio::pinocchioVelSINTERN
dg::SignalTimeDependent< dg::Vector, sigtime_t > pinocchioVelSINTERN
Definition: dynamic-pinocchio.h:129
dynamicgraph::Vector
Eigen::VectorXd Vector
a
Vec3f a
linear-algebra.h
dynamicgraph::SignalTimeDependent< dg::Matrix, sigtime_t >
dynamicgraph::sot::DynamicPinocchio::inertiaSOUT
dg::SignalTimeDependent< dg::Matrix, sigtime_t > inertiaSOUT
Definition: dynamic-pinocchio.h:145
dynamicgraph::sot::DynamicPinocchio::lowerJlSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > lowerJlSOUT
Definition: dynamic-pinocchio.h:158
createData
JointDataTpl< Scalar, Options, JointCollectionTpl > createData(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
dynamicgraph::sot::DynamicPinocchio::upperTlSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > upperTlSOUT
Definition: dynamic-pinocchio.h:160
pinocchio::ModelTpl
flags.hh
dynamicgraph::sot::DynamicPinocchio::jointAccelerationSIN
dg::SignalPtr< dg::Vector, sigtime_t > jointAccelerationSIN
Definition: dynamic-pinocchio.h:125
sot
Definition: zmp-from-forces.cpp:11
dynamicgraph::sot::DynamicPinocchio::AngularMomentumSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > AngularMomentumSOUT
Definition: dynamic-pinocchio.h:166
dynamicgraph::sot::DynamicPinocchio::dynamicDriftSOUT
dg::SignalTimeDependent< dg::Vector, sigtime_t > dynamicDriftSOUT
Definition: dynamic-pinocchio.h:167
dynamicgraph::sot::DynamicPinocchio::jacobiansSINTERN
dg::SignalTimeDependent< Dummy, sigtime_t > jacobiansSINTERN
Definition: dynamic-pinocchio.h:133
compile.name
name
Definition: compile.py:22
SOTDYNAMIC_EXPORT
#define SOTDYNAMIC_EXPORT
Definition: dynamic-pinocchio.h:58


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