39 #ifndef DART_SIMULATION_WORLD_HPP_ 40 #define DART_SIMULATION_WORLD_HPP_ 46 #include <Eigen/Dense> 48 #include "dart/common/NameManager.hpp" 49 #include "dart/common/SmartPointer.hpp" 50 #include "dart/common/Subject.hpp" 51 #include "dart/common/Timer.hpp" 52 #include "dart/dynamics/CollisionOption.hpp" 53 #include "dart/dynamics/SimpleFrame.hpp" 54 #include "dart/dynamics/Skeleton.hpp" 55 #include "dart/dynamics/SmartPointer.hpp" 56 #include "dart/simulation/Recording.hpp" 57 #include "dart/simulation/SmartPointer.hpp" 70 class ConstraintSolver;
74 class CollisionResult;
79 DART_COMMON_DECLARE_SHARED_WEAK(World)
81 DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_BEGIN
87 const std::string& _oldName,
const std::string& _newName)>;
90 template <
typename... Args>
91 static WorldPtr create(Args&&... args);
98 static std::shared_ptr<World> create(
const std::string& name =
"world");
101 World(
const std::string& _name =
"world");
108 std::shared_ptr<World> clone()
const;
115 const std::string& setName(
const std::string& _newName);
118 const std::string& getName()
const;
121 void setGravity(
const Eigen::Vector3d& _gravity);
124 const Eigen::Vector3d& getGravity()
const;
127 void setTimeStep(
double _timeStep);
130 double getTimeStep()
const;
137 dynamics::SkeletonPtr getSkeleton(std::size_t _index)
const;
142 dynamics::SkeletonPtr getSkeleton(
const std::string& _name)
const;
145 std::size_t getNumSkeletons()
const;
148 std::string addSkeleton(
const dynamics::SkeletonPtr& _skeleton);
151 void removeSkeleton(
const dynamics::SkeletonPtr& _skeleton);
155 std::set<dynamics::SkeletonPtr> removeAllSkeletons();
158 bool hasSkeleton(
const dynamics::ConstSkeletonPtr& skeleton)
const;
161 bool hasSkeleton(
const std::string& skeletonName)
const;
164 int getIndex(
int _index)
const;
167 dynamics::SimpleFramePtr getSimpleFrame(std::size_t _index)
const;
170 dynamics::SimpleFramePtr getSimpleFrame(
const std::string& _name)
const;
173 std::size_t getNumSimpleFrames()
const;
176 std::string addSimpleFrame(
const dynamics::SimpleFramePtr& _frame);
179 void removeSimpleFrame(
const dynamics::SimpleFramePtr& _frame);
183 std::set<dynamics::SimpleFramePtr> removeAllSimpleFrames();
191 bool checkCollision(
bool checkAllCollisions);
219 void step(
bool _resetCommand =
true);
222 void setTime(
double _time);
225 double getTime()
const;
231 int getSimFrames()
const;
241 void setConstraintSolver(dynamics::UniqueConstraintSolverPtr solver);
257 void handleSkeletonNameChange(
258 const dynamics::ConstMetaSkeletonPtr& _skeleton);
269 std::map<dynamics::ConstMetaSkeletonPtr, dynamics::SkeletonPtr>
287 std::map<const dynamics::SimpleFrame*, dynamics::SimpleFramePtr>
328 DART_DECLARE_CLASS_WITH_VIRTUAL_BASE_END
333 #include "dart/simulation/detail/World-impl.hpp" 335 #endif // DART_SIMULATION_WORLD_HPP_ The Subject class is a base class for any object that wants to report when it gets destroyed...
Definition: Subject.hpp:57
std::vector< int > mIndices
The first indeices of each skeleton's dof in mDofs.
Definition: World.hpp:297
Entity class is a base class for any objects that exist in the kinematic tree structure of DART...
Definition: Entity.hpp:60
ConstraintSolver manages constraints and computes constraint impulses.
Definition: ConstraintSolver.hpp:56
double mTime
Current simulation time.
Definition: World.hpp:306
Definition: Aspect.cpp:40
std::string mName
Name of this World.
Definition: World.hpp:264
std::vector< dynamics::SimpleFramePtr > mSimpleFrames
Entities in this world.
Definition: World.hpp:280
Definition: CollisionOption.hpp:44
Definition: CollisionResult.hpp:51
dart::common::NameManager< dynamics::SkeletonPtr > mNameMgrForSkeletons
NameManager for keeping track of Skeletons.
Definition: World.hpp:277
std::unique_ptr< dynamics::ConstraintSolver > mConstraintSolver
Constraint solver.
Definition: World.hpp:312
std::map< const dynamics::SimpleFrame *, dynamics::SimpleFramePtr > mSimpleFrameToShared
Map from raw SimpleFrame pointers to their shared_ptrs.
Definition: World.hpp:288
std::vector< dynamics::SkeletonPtr > mSkeletons
Skeletons in this world.
Definition: World.hpp:267
class World
Definition: World.hpp:83
SlotRegister can be used as a public member for connecting slots to a private Signal member...
Definition: Signal.hpp:228
std::vector< common::Connection > mNameConnectionsForSkeletons
Connections for noticing changes in Skeleton names TODO(MXG): Consider putting this functionality int...
Definition: World.hpp:274
Eigen::Vector3d mGravity
Gravity.
Definition: World.hpp:300
int mFrame
Current simulation frame number.
Definition: World.hpp:309
std::vector< common::Connection > mNameConnectionsForSimpleFrames
Connections for noticing changes in Frame names TODO(MXG): Consider putting this functionality into N...
Definition: World.hpp:284
class Recording
Definition: Recording.hpp:57
dart::common::NameManager< dynamics::SimpleFramePtr > mNameMgrForSimpleFrames
NameManager for keeping track of Entities.
Definition: World.hpp:291
double mTimeStep
Simulation time step.
Definition: World.hpp:303