6 #ifndef CNOID_BODY_PLUGIN_SIMULATOR_ITEM_H 7 #define CNOID_BODY_PLUGIN_SIMULATOR_ITEM_H 15 #ifdef ENABLE_SIMULATION_PROFILING 18 const bool SIMULATION_PROFILING =
false;
27 class SimulationBodyImpl;
28 class SimulatorItemImpl;
29 class SimulatedMotionEngineManager;
41 int numControllers()
const;
47 void cloneShapesOnce();
52 bool isActive()
const;
53 void setActive(
bool on);
59 void notifyUnrecordedDeviceStateChange(
Device* device);
61 const std::string& resultItemPrefix()
const;
63 virtual void initializeResultBuffers();
64 virtual void initializeResultItems();
69 virtual void bufferResults();
70 virtual void flushResults();
73 SimulationBodyImpl* impl;
74 friend class SimulatorItemImpl;
90 virtual double worldTimeStep();
92 virtual bool startSimulation(
bool doReset =
true);
93 virtual void stopSimulation();
94 virtual void pauseSimulation();
95 virtual void restartSimulation();
96 bool isRunning()
const;
97 bool isPausing()
const;
98 bool isActive()
const;
101 int currentFrame()
const;
104 double currentTime()
const;
107 int simulationFrame()
const;
110 double simulationTime()
const;
118 void setRecordingMode(
int selection);
120 void setTimeRangeMode(
int selection);
121 void setRealtimeSyncMode(
bool on);
122 void setDeviceStateOutputEnabled(
bool on);
124 bool isRecordingEnabled()
const;
125 bool isDeviceStateOutputEnabled()
const;
127 bool isAllLinkPositionOutputMode();
128 virtual void setAllLinkPositionOutputMode(
bool on);
133 const std::vector<SimulationBody*>& simulationBodies();
141 int addPreDynamicsFunction(boost::function<
void()> func);
142 int addMidDynamicsFunction(boost::function<
void()> func);
143 int addPostDynamicsFunction(boost::function<
void()> func);
145 void removePreDynamicsFunction(
int id);
146 void removeMidDynamicsFunction(
int id);
147 void removePostDynamicsFunction(
int id);
157 sigSimulationBodyListUpdated();
168 virtual void clearExternalForces();
174 virtual void setVirtualElasticString(
176 virtual void clearVirtualElasticStrings();
179 virtual bool isForcedPositionActiveFor(
BodyItem* bodyItem)
const;
180 virtual void clearForcedPositions();
185 virtual void onDisconnectedFromRoot();
193 CollisionDetectorPtr collisionDetector();
199 virtual bool initializeSimulation(
const std::vector<SimulationBody*>& simBodies) = 0;
201 virtual void initializeSimulationThread();
203 virtual void finalizeSimulationThread();
209 virtual bool stepSimulation(
const std::vector<SimulationBody*>& activeSimBodies) = 0;
214 virtual void finalizeSimulation();
218 return boost::make_shared<CollisionLinkPairList>();
223 bool restore(
const Archive& archive);
225 #ifdef ENABLE_SIMULATION_PROFILING 226 virtual void getProfilingNames(std::vector<std::string>& profilingNames);
227 virtual void getProfilingTimes(std::vector<double>& profilingTimes);
232 SimulatorItemImpl* impl;
233 friend class SimulatorItemImpl;
234 friend class SimulatedMotionEngineManager;
Definition: SimulatorItem.h:80
const bool SIMULATION_PROFILING
Definition: SimulatorItem.h:18
boost::shared_ptr< CollisionDetector > CollisionDetectorPtr
Definition: CollisionDetector.h:23
Definition: ExtensionManager.h:26
RecordingMode
Definition: SimulatorItem.h:115
Definition: SimulatorItem.h:32
TimeRangeMode
Definition: SimulatorItem.h:116
virtual CollisionLinkPairListPtr getCollisions()
Definition: SimulatorItem.h:216
Definition: Referenced.h:67
ref_ptr< SimulatorItem > SimulatorItemPtr
Definition: SimulatorItem.h:237
Definition: PutPropertyFunction.h:35
Definition: Referenced.h:128
Definition: SceneGraph.h:56
Definition: Selection.h:14
Definition: CollisionDetector.h:26
Eigen::Transform< double, 3, Eigen::AffineCompact > Position
Definition: EigenTypes.h:73
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
ref_ptr< SimulationBody > SimulationBodyPtr
Definition: SimulatorItem.h:77
Eigen::Vector3d Vector3
Definition: EigenTypes.h:58
Definition: ControllerItem.h:28
boost::shared_ptr< CollisionLinkPairList > CollisionLinkPairListPtr
Definition: CollisionSeq.h:22
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
Definition: BodyItem.h:31
Definition: SimulatorItem.h:116