RobWorkProject  23.9.11-
Public Types | Public Member Functions | List of all members
BeamBody Class Referenceabstract

A deformable body composed of a sequence of connected rigid bodies. More...

#include <BeamBody.hpp>

Inherits Body.

Public Types

typedef rw::core::Ptr< BeamBody > Ptr
 Smart pointer type for a BeamBody.
 
- Public Types inherited from Body
enum  BodyEventType { MassChangedEvent }
 Types of events a body can emit. More...
 
typedef rw::core::Ptr< Body > Ptr
 Smart pointer type for a Body.
 
typedef boost::function< void(BodyEventType)> BodyChangedListener
 Defines a state changed listener. More...
 
typedef rw::core::Event< BodyChangedListener, BodyEventType > BodyChangedEvent
 Type for body events.
 
- Public Types inherited from Stateless
typedef rw::core::Ptr< Stateless > Ptr
 Smart pointer type for Stateless.
 

Public Member Functions

virtual rw::math::Vector3D getPointVelW (const rw::math::Vector3D<> &p, const rw::kinematics::State &state) const =0
 calculates the relative velocity of a point p on the body described in world frames.
 
virtual void reset (rw::kinematics::State &state)=0
 reset the state variables of this body
 
double calcEnergy (const rw::kinematics::State &state, const rw::math::Vector3D<> &gravity=rw::math::Vector3D<>::zero(), const rw::math::Vector3D<> &potZero=rw::math::Vector3D<>::zero()) const
 Calculates the total energy of the body. More...
 
virtual void setForce (const rw::math::Vector3D<> &f, rw::kinematics::State &state)=0
 Sets the force described in parent frame acting on the center mass of this body.
 
virtual rw::math::Vector3D getForce (const rw::kinematics::State &state) const =0
 Gets the force described in parent frame acting on the center mass of this body.
 
virtual void addForce (const rw::math::Vector3D<> &force, rw::kinematics::State &state)=0
 Adds a force described in parent frame to the center of mass of this body.
 
virtual void setTorque (const rw::math::Vector3D<> &t, rw::kinematics::State &state)=0
 set the torque of this body with torque t, where t is described in body frame
 
virtual void addTorque (const rw::math::Vector3D<> &t, rw::kinematics::State &state)=0
 Adds a force described in parent frame to the center of mass of this body.
 
virtual rw::math::Vector3D getTorque (const rw::kinematics::State &state) const =0
 returns torque described in body frame
 
- Public Member Functions inherited from Body
virtual ~Body ()
 Destructor.
 
const std::string & getName () const
 name of body which is the name of the BodyFrame More...
 
rw::kinematics::Frame * getBodyFrame () const
 Returns the frame that the bodies dynamic variables are described relative to. More...
 
const std::vector< rw::geometry::Geometry::Ptr > & getGeometry (const rw::kinematics::State &state)
 Get all geometry associated with this body. More...
 
const std::vector< rw::geometry::Geometry::Ptr > & getGeometry ()
 Get all geometry associated with this body. More...
 
const std::vector< rw::kinematics::Frame * > & getFrames ()
 gets all frames that is staticly connected to this Body More...
 
const BodyInfo & getInfo () const
 get the body info More...
 
BodyInfo & getInfo ()
 retrieve body information More...
 
const std::string & getMaterialID () const
 Material identifier of this object. More...
 
const rw::math::InertiaMatrix & getInertia () const
 get the inertia matrix of this body. The inertia is described around the center of mass and relative to the parent frame. More...
 
BodyChangedEvent & changedEvent ()
 Returns StateChangeEvent needed for subscribing and firing the event. More...
 
void setMass (double m)
 Set the mass of the body. More...
 
void setMass (double m, const rw::math::InertiaMatrix<> &inertia)
 Set the mass and inertia of the body. More...
 
void setMass (double m, const rw::math::InertiaMatrix<> &inertia, const rw::math::Vector3D<> &com)
 Set the mass, inertia and center of mass of the body. More...
 
void setObject (rw::models::Object::Ptr obj)
 Replaces object belonging to the body. More...
 
virtual rw::math::VelocityScrew6D getVelocity (const rw::kinematics::State &state) const =0
 gets the velocity of this body relative to the parent frame More...
 
virtual rw::math::Vector3D getLinVel (const rw::kinematics::State &state) const
 returns the linear velocity described in parent frame
 
virtual rw::math::Vector3D getAngVel (const rw::kinematics::State &state) const
 returns the angular velocity described in parent frame
 
rw::math::Vector3D getLinVelW (const rw::kinematics::State &state) const
 returns the linear velocity described in world frame
 
rw::math::Vector3D getAngVelW (const rw::kinematics::State &state) const
 returns the angular velocity described in world frame
 
