6 #ifndef CNOID_BODY_DYWORLD_H 7 #define CNOID_BODY_DYWORLD_H 10 #include <cnoid/TimeMeasure> 20 #ifdef ENABLE_SIMULATION_PROFILING 23 const bool BODY_SIMULATION_PROFILING =
false;
36 int numBodies()
const {
return bodyInfoArray.size(); }
43 DyBody* body(
int index)
const;
50 DyBody* body(
const std::string& name)
const;
58 return bodyInfoArray[index].forwardDynamics;
66 int bodyIndex(
const std::string& name)
const;
90 void clearCollisionPairs();
96 void setTimeStep(
double dt);
108 void setCurrentTime(
double tm);
120 void setGravityAcceleration(
const Vector3& g);
134 void enableSensors(
bool on);
136 void setOldAccelSensorCalcMode(
bool on);
141 void setEulerMethod();
146 void setRungeKuttaMethod();
151 virtual void initialize();
153 void setVirtualJointForces();
158 virtual void calcNextState();
166 std::pair<int,bool> getIndexOfLinkPairs(
DyLink* link1,
DyLink* link2);
184 typedef std::map<std::string, int> NameToIndexMap;
185 NameToIndexMap nameToBodyIndexMap;
187 typedef std::map<DyBodyPtr, int> BodyToIndexMap;
188 BodyToIndexMap bodyToIndexMap;
197 bool operator<(
const LinkPairKey& pair2)
const;
199 typedef std::map<LinkPairKey, int> LinkPairKeyToIndexMap;
200 LinkPairKeyToIndexMap linkPairKeyToIndexMap;
202 int numRegisteredLinkPairs;
211 #ifdef ENABLE_SIMULATION_PROFILING 212 double forceSolveTime;
213 double forwardDynamicsTime;
214 double customizerTime;
218 World() : constraintForceSolver(*this) { }
222 constraintForceSolver.initialize();
226 #ifdef ENABLE_SIMULATION_PROFILING 230 #ifdef ENABLE_SIMULATION_PROFILING 231 customizerTime = timer.
measure();
234 constraintForceSolver.solve();
235 #ifdef ENABLE_SIMULATION_PROFILING 236 forceSolveTime = timer.
measure();
240 #ifdef ENABLE_SIMULATION_PROFILING 241 forwardDynamicsTime = timer.
measure();
ForwardDynamicsPtr & forwardDynamics(int index)
get forward dynamics computation method for body
Definition: DyWorld.h:57
bool sensorsAreEnabled
Definition: DyWorld.h:180
void setVirtualJointForces()
Definition: DyWorld.cpp:124
bool isOldAccelSensorCalcMode
Definition: DyWorld.h:181
const Vector3 & gravityAcceleration() const
get gravity acceleration
Definition: DyWorld.h:126
bool operator<(ref_ptr< T > const &a, ref_ptr< T > const &b)
Definition: Referenced.h:260
virtual void calcNextState()
compute forward dynamics and update current state
Definition: DyWorld.h:225
void begin()
Definition: TimeMeasure.h:33
virtual void initialize()
initialize this world. This must be called after all bodies are registered.
Definition: DyWorld.cpp:98
const bool BODY_SIMULATION_PROFILING
Definition: DyWorld.h:23
virtual void initialize()
initialize this world. This must be called after all bodies are registered.
Definition: DyWorld.h:220
double currentTime(void) const
get current time
Definition: DyWorld.h:114
Definition: TimeMeasure.h:16
virtual void calcNextState()
compute forward dynamics and update current state
Definition: DyWorld.cpp:135
ForwardDynamicsPtr forwardDynamics
Definition: DyWorld.h:175
double measure()
Definition: TimeMeasure.h:56
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
double timeStep(void) const
get time step
Definition: DyWorld.h:102
double timeStep_
Definition: DyWorld.h:171
DyBodyPtr body
Definition: DyWorld.h:174
bool hasVirtualJointForces
Definition: DyWorld.h:176
ref_ptr< DyBody > DyBodyPtr
Definition: DyBody.h:143
Definition: DyWorld.h:206
double currentTime_
Definition: DyWorld.h:170
Definition: DyWorld.h:173
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
World()
Definition: DyWorld.h:218
TConstraintForceSolver constraintForceSolver
Definition: DyWorld.h:209
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
boost::shared_ptr< ForwardDynamics > ForwardDynamicsPtr
Definition: ForwardDynamics.h:67
int numBodies() const
get the number of bodies in this world
Definition: DyWorld.h:36
std::vector< BodyInfo > bodyInfoArray
Definition: DyWorld.h:178