ForwardDynamicsCBM.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2008, AIST, the University of Tokyo and General Robotix Inc.
3  * All rights reserved. This program is made available under the terms of the
4  * Eclipse Public License v1.0 which accompanies this distribution, and is
5  * available at http://www.eclipse.org/legal/epl-v10.html
6  * Contributors:
7  * National Institute of Advanced Industrial Science and Technology (AIST)
8  */
14 #ifndef OPENHRP_FORWARD_DYNAMICS_MM_H_INCLUDED
15 #define OPENHRP_FORWARD_DYNAMICS_MM_H_INCLUDED
16 
17 #include <vector>
18 #include <boost/shared_ptr.hpp>
19 #include <boost/intrusive_ptr.hpp>
20 #include <hrpUtil/Eigen3d.h>
21 #include "ForwardDynamics.h"
22 #include "Config.h"
23 
24 namespace hrp
25 {
26  class Link;
27 
28  class Body;
29  typedef boost::shared_ptr<Body> BodyPtr;
30 
31  class LinkTraverse;
32  class AccelSensor;
33  class ForceSensor;
34 
42  class HRPMODEL_API ForwardDynamicsMM : public ForwardDynamics {
43 
44  public:
45 
48 
49  virtual void initialize();
50  virtual void calcNextState();
51 
52  void initializeAccelSolver();
53  void solveUnknownAccels(const Vector3& fext, const Vector3& tauext);
54  void solveUnknownAccels(Link* link, const Vector3& fext, const Vector3& tauext, const Vector3& rootfext, const Vector3& roottauext);
55  void sumExternalForces();
56  void solveUnknownAccels();
57 
58  private:
59 
60  /*
61  Elements of the motion equation
62 
63  | | | | dv | | b1 | | 0 | | totalfext |
64  | M11 | M12 | | dw | | | | 0 | | totaltauext |
65  | | | * |ddq (unkown)| + | | + | d1 | = | u (known) |
66  |-----+-----| |------------| |----| |----| |----------------|
67  | M21 | M22 | | given ddq | | b2 | | d2 | | u2 |
68 
69  |fext |
70  d1 = trans(s)| |
71  |tauext|
72 
73  */
74 
80 
81  std::vector<Link*> torqueModeJoints;
82  std::vector<Link*> highGainModeJoints;
83 
84  //int rootDof; // dof of dv and dw (0 or 6)
87 
89 
97 
100 
107 
110 
112 
113  // buffers for the unit vector method
118 
122  };
123 
124  std::vector<ForceSensorInfo> forceSensorInfo;
125 
126  // Buffers for the Runge Kutta Method
131  std::vector<double> q0;
132  std::vector<double> dq0;
133 
138  std::vector<double> dq;
139  std::vector<double> ddq;
140 
141  virtual void initializeSensors();
142 
143  void calcMotionWithEulerMethod();
144  void calcMotionWithRungeKuttaMethod();
145  void integrateRungeKuttaOneStep(double r, double dt);
146  void preserveHighGainModeJointState();
147  void calcPositionAndVelocityFK();
148  void calcMassMatrix();
149  void setColumnOfMassMatrix(dmatrix& M, int column);
150  void calcInverseDynamics(Link* link, Vector3& out_f, Vector3& out_tau);
151  void calcd1(Link* link, Vector3& out_f, Vector3& out_tau);
152  inline void calcAccelFKandForceSensorValues();
153  void calcAccelFKandForceSensorValues(Link* link, Vector3& out_f, Vector3& out_tau);
154  void updateForceSensorInfo(Link* link, bool hasSensorsAbove);
155  };
156 
157  typedef boost::shared_ptr<ForwardDynamicsMM> ForwardDynamicsMMPtr;
158 
159 };
160 
161 #endif
hrp::ForwardDynamicsMM::dvo
Vector3 dvo
Definition: ForwardDynamicsCBM.h:136
hrp::ForwardDynamicsMM::q0
std::vector< double > q0
Definition: ForwardDynamicsCBM.h:131
hrp::ForwardDynamicsMM::ForceSensorInfo
Definition: ForwardDynamicsCBM.h:119
hrp::ForwardDynamicsMM::accelSolverInitialized
bool accelSolverInitialized
Definition: ForwardDynamicsCBM.h:98
hrp::ForwardDynamicsMM::dworg
Vector3 dworg
Definition: ForwardDynamicsCBM.h:117
hrp::ForwardDynamicsMM::fextTotal
Vector3 fextTotal
Definition: ForwardDynamicsCBM.h:108
hrp::dvector
Eigen::VectorXd dvector
Definition: EigenTypes.h:14
hrp::ForwardDynamicsMM::ddq
std::vector< double > ddq
Definition: ForwardDynamicsCBM.h:139
hrp::ForwardDynamicsMM::ForceSensorInfo::hasSensorsAbove
bool hasSensorsAbove
Definition: ForwardDynamicsCBM.h:121
hrp::ForwardDynamicsMM::ddqorg
dvector ddqorg
Definition: ForwardDynamicsCBM.h:114
hrp::ForwardDynamicsMM::dq0
std::vector< double > dq0
Definition: ForwardDynamicsCBM.h:132
hrp::ForwardDynamicsMM::dqGivenPrev
dvector dqGivenPrev
Definition: ForwardDynamicsCBM.h:102
ForceSensor
Definition: server/UtDynamicsSimulator/Sensor.h:64
hrp
Definition: ColdetModel.h:28
hrp::ForwardDynamicsMM::highGainModeJoints
std::vector< Link * > highGainModeJoints
Definition: ForwardDynamicsCBM.h:82
hrp::ForceSensor
Definition: hrplib/hrpModel/Sensor.h:68
hrp::ForwardDynamicsMM
Definition: ForwardDynamicsCBM.h:42
hrp::ForwardDynamicsMM::d1
dmatrix d1
Definition: ForwardDynamicsCBM.h:78
hrp::ForwardDynamicsMM::c1
dvector c1
Definition: ForwardDynamicsCBM.h:79
hrp::ForwardDynamicsMM::ForceSensorInfo::sensor
ForceSensor * sensor
Definition: ForwardDynamicsCBM.h:120
hrp::ForwardDynamicsMM::vo0
Vector3 vo0
Definition: ForwardDynamicsCBM.h:129
hrp::ForwardDynamicsMM::pGiven
Vector3 pGiven
Definition: ForwardDynamicsCBM.h:93
hrp::Vector3
Eigen::Vector3d Vector3
Definition: EigenTypes.h:11
hrp::ForwardDynamicsMM::ddqGiven
dvector ddqGiven
Definition: ForwardDynamicsCBM.h:92
hrp::ForwardDynamicsMM::given_rootDof
int given_rootDof
Definition: ForwardDynamicsCBM.h:86
hrp::ForwardDynamicsMM::unknown_rootDof
int unknown_rootDof
Definition: ForwardDynamicsCBM.h:85
hrp::ForwardDynamicsMM::voGivenPrev
Vector3 voGivenPrev
Definition: ForwardDynamicsCBM.h:105
hrp::ForwardDynamicsMM::R0
Matrix33 R0
Definition: ForwardDynamicsCBM.h:128
hrp::ForwardDynamicsMM::dvoorg
Vector3 dvoorg
Definition: ForwardDynamicsCBM.h:116
hrp::ForwardDynamicsMM::w0
Vector3 w0
Definition: ForwardDynamicsCBM.h:130
hrp::ForwardDynamicsMM::wGivenPrev
Vector3 wGivenPrev
Definition: ForwardDynamicsCBM.h:106
hrp::ForwardDynamicsMM::RGivenPrev
Matrix33 RGivenPrev
Definition: ForwardDynamicsCBM.h:104
hrp::ForwardDynamicsMM::isNoUnknownAccelMode
bool isNoUnknownAccelMode
Definition: ForwardDynamicsCBM.h:88
hrp::dmatrix
Eigen::MatrixXd dmatrix
Definition: EigenTypes.h:13
hrp::ForwardDynamicsMM::wGiven
Vector3 wGiven
Definition: ForwardDynamicsCBM.h:96
hrp::ForwardDynamicsMM::dq
std::vector< double > dq
Definition: ForwardDynamicsCBM.h:138
hrp::ForwardDynamicsMM::root_w_x_v
Vector3 root_w_x_v
Definition: ForwardDynamicsCBM.h:111
hrp::ForwardDynamicsMM::voGiven
Vector3 voGiven
Definition: ForwardDynamicsCBM.h:95
hrp::ForwardDynamicsMM::dqGiven
dvector dqGiven
Definition: ForwardDynamicsCBM.h:91
hrp::ForwardDynamicsMM::dw
Vector3 dw
Definition: ForwardDynamicsCBM.h:137
hrp::ForwardDynamicsMM::qGiven
dvector qGiven
Definition: ForwardDynamicsCBM.h:90
hrp::ForwardDynamicsMM::w
Vector3 w
Definition: ForwardDynamicsCBM.h:135
hrp::ForwardDynamicsMM::qGivenPrev
dvector qGivenPrev
Definition: ForwardDynamicsCBM.h:101
hrp::BodyPtr
boost::shared_ptr< Body > BodyPtr
Definition: Body.h:315
hrp::ForwardDynamicsMM::M12
dmatrix M12
Definition: ForwardDynamicsCBM.h:76
hrp::ForwardDynamicsMM::uorg
dvector uorg
Definition: ForwardDynamicsCBM.h:115
hrp::ForwardDynamicsMM::pGivenPrev
Vector3 pGivenPrev
Definition: ForwardDynamicsCBM.h:103
hrp::ForwardDynamicsMM::p0
Vector3 p0
Definition: ForwardDynamicsCBM.h:127
ForwardDynamics.h
hrp::ForwardDynamicsMM::M11
dmatrix M11
Definition: ForwardDynamicsCBM.h:75
hrp::ForwardDynamicsMM::b1
dmatrix b1
Definition: ForwardDynamicsCBM.h:77
hrp::Matrix33
Eigen::Matrix3d Matrix33
Definition: EigenTypes.h:12
hrp::ForwardDynamics
Definition: ForwardDynamics.h:35
Eigen3d.h
hrp::ForwardDynamicsMM::forceSensorInfo
std::vector< ForceSensorInfo > forceSensorInfo
Definition: ForwardDynamicsCBM.h:124
hrp::ForwardDynamicsMM::tauextTotal
Vector3 tauextTotal
Definition: ForwardDynamicsCBM.h:109
hrp::ForwardDynamicsMMPtr
boost::shared_ptr< ForwardDynamicsMM > ForwardDynamicsMMPtr
Definition: ForwardDynamicsCBM.h:157
hrp::ForwardDynamicsMM::torqueModeJoints
std::vector< Link * > torqueModeJoints
Definition: ForwardDynamicsCBM.h:81
hrp::ForwardDynamicsMM::ddqGivenCopied
bool ddqGivenCopied
Definition: ForwardDynamicsCBM.h:99
hrp::ForwardDynamicsMM::vo
Vector3 vo
Definition: ForwardDynamicsCBM.h:134
AccelSensor
Definition: server/UtDynamicsSimulator/Sensor.h:91
hrp::ForwardDynamicsMM::RGiven
Matrix33 RGiven
Definition: ForwardDynamicsCBM.h:94


openhrp3
Author(s): AIST, General Robotix Inc., Nakamura Lab of Dept. of Mechano Informatics at University of Tokyo
autogenerated on Wed Sep 7 2022 02:51:02