![]() |
RobWorkProject
23.9.11-
|
Wraps a simulator in a thread safe interface, and creates a separate thread for the simulator to run in. More...
#include <ThreadSimulator.hpp>
Public Types | |
| typedef rw::core::Ptr< ThreadSimulator > | Ptr |
| smart pointer type | |
| typedef boost::function< void(ThreadSimulator *sim, rw::kinematics::State &)> | StepCallback |
| The callback type for a hook into the step call. | |
Public Member Functions | |
| ThreadSimulator (rwlibs::simulation::Simulator::Ptr simulator) | |
| constructor - using the default workcell state as starting state | |
| ThreadSimulator (rwlibs::simulation::Simulator::Ptr simulator, const rw::kinematics::State &state) | |
| constructor | |
| virtual | ~ThreadSimulator () |
| destructor | |
| void | setRealTimeScale (double scale) |
| This can be used to scale simulation time relative to Real World time. A scale of 1.0 makes the simulation run real time (if possible). A scale of 0.5 makes the simulation run twice as fast as real time, where a scale of 2 makes the simulation twice as slow. More... | |
| void | setTimeStep (double dt) |
| sets the timestep that will be used for the calls to the step function of the simulator More... | |
| void | start () |
| starts the simulator constraining it too the specified period | |
| void | stop () |
| tries to stop the simulation and blocks until the thread is stopped | |
| void | postStop () |
| same as stop but this version is non-blocking. | |
| void | step () |
| step the simulation one timestep | |
| rw::kinematics::State | getState () |
| get the current state of the simuation More... | |
| void | setState (const rw::kinematics::State &state) |
| set the state of the simulator More... | |
| void | reset (const rw::kinematics::State &state) |
| reset the simulator to this state. The difference from the setState is that any changes to the non state-states such as the transform of the fixed frame, will also be updated. More... | |
| bool | isRunning () |
| test if this thread simulator is running | |
| double | getTime () |
| get the current simulator time in seconds | |
| DynamicSimulator::Ptr | getSimulator () |
| gets a pointer to the simulator. Make sure to stop the simulation before calling this function, otherwise an exception will be thrown. More... | |
| void | setStepCallBack (StepCallback cb) |
| if set this callback function will be called once on start and then after each step of the simulator. More... | |
| bool | isInError () |
| the simulator might fail because of too large penetrations. This method tests if the simulator is in an error. | |
| void | setInError (bool inError) |
| this can be used to force the resetting of an error state. More... | |
Public Attributes | |
| boost::mutex | _simMutex |
| boost::mutex | _stateMutex |
Wraps a simulator in a thread safe interface, and creates a separate thread for the simulator to run in.
|
inline |
gets a pointer to the simulator. Make sure to stop the simulation before calling this function, otherwise an exception will be thrown.
| rw::kinematics::State getState | ( | ) |
get the current state of the simuation
| void reset | ( | const rw::kinematics::State & | state | ) |
reset the simulator to this state. The difference from the setState is that any changes to the non state-states such as the transform of the fixed frame, will also be updated.
| state | [in] the new state |
|
inline |
this can be used to force the resetting of an error state.
| inError |
|
inline |
This can be used to scale simulation time relative to Real World time. A scale of 1.0 makes the simulation run real time (if possible). A scale of 0.5 makes the simulation run twice as fast as real time, where a scale of 2 makes the simulation twice as slow.
1 simTime -> max( realtime * scale , simDelayInRealTime )
| scale | [in] |
| void setState | ( | const rw::kinematics::State & | state | ) |
set the state of the simulator
| state | [in] the new state |
|
inline |
if set this callback function will be called once on start and then after each step of the simulator.
Set to NULL if no callback is wanted
| void setTimeStep | ( | double | dt | ) |
sets the timestep that will be used for the calls to the step function of the simulator
| dt |