virtual rw::kinematics::Frame * getParentFrame (const rw::kinematics::State &state) const
 Get the parent frame of this body. More...
 
virtual void setForceW (const rw::math::Vector3D<> &f, rw::kinematics::State &state)
 Sets the force described in world frame acting on the center mass of this body. More...
 
virtual rw::math::Vector3D getForceW (const rw::kinematics::State &state) const
 Gets the force described in world frame acting on the center mass of this body.
 
virtual void addForceW (const rw::math::Vector3D<> &force, rw::kinematics::State &state)
 Adds a force described in world frame to the center of mass of this body.
 
void addForceToPos (const rw::math::Vector3D<> &force, const rw::math::Vector3D<> &pos, rw::kinematics::State &state)
 Adds a force described in parent frame to this body which is working on a specific position pos that is described relative to this body.
 
virtual void addForceWToPosW (const rw::math::Vector3D<> &force, const rw::math::Vector3D<> &pos, rw::kinematics::State &state)
 Adds a force described in world frame to this body which is worked on a specific position pos that is described relative to world.
 
virtual void setTorqueW (const rw::math::Vector3D<> &t, rw::kinematics::State &state)
 set the torque of this body with torque t, where t is described in world frame
 
virtual void addTorqueW (const rw::math::Vector3D<> &t, rw::kinematics::State &state)
 Add a torque to the body. More...
 
virtual rw::math::Vector3D getTorqueW (const rw::kinematics::State &state) const
 returns torque described in world frame
 
virtual rw::math::Transform3D getTransformW (const rw::kinematics::State &state) const
 Get the current position and orientation of the body frame relative to world frame. More...
 
rw::math::Transform3D pTbf (const rw::kinematics::State &state) const
 Get the current position and orientation of the body frame relative to the body parent frame. More...
 
rw::math::Transform3D pTcom (const rw::kinematics::State &state) const
 Get the current position of the body center of mass relative to the body parent frame. More...
 
rw::math::Transform3D wTbf (const rw::kinematics::State &state) const
 Get the current position and orientation of the body frame relative to world frame. More...
 
rw::math::Transform3D wTcom (const rw::kinematics::State &state) const
 Get the current position of the body center of mass relative to the world frame. More...
 
rw::models::Object::Ptr getObject () const
 Get the geometry information for the body. More...
 
- Public Member Functions inherited from Stateless
virtual ~Stateless ()
 destructor
 
virtual void registerIn (State &state)
 initialize this stateless data to a specific state More...
 
virtual void registerIn (StateStructure::Ptr state)
 register this stateless object in a statestructure.
 
virtual void unregister ()
 unregisters all state data of this stateless object
 
StateStructure::Ptr getStateStructure ()
 Get the state structure. More...
 
const StateStructure::Ptr getStateStructure () const
 Get the state structure. More...
 
bool isRegistered ()
 Check if object has registered its state. More...
 

Additional Inherited Members

- Public Attributes inherited from Body
BodyChangedEvent _bodyChangedEvent
 The event where listeners can be registered.
 
- Protected Member Functions inherited from Body
 Body (const BodyInfo &info, rw::models::Object::Ptr obj)
 Construct a new dynamic body. More...
 
- Protected Member Functions inherited from Stateless
 Stateless ()
 constructor
 
template<class T >
void add (StatelessData< T > &data)
 implementations of sensor should add all their stateless data on initialization
 
void add (StateData *data)
 Add data. More...
 
void add (rw::core::Ptr< StateData > data)
 implementations of sensor should add all their state data on initialization
 
- Protected Attributes inherited from Body
BodyInfo _info
 The dynamic parameters for the body.
 
- Protected Attributes inherited from Stateless
bool _registered
 True if object has registered its state.
 
std::vector< rw::core::Ptr< StateData > > _datas
 Data.
 
StateStructure::Ptr _stateStruct
 The state structure.
 

Detailed Description

A deformable body composed of a sequence of connected rigid bodies.

The beam body models deformations that are approximated with relatively stiff joints and small deformations. eg. the bending of a long metal beam due to gravitational effects.

Member Function Documentation

◆ calcEnergy()

double calcEnergy ( const rw::kinematics::State &  state,
const rw::math::Vector3D<> &  gravity = rw::math::Vector3D<>::zero(),
const rw::math::Vector3D<> &  potZero = rw::math::Vector3D<>::zero() 
) const
inlinevirtual

Calculates the total energy of the body.

Parameters
state[in] the state with position and velocity of the body.
gravity[in] (optional) the gravity to use for calculation of potential energy
  • if not specified, no potential energy is calculated.
potZero[in] (optional) the zero point for calculation of potential energy.
Returns
the total energy of the body.

Implements Body.


The documentation for this class was generated from the following file: