DART  6.10.1
dart::dynamics::Entity Class Referenceabstract

Entity class is a base class for any objects that exist in the kinematic tree structure of DART. More...

#include <Entity.hpp>

Inheritance diagram for dart::dynamics::Entity:
dart::common::Subject dart::dynamics::Detachable dart::dynamics::Frame dart::dynamics::PointMassNotifier dart::dynamics::SimpleFrame dart::dynamics::FixedFrame dart::dynamics::JacobianNode dart::dynamics::ShapeFrame dart::dynamics::WorldFrame dart::gui::osg::InteractiveFrame dart::gui::osg::InteractiveTool dart::dynamics::TemplatedJacobianNode< BodyNode > dart::dynamics::TemplatedJacobianNode< NodeType > dart::dynamics::SimpleFrame dart::dynamics::BodyNode dart::gui::osg::InteractiveFrame dart::gui::osg::InteractiveTool

Public Types

using EntitySignal = common::Signal< void(const Entity *)>
 
using FrameChangedSignal = common::Signal< void(const Entity *, const Frame *_oldFrame, const Frame *_newFrame)>
 
using NameChangedSignal = common::Signal< void(const Entity *, const std::string &_oldName, const std::string &_newName)>
 

Public Member Functions

 Entity (Frame *_refFrame, bool _quiet)
 Constructor for typical usage. More...
 
 Entity ()
 Default constructor, delegates to Entity(ConstructAbstract_t) More...
 
 Entity (const Entity &)=delete
 
virtual ~Entity ()
 Destructor. More...
 
virtual const std::string & setName (const std::string &_name)=0
 Set name. More...
 
virtual const std::string & getName () const =0
 Return the name of this Entity. More...
 
FramegetParentFrame ()
 Get the parent (reference) frame of this Entity. More...
 
const FramegetParentFrame () const
 Get the parent (reference) frame of this Entity. More...
 
