![]() |
RobWorkProject
23.9.11-
|
A general physics engine interface for simulating dynamics of objects and robot devices. More...
#include <DynamicSimulator.hpp>
Inherits Simulator.
Public Types | |
| typedef rw::core::Ptr< DynamicSimulator > | Ptr |
| smart pointer type of this class | |
Public Types inherited from Simulator | |
| typedef rw::core::Ptr< Simulator > | Ptr |
| smart pointer type of simulator | |
Public Member Functions | |
| DynamicSimulator (rwsim::dynamics::DynamicWorkCell::Ptr dworkcell, rw::core::Ptr< PhysicsEngine > pengine) | |
| Constructor. More... | |
| DynamicSimulator (rwsim::dynamics::DynamicWorkCell::Ptr dworkcell) | |
| Constructor for a DynamicSimulator using a default PhysicsEngine. More... | |
| virtual | ~DynamicSimulator () |
| destructor | |
| void | exitPhysics () |
| cleans up the allocated storage | |
| double | getTime () |
| gets the the current simulated time More... | |
| void | setEnabled (dynamics::Body::Ptr body, bool enabled) |
| Enables or disables a body. More... | |
| drawable::SimulatorDebugRender::Ptr | createDebugRender () |
| create a debug render for the specific implementation More... | |
| rw::core::PropertyMap & | getPropertyMap () |
| Get the properties used by the simulator. More... | |
| void | addController (rw::core::Ptr< rwlibs::simulation::SimulatedController > controller) |
| add a simulated controller to this simulator More... | |
| void | removeController (rw::core::Ptr< rwlibs::simulation::SimulatedController > controller) |
| removes a simulated controller from this simulator More... | |
| void | addBody (rwsim::dynamics::Body::Ptr body, rw::kinematics::State &state) |
| Add a body to the simulator. More... | |
| void | addBody (rwsim::dynamics::Body::Ptr body) |
| Add a body to the simulator. More... | |
| void | addDevice (rwsim::dynamics::DynamicDevice::Ptr dev, rw::kinematics::State &state) |
| Add a device to the simulator. More... | |
| void | addDevice (rwsim::dynamics::DynamicDevice::Ptr dev) |
| Add a device to the simulator. More... | |
| void | addSensor (rwlibs::simulation::SimulatedSensor::Ptr sensor, rw::kinematics::State &state) |
| Add a simulated sensor to the simulator. More... | |
| void | addSensor (rwlibs::simulation::SimulatedSensor::Ptr sensor) |
| Add a simulated sensor to the simulator. More... | |
| void | removeSensor (rwlibs::simulation::SimulatedSensor::Ptr sensor) |
| Remove a simulated sensor from the simulator. More... | |
| std::vector< rwlibs::simulation::SimulatedSensor::Ptr > | getSensors () |
| get the list of simulated sensors More... | |
| void | step (double dt) |
| take a step forward in time with timestep dt. More... | |
| rw::kinematics::State & | getState () |
| get current state of simulator More... | |
| void | reset (const rw::kinematics::State &state) |
| reset velocity and acceleration of all bodies to 0. And sets the position of all bodies to that described in state More... | |
| void | init (rw::kinematics::State &state) |
| initialize simulator with state variables More... | |
| void | setEnabled (rw::core::Ptr< rw::kinematics::Frame > f, bool) |
| void | setDynamicsEnabled (rwsim::dynamics::Body::Ptr body, bool enabled) |
| Enable or disable a body in the simulation. More... | |
| void | setTarget (rwsim::dynamics::Body::Ptr body, const rw::math::Transform3D<> &target, rw::kinematics::State &state, double maxLinVel=0.5, double maxLinAcc=1.0, double maxAngVel=0.4, double maxAngAcc=1.0) |
| Set a target position of a body. This will add forces/velocities to a body such that it moves toward the target pose. More... | |
| void | setTarget (rwsim::dynamics::Body::Ptr body, const rw::math::Transform3D<> &target, double maxLinVel=0.5, double maxLinAcc=1.0, double maxAngVel=0.4, double maxAngAcc=1.0) |
| Set a target position of a body. This will add forces/velocities to a body such that it moves toward the target pose. More... | |
| void | setTarget (dynamics::Body::Ptr body, rw::trajectory::Trajectory< rw::math::Transform3D<>>::Ptr traj) |
| Set a target trajectory for a body. More... | |
| void | setTarget (dynamics::Body::Ptr body, const rw::math::VelocityScrew6D<> &velocity) |
| Set a velocity target. More... | |
| void | disableBodyControl (dynamics::Body::Ptr body) |
| disables the target control of body body. More... | |
| void | disableBodyControl () |
| Disable all control for all bodies. | |
| rwsim::control::BodyController::Ptr | getBodyController () |
| Get the body controller. More... | |
| void | attach (rwsim::dynamics::Body::Ptr b1, rwsim::dynamics::Body::Ptr b2) |
| Attach bodies. More... | |
| void | detach (rwsim::dynamics::Body::Ptr b1, rwsim::dynamics::Body::Ptr b2) |
| Detach bodies. More... | |
| rwsim::dynamics::DynamicWorkCell::Ptr | getDynamicWorkCell () |
| Get the dynamic workcell used by the simulator. More... | |
Public Member Functions inherited from Simulator | |
| virtual rw::sensor::Sensor::Ptr | getSensor (const std::string &name) |
| get sensor with specific name | |
| virtual rwlibs::control::Controller::Ptr | getController (const std::string &name) |
| get controller with specific name | |
| template<class SIMSENSORTYPE > | |
| rw::sensor::Sensor::Ptr | getSensorHandle (SIMSENSORTYPE *ssensor) |
| get sensorhandle to a statefull instance of the simulated sensor, controlling the sensor in this simulator. More... | |
| template<class SIMSENSORTYPE > | |
| bool | hasHandle (SIMSENSORTYPE *ssensor) |
| Test if handle for simulatedsensor exists. More... | |
| template<class SIMSENSORTYPE > | |
| void | addHandle (SIMSENSORTYPE *ssensor, rw::sensor::Sensor::Ptr sensor) |
| add handle to a specific simulated sensor 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);
physicsEngine->step(dt, state);
Foreach sensor=_sensors sensor->update(dt,state)
| DynamicSimulator | ( | rwsim::dynamics::DynamicWorkCell::Ptr | dworkcell, |
| rw::core::Ptr< PhysicsEngine > | pengine | ||
| ) |
Constructor.
| dworkcell | [in] the dynamic workcell. |
| pengine | [in] the physics engine to use. |
| DynamicSimulator | ( | rwsim::dynamics::DynamicWorkCell::Ptr | dworkcell | ) |
Constructor for a DynamicSimulator using a default PhysicsEngine.
| dworkcell | [in] the dynamic workcell. |
|
inline |
Add a body to the simulator.
| body | [in] the body to add. |
| void addBody | ( | rwsim::dynamics::Body::Ptr | body, |
| rw::kinematics::State & | state | ||
| ) |
Add a body to the simulator.
| body | [in] the body to add. |
| state | [in] the state giving the initial pose of the body. |
| void addController | ( | rw::core::Ptr< rwlibs::simulation::SimulatedController > | controller | ) |
add a simulated controller to this simulator
| controller | [in] the controller to add. |
|
inline |
Add a device to the simulator.
| dev | [in] the device to add. |
| void addDevice | ( | rwsim::dynamics::DynamicDevice::Ptr | dev, |
| rw::kinematics::State & | state | ||
| ) |
Add a device to the simulator.
| dev | [in] the device to add. |
| state | [in/out] the state giving the initial configuration of the device, which might be changed. |
|
inline |
Add a simulated sensor to the simulator.
| sensor | [in] the sensor to add. |
| void addSensor | ( | rwlibs::simulation::SimulatedSensor::Ptr | sensor, |
| rw::kinematics::State & | state | ||
| ) |
Add a simulated sensor to the simulator.
| sensor | [in] the sensor to add. |
| state | [in/out] if the sensor is not registered in the state, it will be registered. |
| void attach | ( | rwsim::dynamics::Body::Ptr | b1, |
| rwsim::dynamics::Body::Ptr | b2 | ||
| ) |
Attach bodies.
| b1 | [in] first body. |
| b2 | [in] second body. |
| drawable::SimulatorDebugRender::Ptr createDebugRender | ( | ) |
create a debug render for the specific implementation
| void detach | ( | rwsim::dynamics::Body::Ptr | b1, |
| rwsim::dynamics::Body::Ptr | b2 | ||
| ) |
Detach bodies.
| b1 | [in] first body. |
| b2 | [in] second body. |
| void disableBodyControl | ( | dynamics::Body::Ptr | body | ) |
disables the target control of body body.
| body | [in] the body. |
|
inline |
Get the body controller.
|
inline |
Get the dynamic workcell used by the simulator.
|
virtual |
Get the properties used by the simulator.
Implements Simulator.
| std::vector<rwlibs::simulation::SimulatedSensor::Ptr> getSensors | ( | ) |
get the list of simulated sensors
|
virtual |
|
virtual |
|
virtual |
initialize simulator with state variables
Implements Simulator.
| void removeController | ( | rw::core::Ptr< rwlibs::simulation::SimulatedController > | controller | ) |
removes a simulated controller from this simulator
| controller | [in] the controller to remove. |
| void removeSensor | ( | rwlibs::simulation::SimulatedSensor::Ptr | sensor | ) |
Remove a simulated sensor from the simulator.
| sensor | [in] the sensor to remove. |
|
virtual |
reset velocity and acceleration of all bodies to 0. And sets the position of all bodies to that described in state
Implements Simulator.
| void setDynamicsEnabled | ( | rwsim::dynamics::Body::Ptr | body, |
| bool | enabled | ||
| ) |
Enable or disable a body in the simulation.
| body | [in] the body. |
| enabled | [in] boolean indicating if body should be enabled or not. |
| void setEnabled | ( | dynamics::Body::Ptr | body, |
| bool | enabled | ||
| ) |
Enables or disables a body.
| body | [in] the body. |
| enabled | [in] boolean indicating whether body should be enabled or disabled. |
|
virtual |
Enables or disables simulation of a frame
Implements Simulator.
| void setTarget | ( | dynamics::Body::Ptr | body, |
| const rw::math::VelocityScrew6D<> & | velocity | ||
| ) |
Set a velocity target.
| body | [in] the body that should move. |
| velocity | [in] the velocity target. |
| void setTarget | ( | dynamics::Body::Ptr | body, |
| rw::trajectory::Trajectory< rw::math::Transform3D<>>::Ptr | traj | ||
| ) |
Set a target trajectory for a body.
| body | [in] the body. |
| traj | [in] the trajectory. |
|
inline |
Set a target position of a body. This will add forces/velocities to a body such that it moves toward the target pose.
| body | [in] the body to control |
| target | [in] the target pose |
| maxLinVel | [in] (optional) maximum linear velocity of the body in \(\frac{m}{s}\). |
| maxLinAcc | [in] (optional) maximum linear acceleration of the body in \(\frac{m}{s^2}\). |
| maxAngVel | [in] (optional) maximum angular velocity of the body in \(\frac{rad}{s}\). |
| maxAngAcc | [in] (optional) maximum angular acceleration of the body in \(\frac{rad}{s^2}\). |
| void setTarget | ( | rwsim::dynamics::Body::Ptr | body, |
| const rw::math::Transform3D<> & | target, | ||
| rw::kinematics::State & | state, | ||
| double | maxLinVel = 0.5, |
||
| double | maxLinAcc = 1.0, |
||
| double | maxAngVel = 0.4, |
||
| double | maxAngAcc = 1.0 |
||
| ) |
Set a target position of a body. This will add forces/velocities to a body such that it moves toward the target pose.
| body | [in] the body to control |
| target | [in] the target pose |
| state | [in] the current state. |
| maxLinVel | [in] (optional) maximum linear velocity of the body in \(\frac{m}{s}\). |
| maxLinAcc | [in] (optional) maximum linear acceleration of the body in \(\frac{m}{s^2}\). |
| maxAngVel | [in] (optional) maximum angular velocity of the body in \(\frac{rad}{s}\). |
| maxAngAcc | [in] (optional) maximum angular acceleration of the body in \(\frac{rad}{s^2}\). |
|
virtual |