![]() |
RobWorkProject
24.12.4-
|
A general physics engine interface for simulating dynamics of objects and robot devices. More...
#include <PhysicsEngine.hpp>
Inherited by ODESimulator, RWSimulator, and BtSimulator.
Classes | |
class | Dispatcher |
Each engine implements a dispatcher that creates instances of the engine. More... | |
class | Factory |
a factory for PhysicsEngine. This factory defines an extension point for PhysicsEngines. More... | |
Public Types | |
typedef rw::core::Ptr< PhysicsEngine > | Ptr |
smart pointer type of PhysicsEngine | |
Public Member Functions | |
virtual | ~PhysicsEngine () |
destructor | |
virtual void | load (rw::core::Ptr< rwsim::dynamics::DynamicWorkCell > dwc)=0 |
adds dynamic workcell | |
virtual bool | setContactDetector (rw::core::Ptr< rwsim::contacts::BaseContactDetector > detector)=0 |
Change the contact detector used by the engine. More... | |
virtual void | step (double dt, rw::kinematics::State &state)=0 |
Performs a step and updates the state. | |
virtual void | resetScene (rw::kinematics::State &state)=0 |
reset velocity and acceleration of all bodies to 0. And sets the position of all bodies to that described in state | |
virtual void | initPhysics (rw::kinematics::State &state)=0 |
initialize simulator physics with state | |
virtual void | exitPhysics ()=0 |
cleans up the allocated storage fo bullet physics | |
virtual double | getTime ()=0 |
gets the the current simulated time | |
virtual void | setEnabled (rw::core::Ptr< rwsim::dynamics::Body > body, bool enabled)=0 |
virtual void | setDynamicsEnabled (rw::core::Ptr< rwsim::dynamics::Body > body, bool enabled)=0 |
disables the dynamics of a body. More... | |
virtual drawable::SimulatorDebugRender::Ptr | createDebugRender ()=0 |
create a debug render for the specific implementation More... | |
virtual rw::core::PropertyMap & | getPropertyMap ()=0 |
properties of the physics engine | |
virtual void | emitPropertyChanged ()=0 |
should be called when properties have been changed and one wants the physics engine to reflect the new properties. | |
virtual void | addController (rw::core::Ptr< rwlibs::simulation::SimulatedController > controller)=0 |
add a simulated controller to this simulator | |
virtual void | removeController (rw::core::Ptr< rwlibs::simulation::SimulatedController > controller)=0 |
removes a simulated controller from this simulator More... | |
virtual void | addBody (rw::core::Ptr< rwsim::dynamics::Body > body, rw::kinematics::State &state)=0 |
add a body to the physics engine More... | |
virtual void | addDevice (rw::core::Ptr< rwsim::dynamics::DynamicDevice > device, rw::kinematics::State &state)=0 |
add a dynamic device to the physics engine More... | |
virtual void | addSensor (rwlibs::simulation::SimulatedSensor::Ptr sensor, rw::kinematics::State &state)=0 |
add a simulated sensor to this simulator | |
virtual void | removeSensor (rwlibs::simulation::SimulatedSensor::Ptr sensor)=0 |
add a simulated sensor to this simulator | |
virtual void | attach (rw::core::Ptr< rwsim::dynamics::Body > b1, rw::core::Ptr< rwsim::dynamics::Body > b2)=0 |
creates a 6dof dynamic constraint between the two bodies b1 and b2 More... | |
virtual void | detach (rw::core::Ptr< rwsim::dynamics::Body > b1, rw::core::Ptr< rwsim::dynamics::Body > b2)=0 |
removes the 6dof constraint between bodies b1 and b2 if there is any More... | |
virtual std::vector< rwlibs::simulation::SimulatedSensor::Ptr > | getSensors ()=0 |
get the list of simulated sensors More... | |
virtual void | setSimulatorLog (rw::core::Ptr< rwsim::log::SimulatorLogScope > log) |
Store internal info during simulation. More... | |
virtual void | forceUpdate (rw::core::Ptr< rwsim::dynamics::Body > body, rw::kinematics::State &state) |
this will force the physics engine to update the state of the body. This can be i.e. be used to teleport a rigid body to a new position. More... | |
A general physics engine interface for simulating dynamics of objects and robot devices.
The general step looks like this:;
Foreach controller=_controllers controller->update(dt,state);
collision detection (contact detection) constraint solving update device/body positions (integration)
Foreach sensor=_sensors sensor->update(dt,state)
|
pure virtual |
add a body to the physics engine
body | [in] body to add |
state | [in] current state |
Implemented in BtSimulator.
|
pure virtual |
add a dynamic device to the physics engine
device | [in] device to add |
state | [in] current state |
Implemented in BtSimulator, and RWSimulator.
|
pure virtual |
creates a 6dof dynamic constraint between the two bodies b1 and b2
b1 | |
b2 |
Implemented in BtSimulator.
|
pure virtual |
create a debug render for the specific implementation
Implemented in ODESimulator, BtSimulator, and RWSimulator.
|
pure virtual |
removes the 6dof constraint between bodies b1 and b2 if there is any
b1 | |
b2 |
Implemented in BtSimulator.
|
inlinevirtual |
this will force the physics engine to update the state of the body. This can be i.e. be used to teleport a rigid body to a new position.
body | [in] the body to update. |
state | [in] the state to update the body from. |
|
pure virtual |
get the list of simulated sensors
Implemented in ODESimulator, BtSimulator, and RWSimulator.
|
pure virtual |
removes a simulated controller from this simulator
controller |
Implemented in BtSimulator, and RWSimulator.
|
pure virtual |
Change the contact detector used by the engine.
detector | [in] the contact detector to use (NULL for default contact detection) |
Implemented in ODESimulator, BtSimulator, and RWSimulator.
|
pure virtual |
|
pure virtual |
Enables or disables a body. A body is automatically enabled if contacts or new interactions with the Body arrise
body | [in] the body to enable/disable |
enabled | [in] |
Implemented in BtSimulator.
|
inlinevirtual |
Store internal info during simulation.
This can be used for debugging, statistics, visualization of internal subresults, timing, benchmark and similar.
log | [in] a pointer to the log structure to store to. |
Reimplemented in ODESimulator.