bool descendsFrom (const Frame *_someFrame) const
 Returns true if and only if this Entity is itself (i.e. More...
 
bool isFrame () const
 True iff this Entity is also a Frame. More...
 
bool isQuiet () const
 Returns true if this Entity is set to be quiet. More...
 
virtual void notifyTransformUpdate ()
 Notify the transformation update of this Entity that its parent Frame's pose is needed. More...
 
virtual void dirtyTransform ()
 Notify the transformation update of this Entity that its parent Frame's pose is needed. More...
 
bool needsTransformUpdate () const
 Returns true iff a transform update is needed for this Entity. More...
 
virtual void notifyVelocityUpdate ()
 Notify the velocity update of this Entity that its parent Frame's velocity is needed. More...
 
virtual void dirtyVelocity ()
 Notify the velocity update of this Entity that its parent Frame's velocity is needed. More...
 
bool needsVelocityUpdate () const
 Returns true iff a velocity update is needed for this Entity. More...
 
virtual void notifyAccelerationUpdate ()
 Notify the acceleration of this Entity that its parent Frame's acceleration is needed. More...
 
virtual void dirtyAcceleration ()
 Notify the acceleration of this Entity that its parent Frame's acceleration is needed. More...
 
bool needsAccelerationUpdate () const
 Returns true iff an acceleration update is needed for this Entity. More...
 

Protected Types

enum  ConstructFrameTag { ConstructFrame }
 Used when constructing a Frame class, because the Frame constructor will take care of setting up the parameters you pass into it. More...
 
enum  ConstructAbstractTag { ConstructAbstract }
 Used when constructing a pure abstract class, because calling the Entity constructor is just a formality. More...
 

Protected Member Functions

 Entity (ConstructFrameTag)
 
 Entity (ConstructAbstractTag)
 
virtual void changeParentFrame (Frame *_newParentFrame)
 Used by derived classes to change their parent frames. More...
 
void sendDestructionNotification () const
 Send a destruction notification to all Observers. More...
 
void addObserver (Observer *_observer) const
 Add an Observer to the list of Observers. More...
 
void removeObserver (Observer *_observer) const
 Remove an Observer from the list of Observers. More...
 

Protected Attributes

FramemParentFrame
 Parent frame of this Entity. More...
 
bool mNeedTransformUpdate
 Does this Entity need a Transform update. More...
 
bool mNeedVelocityUpdate
 Does this Entity need a Velocity update. More...
 
bool mNeedAccelerationUpdate
 Does this Entity need an Acceleration update. More...
 
FrameChangedSignal mFrameChangedSignal
 Frame changed signal. More...
 
NameChangedSignal mNameChangedSignal
 Name changed signal. More...
 
EntitySignal mTransformUpdatedSignal
 Transform changed signal. More...
 
EntitySignal mVelocityChangedSignal
 Velocity changed signal. More...
 
EntitySignal mAccelerationChangedSignal
 Acceleration changed signal. More...
 
std::set< Observer * > mObservers
 List of current Observers. More...
 

Friends

class Frame
 

Slot registers

common::SlotRegister< FrameChangedSignalonFrameChanged
 Slot register for frame changed signal. More...
 
common::SlotRegister< NameChangedSignalonNameChanged
 Slot register for name changed signal. More...
 
common::SlotRegister< EntitySignalonTransformUpdated
 Slot register for transform updated signal. More...
 
common::SlotRegister< EntitySignalonVelocityChanged
 Slot register for velocity updated signal. More...
 
common::SlotRegister< EntitySignalonAccelerationChanged
 Slot register for acceleration updated signal. More...
 
const bool mAmQuiet
 Whether or not this Entity is set to be quiet. More...
 
bool mAmFrame
 Whether or not this Entity is a Frame. More...
 

Detailed Description

Entity class is a base class for any objects that exist in the kinematic tree structure of DART.

Entities all share the following properties: they exist within a reference frame, have a name, and are visualizable. However, different Entity types may have different policies about how/if their reference frame or name can be changed. Use the Detachable class to create an Entity whose reference Frame can be changed arbitrarily.

Member Typedef Documentation

◆ EntitySignal

◆ FrameChangedSignal

using dart::dynamics::Entity::FrameChangedSignal = common::Signal<void( const Entity*, const Frame* _oldFrame, const Frame* _newFrame)>

◆ NameChangedSignal

using dart::dynamics::Entity::NameChangedSignal = common::Signal<void( const Entity*, const std::string& _oldName, const std::string& _newName)>

Member Enumeration Documentation

◆ ConstructAbstractTag

Used when constructing a pure abstract class, because calling the Entity constructor is just a formality.

Enumerator
ConstructAbstract 

◆ ConstructFrameTag

Used when constructing a Frame class, because the Frame constructor will take care of setting up the parameters you pass into it.

Enumerator
ConstructFrame 

Constructor & Destructor Documentation

◆ Entity() [1/5]

dart::dynamics::Entity::Entity ( Frame _refFrame,
bool  _quiet 
)
explicit

Constructor for typical usage.

◆ Entity() [2/5]

dart::dynamics::Entity::Entity ( )

Default constructor, delegates to Entity(ConstructAbstract_t)

◆ Entity() [3/5]

dart::dynamics::Entity::Entity ( const Entity )
delete

◆ ~Entity()

dart::dynamics::Entity::~Entity ( )
virtual

Destructor.

◆ Entity() [4/5]

dart::dynamics::Entity::Entity ( ConstructFrameTag  )
explicitprotected

◆ Entity() [5/5]

dart::dynamics::Entity::Entity ( ConstructAbstractTag  )
explicitprotected

Member Function Documentation

◆ addObserver()

void dart::common::Subject::addObserver ( Observer _observer) const
protectedinherited

Add an Observer to the list of Observers.

◆ changeParentFrame()

void dart::dynamics::Entity::changeParentFrame ( Frame _newParentFrame)
protectedvirtual

Used by derived classes to change their parent frames.

Reimplemented in dart::dynamics::Frame.

◆ descendsFrom()

bool dart::dynamics::Entity::descendsFrom ( const Frame _someFrame) const

Returns true if and only if this Entity is itself (i.e.

this == _someFrame) or depends on (i.e. kinematically descends from) _someFrame.

If _someFrame is nullptr, this returns true in order to accommodate BodyNodes which always have a nullptr BodyNode as the parent of a root BodyNode.

◆ dirtyAcceleration()

void dart::dynamics::Entity::dirtyAcceleration ( )
virtual

Notify the acceleration of this Entity that its parent Frame's acceleration is needed.

Reimplemented in dart::dynamics::PointMassNotifier, dart::dynamics::Frame, and dart::dynamics::BodyNode.

◆ dirtyTransform()

void dart::dynamics::Entity::dirtyTransform ( )
virtual

Notify the transformation update of this Entity that its parent Frame's pose is needed.

Reimplemented in dart::dynamics::PointMassNotifier, dart::dynamics::Frame, and dart::dynamics::BodyNode.

◆ dirtyVelocity()

void dart::dynamics::Entity::dirtyVelocity ( )
virtual

Notify the velocity update of this Entity that its parent Frame's velocity is needed.

Reimplemented in dart::dynamics::PointMassNotifier, dart::dynamics::Frame, and dart::dynamics::BodyNode.

◆ getName()

virtual const std::string& dart::dynamics::Entity::getName ( ) const
pure virtual

◆ getParentFrame() [1/2]

Frame * dart::dynamics::Entity::getParentFrame ( )

Get the parent (reference) frame of this Entity.

◆ getParentFrame() [2/2]

const Frame * dart::dynamics::Entity::getParentFrame ( ) const

Get the parent (reference) frame of this Entity.

◆ isFrame()

bool dart::dynamics::Entity::isFrame ( ) const

True iff this Entity is also a Frame.

◆ isQuiet()

bool dart::dynamics::Entity::isQuiet ( ) const

Returns true if this Entity is set to be quiet.

A quiet entity is unknown to its parent Frame. It will not be tracked by its parent; it will not receive notifications from its parent, and it will not be rendered. The advantage to a quiet Entity is that it has less overhead when constructing and deconstructing, which makes it more suitable for temporary objects.

◆ needsAccelerationUpdate()

bool dart::dynamics::Entity::needsAccelerationUpdate ( ) const

Returns true iff an acceleration update is needed for this Entity.

◆ needsTransformUpdate()

bool dart::dynamics::Entity::needsTransformUpdate ( ) const

Returns true iff a transform update is needed for this Entity.

◆ needsVelocityUpdate()

bool dart::dynamics::Entity::needsVelocityUpdate ( ) const

Returns true iff a velocity update is needed for this Entity.

◆ notifyAccelerationUpdate()

void dart::dynamics::Entity::notifyAccelerationUpdate ( )
virtual

Notify the acceleration of this Entity that its parent Frame's acceleration is needed.

◆ notifyTransformUpdate()

void dart::dynamics::Entity::notifyTransformUpdate ( )
virtual

Notify the transformation update of this Entity that its parent Frame's pose is needed.

◆ notifyVelocityUpdate()

void dart::dynamics::Entity::notifyVelocityUpdate ( )
virtual

Notify the velocity update of this Entity that its parent Frame's velocity is needed.

◆ removeObserver()

void dart::common::Subject::removeObserver ( Observer _observer) const
protectedinherited

Remove an Observer from the list of Observers.

◆ sendDestructionNotification()

void dart::common::Subject::sendDestructionNotification ( ) const
protectedinherited

Send a destruction notification to all Observers.

This will cause all Observers to behave as if this Subject has been permanently deleted, so it should only be called when that behavior is desired.

◆ setName()

virtual const std::string& dart::dynamics::Entity::setName ( const std::string &  _name)
pure virtual

Set name.

Some implementations of Entity may make alterations to the name that gets passed in. The final name that this entity will use gets passed back in the return of this function.

Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::PointMassNotifier, and dart::dynamics::BodyNode.

Friends And Related Function Documentation

◆ Frame

friend class Frame
friend

Member Data Documentation

◆ mAccelerationChangedSignal

EntitySignal dart::dynamics::Entity::mAccelerationChangedSignal
protected

Acceleration changed signal.

◆ mAmFrame

bool dart::dynamics::Entity::mAmFrame
private

Whether or not this Entity is a Frame.

◆ mAmQuiet

const bool dart::dynamics::Entity::mAmQuiet
private

Whether or not this Entity is set to be quiet.

◆ mFrameChangedSignal

FrameChangedSignal dart::dynamics::Entity::mFrameChangedSignal
protected

Frame changed signal.

◆ mNameChangedSignal

NameChangedSignal dart::dynamics::Entity::mNameChangedSignal
protected

Name changed signal.

◆ mNeedAccelerationUpdate

bool dart::dynamics::Entity::mNeedAccelerationUpdate
mutableprotected

Does this Entity need an Acceleration update.

◆ mNeedTransformUpdate

bool dart::dynamics::Entity::mNeedTransformUpdate
mutableprotected

Does this Entity need a Transform update.

◆ mNeedVelocityUpdate

bool dart::dynamics::Entity::mNeedVelocityUpdate
mutableprotected

Does this Entity need a Velocity update.

◆ mObservers

std::set<Observer*> dart::common::Subject::mObservers
mutableprotectedinherited

List of current Observers.

◆ mParentFrame

Frame* dart::dynamics::Entity::mParentFrame
protected

Parent frame of this Entity.

◆ mTransformUpdatedSignal

EntitySignal dart::dynamics::Entity::mTransformUpdatedSignal
protected

Transform changed signal.

◆ mVelocityChangedSignal

EntitySignal dart::dynamics::Entity::mVelocityChangedSignal
protected

Velocity changed signal.

◆ onAccelerationChanged

common::SlotRegister<EntitySignal> dart::dynamics::Entity::onAccelerationChanged

Slot register for acceleration updated signal.

◆ onFrameChanged

common::SlotRegister<FrameChangedSignal> dart::dynamics::Entity::onFrameChanged

Slot register for frame changed signal.

◆ onNameChanged

common::SlotRegister<NameChangedSignal> dart::dynamics::Entity::onNameChanged

Slot register for name changed signal.

◆ onTransformUpdated

common::SlotRegister<EntitySignal> dart::dynamics::Entity::onTransformUpdated

Slot register for transform updated signal.

◆ onVelocityChanged

common::SlotRegister<EntitySignal> dart::dynamics::Entity::onVelocityChanged

Slot register for velocity updated signal.