DART
6.7.3
|
The JacobianNode class serves as a common interface for BodyNodes and EndEffectors to both be used as references for IK modules. More...
#include <JacobianNode.hpp>
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)> |
template<class Mixin > | |
using | MakeState = common::MakeCloneable< State, Mixin > |
Use the MakeState class to easily create a State extension from an existing class or struct. More... | |
template<class Mixin > | |
using | MakeProperties = common::MakeCloneable< Properties, Mixin > |
Use the MakeProperties class to easily create a Properties extension from an existing class or struct. More... | |
Public Member Functions | |
virtual | ~JacobianNode () |
Virtual destructor. More... | |
const std::shared_ptr< InverseKinematics > & | getIK (bool _createIfNull=false) |
Get a pointer to an IK module for this JacobianNode. More... | |
const std::shared_ptr< InverseKinematics > & | getOrCreateIK () |
Get a pointer to an IK module for this JacobianNode. More... | |
std::shared_ptr< const InverseKinematics > | getIK () const |
Get a pointer to an IK module for this JacobianNode. More... | |
const std::shared_ptr< InverseKinematics > & | createIK () |
Create a new IK module for this JacobianNode. More... | |
void | clearIK () |
Wipe away the IK module for this JacobianNode, leaving it as a nullptr. More... | |
void | notifyJacobianUpdate () |
Notify this BodyNode and all its descendents that their Jacobians need to be updated. More... | |
void | dirtyJacobian () |
Notify this BodyNode and all its descendents that their Jacobians need to be updated. More... | |
void | notifyJacobianDerivUpdate () |
Notify this BodyNode and all its descendents that their Jacobian derivatives need to be updated. More... | |
void | dirtyJacobianDeriv () |
Notify this BodyNode and all its descendents that their Jacobian derivatives need to be updated. More... | |
virtual const std::string & | setName (const std::string &newName)=0 |
Set the name of this Node. More... | |
virtual const std::string & | getName () const=0 |
Get the name of this Node. More... | |
virtual const Eigen::Isometry3d & | getRelativeTransform () const =0 |
Get the transform of this Frame with respect to its parent Frame. More... | |
const Eigen::Isometry3d & | getWorldTransform () const |
Get the transform of this Frame with respect to the World Frame. More... | |
Eigen::Isometry3d | getTransform (const Frame *_withRespectTo=Frame::World()) const |
Get the transform of this Frame with respect to some other Frame. More... | |
Eigen::Isometry3d | getTransform (const Frame *withRespectTo, const Frame *inCoordinatesOf) const |
Get the transform of this Frame with respect to some other Frame. More... | |
virtual const Eigen::Vector6d & | getRelativeSpatialVelocity () const =0 |
Get the spatial velocity of this Frame relative to its parent Frame, in its own coordinates. More... | |
const Eigen::Vector6d & | getSpatialVelocity () const |
Get the total spatial velocity of this Frame in the coordinates of this Frame. More... | |
Eigen::Vector6d | getSpatialVelocity (const Frame *_relativeTo, const Frame *_inCoordinatesOf) const |
Get the spatial velocity of this Frame relative to some other Frame. More... | |
Eigen::Vector6d | getSpatialVelocity (const Eigen::Vector3d &_offset) const |
Get the spatial velocity of a fixed point in this Frame. More... | |
Eigen::Vector6d | getSpatialVelocity (const Eigen::Vector3d &_offset, const Frame *_relativeTo, const Frame *_inCoordinatesOf) const |
Get the spatial velocity of a fixed point in this Frame. More... | |
Eigen::Vector3d | getLinearVelocity (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const |
Get the linear portion of classical velocity of this Frame relative to some other Frame. More... | |
Eigen::Vector3d | getLinearVelocity (const Eigen::Vector3d &_offset, const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const |
Get the linear velocity of a point that is fixed in this Frame. More... | |
Eigen::Vector3d | getAngularVelocity (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const |
Get the angular portion of classical velocity of this Frame relative to some other Frame. More... | |
virtual const Eigen::Vector6d & | getRelativeSpatialAcceleration () const =0 |
Get the spatial acceleration of this Frame relative to its parent Frame, in the coordinates of this Frame. More... | |
virtual const Eigen::Vector6d & | getPrimaryRelativeAcceleration () const =0 |
The Featherstone ABI algorithm exploits a component of the spatial acceleration which we refer to as the partial acceleration, accessible by getPartialAcceleration(). More... | |
virtual const Eigen::Vector6d & | getPartialAcceleration () const =0 |
The Featherstone ABI algorithm exploits a component of the spatial acceleration which we refer to as the partial acceleration. More... | |
const Eigen::Vector6d & | getSpatialAcceleration () const |
Get the total spatial acceleration of this Frame in the coordinates of this Frame. More... | |
Eigen::Vector6d | getSpatialAcceleration (const Frame *_relativeTo, const Frame *_inCoordinatesOf) const |
Get the spatial acceleration of this Frame relative to some other Frame. More... | |
Eigen::Vector6d | getSpatialAcceleration (const Eigen::Vector3d &_offset) const |
Get the spatial acceleration of a fixed point in this Frame. More... | |
Eigen::Vector6d | getSpatialAcceleration (const Eigen::Vector3d &_offset, const Frame *_relativeTo, const Frame *_inCoordinatesOf) const |
Get the spatial acceleration of a fixed point in this Frame. More... | |
Eigen::Vector3d | getLinearAcceleration (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const |
Get the linear portion of classical acceleration of this Frame relative to some other Frame. More... | |
Eigen::Vector3d | getLinearAcceleration (const Eigen::Vector3d &_offset, const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const |
Eigen::Vector3d | getAngularAcceleration (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const |
Get the angular portion of classical acceleration of this Frame relative to some other Frame. More... | |
const std::set< Entity * > & | getChildEntities () |
Get a container with the Entities that are children of this Frame. More... | |
const std::set< const Entity * > | getChildEntities () const |
Get a container with the Entities that are children of this Frame. More... | |
std::size_t | getNumChildEntities () const |
Get the number of Entities that are currently children of this Frame. More... | |
const std::set< Frame * > & | getChildFrames () |
Get a container with the Frames that are children of this Frame. More... | |
std::set< const Frame * > | getChildFrames () const |
Get a container with the Frames that are children of this Frame. More... | |
std::size_t | getNumChildFrames () const |
Get the number of Frames that are currently children of this Frame. More... | |
bool | isShapeFrame () const |
Returns true if this Frame is a ShapeFrame. More... | |
virtual ShapeFrame * | asShapeFrame () |
Convert 'this' into a ShapeFrame pointer if Frame is a ShapeFrame, otherwise return nullptr. More... | |
virtual const ShapeFrame * | asShapeFrame () const |
Convert 'const this' into a ShapeFrame pointer if Frame is a ShapeFrame, otherwise return nullptr. More... | |
bool | isWorld () const |
Returns true if this Frame is the World Frame. More... | |
virtual void | dirtyTransform () override |
Notify the transformation updates of this Frame and all its children are needed. More... | |
virtual void | dirtyVelocity () override |
Notify the velocity updates of this Frame and all its children are needed. More... | |
virtual void | dirtyAcceleration () override |
Notify the acceleration updates of this Frame and all its children are needed. 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... | |
Frame * | getParentFrame () |
Get the parent (reference) frame of this Entity. More... | |
const Frame * | getParentFrame () const |
Get the parent (reference) frame of this Entity. More... | |
bool | descendsFrom (const Frame *_someFrame) const |
True if and only if this Entity depends on (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... | |
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... | |
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... | |
bool | needsAccelerationUpdate () const |
Returns true iff an acceleration update is needed for this Entity. More... | |
virtual const std::string & | setName (const std::string &newName)=0 |
Set the name of this Node. More... | |
virtual const std::string & | getName () const =0 |
Get the name of this Node. More... | |
virtual void | setNodeState (const State &otherState) |
Set the State of this Node. By default, this does nothing. More... | |
virtual std::unique_ptr< State > | getNodeState () const |
Get the State of this Node. More... | |
virtual void | copyNodeStateTo (std::unique_ptr< State > &outputState) const |
Copy the State of this Node into a unique_ptr. More... | |
virtual void | setNodeProperties (const Properties &properties) |
Set the Properties of this Node. By default, this does nothing. More... | |
virtual std::unique_ptr< Properties > | getNodeProperties () const |
Get the Properties of this Node. More... | |
virtual void | copyNodePropertiesTo (std::unique_ptr< Properties > &outputProperties) const |
Copy the Properties of this Node into a unique_ptr. More... | |
BodyNodePtr | getBodyNodePtr () |
Get a pointer to the BodyNode that this Node is associated with. More... | |
ConstBodyNodePtr | getBodyNodePtr () const |
Get a pointer to the BodyNode that this Node is associated with. More... | |
bool | isRemoved () const |
Returns true if this Node has been staged for removal from its BodyNode. More... | |
virtual std::shared_ptr< Skeleton > | getSkeleton () |
Return the Skeleton that this Node is attached to. More... | |
virtual std::shared_ptr< const Skeleton > | getSkeleton () const |
Return the Skeleton that this Node is attached to. More... | |
virtual std::size_t | incrementVersion () |
Increment the version for this object. More... | |
virtual std::size_t | getVersion () const |
Get the version number of this object. More... | |
Structural Properties | |
virtual bool | dependsOn (std::size_t _genCoordIndex) const =0 |
Return true if _genCoordIndex-th generalized coordinate. More... | |
virtual std::size_t | getNumDependentGenCoords () const =0 |
The number of the generalized coordinates which affect this JacobianNode. More... | |
virtual std::size_t | getDependentGenCoordIndex (std::size_t _arrayIndex) const =0 |
Return a generalized coordinate index from the array index (< getNumDependentDofs) More... | |
virtual const std::vector< std::size_t > & | getDependentGenCoordIndices () const =0 |
Indices of the generalized coordinates which affect this JacobianNode. More... | |
virtual std::size_t | getNumDependentDofs () const =0 |
Same as getNumDependentGenCoords() More... | |
virtual DegreeOfFreedom * | getDependentDof (std::size_t _index)=0 |
Get a pointer to the _indexth dependent DegreeOfFreedom for this BodyNode. More... | |
virtual const DegreeOfFreedom * | getDependentDof (std::size_t _index) const =0 |
Get a pointer to the _indexth dependent DegreeOfFreedom for this BodyNode. More... | |
virtual const std::vector< DegreeOfFreedom * > & | getDependentDofs ()=0 |
Return a std::vector of DegreeOfFreedom pointers that this Node depends on. More... | |
virtual const std::vector< const DegreeOfFreedom * > & | getDependentDofs () const =0 |
Return a std::vector of DegreeOfFreedom pointers that this Node depends on. More... | |
virtual const std::vector< const DegreeOfFreedom * > | getChainDofs () const =0 |
Returns a DegreeOfFreedom vector containing the dofs that form a Chain leading up to this JacobianNode from the root of the Skeleton. More... | |
Jacobian Functions | |
virtual const math::Jacobian & | getJacobian () const =0 |
Return the generalized Jacobian targeting the origin of this JacobianNode. More... | |
virtual math::Jacobian | getJacobian (const Frame *_inCoordinatesOf) const =0 |
A version of getJacobian() that lets you specify a coordinate Frame to express the Jacobian in. More... | |
virtual math::Jacobian | getJacobian (const Eigen::Vector3d &_offset) const =0 |
Return the generalized Jacobian targeting an offset within the Frame of this JacobianNode. More... | |
virtual math::Jacobian | getJacobian (const Eigen::Vector3d &_offset, const Frame *_inCoordinatesOf) const =0 |
A version of getJacobian(const Eigen::Vector3d&) that lets you specify a coordinate Frame to express the Jacobian in. More... | |
virtual const math::Jacobian & | getWorldJacobian () const =0 |
Return the generalized Jacobian targeting the origin of this JacobianNode. More... | |
virtual math::Jacobian | getWorldJacobian (const Eigen::Vector3d &_offset) const =0 |
Return the generalized Jacobian targeting an offset in this JacobianNode. More... | |
virtual math::LinearJacobian | getLinearJacobian (const Frame *_inCoordinatesOf=Frame::World()) const =0 |
Return the linear Jacobian targeting the origin of this BodyNode. More... | |
virtual math::LinearJacobian | getLinearJacobian (const Eigen::Vector3d &_offset, const Frame *_inCoordinatesOf=Frame::World()) const =0 |
Return the generalized Jacobian targeting an offset within the Frame of this BodyNode. More... | |
virtual math::AngularJacobian | getAngularJacobian (const Frame *_inCoordinatesOf=Frame::World()) const =0 |
Return the angular Jacobian targeting the origin of this BodyNode. More... | |
virtual const math::Jacobian & | getJacobianSpatialDeriv () const =0 |
Return the spatial time derivative of the generalized Jacobian targeting the origin of this BodyNode. More... | |
virtual math::Jacobian | getJacobianSpatialDeriv (const Frame *_inCoordinatesOf) const =0 |
A version of getJacobianSpatialDeriv() that can return the Jacobian in coordinates of any Frame. More... | |
virtual math::Jacobian | getJacobianSpatialDeriv (const Eigen::Vector3d &_offset) const =0 |
Return the spatial time derivative of the generalized Jacobian targeting an offset in the Frame of this BodyNode. More... | |
virtual math::Jacobian | getJacobianSpatialDeriv (const Eigen::Vector3d &_offset, const Frame *_inCoordinatesOf) const =0 |
A version of getJacobianSpatialDeriv(const Eigen::Vector3d&) that allows an arbitrary coordinate Frame to be specified. More... | |
virtual const math::Jacobian & | getJacobianClassicDeriv () const =0 |
Return the classical time derivative of the generalized Jacobian targeting the origin of this BodyNode. More... | |
virtual math::Jacobian | getJacobianClassicDeriv (const Frame *_inCoordinatesOf) const =0 |
A version of getJacobianClassicDeriv() that can return the Jacobian in coordinates of any Frame. More... | |
virtual math::Jacobian | getJacobianClassicDeriv (const Eigen::Vector3d &_offset, const Frame *_inCoordinatesOf=Frame::World()) const =0 |
A version of getJacobianClassicDeriv() that can compute the Jacobian for an offset within the Frame of this BodyNode. More... | |
virtual math::LinearJacobian | getLinearJacobianDeriv (const Frame *_inCoordinatesOf=Frame::World()) const =0 |
Return the linear Jacobian (classical) time derivative, in terms of any coordinate Frame. More... | |
virtual math::LinearJacobian | getLinearJacobianDeriv (const Eigen::Vector3d &_offset, const Frame *_inCoordinatesOf=Frame::World()) const =0 |
A version of getLinearJacobianDeriv() that can compute the Jacobian for an offset within the Frame of this BodyNode. More... | |
virtual math::AngularJacobian | getAngularJacobianDeriv (const Frame *_inCoordinatesOf=Frame::World()) const =0 |
Return the angular Jacobian time derivative, in terms of any coordinate Frame. More... | |
Static Public Member Functions | |
static Frame * | World () |
Protected Types | |
enum | ConstructAbstractTag { ConstructAbstract } |
Used when constructing a pure abstract class, because calling the Frame constructor is just a formality. More... | |
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... | |
Protected Member Functions | |
JacobianNode (BodyNode *bn) | |
Constructor. More... | |
virtual void | changeParentFrame (Frame *_newParentFrame) override |
Used by derived classes to change their parent frames. More... | |
virtual void | processNewEntity (Entity *_newChildEntity) |
Called during a parent Frame change to allow extensions of the Frame class to handle new children in customized ways. More... | |
virtual void | processRemovedEntity (Entity *_oldChildEntity) |
Called when a child Entity is removed from its parent Frame. 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... | |
virtual Node * | cloneNode (BodyNode *bn) const =0 |
Allow your Node implementation to be cloned into a new BodyNode. More... | |
std::string | registerNameChange (const std::string &newName) |
Inform the Skeleton that the name of this Node has changed. More... | |
void | attach () |
Attach the Node to its BodyNode. More... | |
void | stageForRemoval () |
When all external references to the Node disappear, it will be deleted. More... | |
void | setVersionDependentObject (VersionCounter *dependent) |
Protected Attributes | |
bool | mIsBodyJacobianDirty |
Dirty flag for body Jacobian. More... | |
bool | mIsWorldJacobianDirty |
Dirty flag for world Jacobian. More... | |
bool | mIsBodyJacobianSpatialDerivDirty |
Dirty flag for spatial time derivative of body Jacobian. More... | |
bool | mIsWorldJacobianClassicDerivDirty |
Dirty flag for the classic time derivative of the Jacobian. More... | |
std::shared_ptr< InverseKinematics > | mIK |
Inverse kinematics module which gets lazily created upon request. More... | |
std::unordered_set< JacobianNode * > | mChildJacobianNodes |
JacobianNode children that descend from this JacobianNode. More... | |
Eigen::Isometry3d | mWorldTransform |
World transform of this Frame. More... | |
Eigen::Vector6d | mVelocity |
Total velocity of this Frame, in the coordinates of this Frame. More... | |
Eigen::Vector6d | mAcceleration |
Total acceleration of this Frame, in the coordinates of this Frame. More... | |
std::set< Frame * > | mChildFrames |
Container of this Frame's child Frames. More... | |
std::set< Entity * > | mChildEntities |
Container of this Frame's child Entities. More... | |
Frame * | mParentFrame |
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... | |
std::weak_ptr< NodeDestructor > | mDestructor |
weak pointer to the destructor for this Node. More... | |
BodyNode * | mBodyNode |
Pointer to the BodyNode that this Node is attached to. More... | |
bool | mAmAttached |
bool that tracks whether this Node is attached to its BodyNode More... | |
std::size_t | mIndexInBodyNode |
The index of this Node within its vector in its BodyNode's NodeMap. More... | |
std::size_t | mIndexInSkeleton |
The index of this Node within its vector in its Skeleton's NodeMap. More... | |
std::size_t | mIndexInTree |
Index of this Node within its tree. More... | |
std::size_t | mVersion |
Private Types | |
enum | ConstructWorldTag { ConstructWorld } |
Used when constructing the World. More... | |
Private Member Functions | |
std::shared_ptr< NodeDestructor > | getOrCreateDestructor () |
Private Attributes | |
const bool | mAmWorld |
Contains whether or not this is the World Frame. More... | |
bool | mAmShapeFrame |
Contains whether or not this is a ShapeFrame. More... | |
VersionCounter * | mDependent |
Slot registers | |
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... | |
common::SlotRegister< FrameChangedSignal > | onFrameChanged |
Slot register for frame changed signal. More... | |
common::SlotRegister< NameChangedSignal > | onNameChanged |
Slot register for name changed signal. More... | |
common::SlotRegister< EntitySignal > | onTransformUpdated |
Slot register for transform updated signal. More... | |
common::SlotRegister< EntitySignal > | onVelocityChanged |
Slot register for velocity updated signal. More... | |
common::SlotRegister< EntitySignal > | onAccelerationChanged |
Slot register for acceleration updated signal. More... | |
The JacobianNode class serves as a common interface for BodyNodes and EndEffectors to both be used as references for IK modules.
This is a pure abstract class.
|
inherited |
|
inherited |
|
inherited |
Use the MakeProperties class to easily create a Properties extension from an existing class or struct.
|
inherited |
Use the MakeState class to easily create a State extension from an existing class or struct.
|
inherited |
|
protectedinherited |
Used when constructing a pure abstract class, because calling the Frame constructor is just a formality.
Enumerator | |
---|---|
ConstructAbstract |
|
protectedinherited |
|
privateinherited |
|
virtual |
Virtual destructor.
|
protected |
Constructor.
|
protectedinherited |
Add an Observer to the list of Observers.
|
virtualinherited |
Convert 'this' into a ShapeFrame pointer if Frame is a ShapeFrame, otherwise return nullptr.
Reimplemented in dart::dynamics::ShapeFrame.
|
virtualinherited |
Convert 'const this' into a ShapeFrame pointer if Frame is a ShapeFrame, otherwise return nullptr.
Reimplemented in dart::dynamics::ShapeFrame.
|
overrideprotectedvirtualinherited |
Used by derived classes to change their parent frames.
Reimplemented from dart::dynamics::Entity.
void dart::dynamics::JacobianNode::clearIK | ( | ) |
Wipe away the IK module for this JacobianNode, leaving it as a nullptr.
Allow your Node implementation to be cloned into a new BodyNode.
Implemented in dart::dynamics::BodyNode.
|
virtualinherited |
Copy the Properties of this Node into a unique_ptr.
By default, this simply calls getNodeProperties() and passes the result into the outputProperties, but this function can be overriden to be more performant.
|
virtualinherited |
Copy the State of this Node into a unique_ptr.
By default, this simply calls getNodeState() and passes the result into the outputState, but this function can be overriden to be more performant by avoiding allocations.
const std::shared_ptr< InverseKinematics > & dart::dynamics::JacobianNode::createIK | ( | ) |
Create a new IK module for this JacobianNode.
If an IK module already exists in this JacobianNode, it will be destroyed and replaced by a brand new one.
|
pure virtual |
Return true if _genCoordIndex-th generalized coordinate.
Implemented in dart::dynamics::BodyNode.
|
inherited |
|
overridevirtualinherited |
Notify the acceleration updates of this Frame and all its children are needed.
Reimplemented from dart::dynamics::Entity.
Reimplemented in dart::dynamics::BodyNode.
void dart::dynamics::JacobianNode::dirtyJacobian | ( | ) |
Notify this BodyNode and all its descendents that their Jacobians need to be updated.
void dart::dynamics::JacobianNode::dirtyJacobianDeriv | ( | ) |
Notify this BodyNode and all its descendents that their Jacobian derivatives need to be updated.
|
overridevirtualinherited |
Notify the transformation updates of this Frame and all its children are needed.
Reimplemented from dart::dynamics::Entity.
Reimplemented in dart::dynamics::BodyNode.
|
overridevirtualinherited |
Notify the velocity updates of this Frame and all its children are needed.
Reimplemented from dart::dynamics::Entity.
Reimplemented in dart::dynamics::BodyNode.
|
inherited |
|
pure virtual |
Return the angular Jacobian targeting the origin of this BodyNode.
You can specify a coordinate Frame to express the Jacobian in.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
Return the angular Jacobian time derivative, in terms of any coordinate Frame.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
inherited |
|
inherited |
|
inherited |
|
pure virtual |
Returns a DegreeOfFreedom vector containing the dofs that form a Chain leading up to this JacobianNode from the root of the Skeleton.
Implemented in dart::dynamics::BodyNode.
|
inherited |
|
inherited |
Get a container with the Entities that are children of this Frame.
Note that this is version is slightly less efficient than the non-const version because it needs to rebuild a set where each pointer is converted to be a const pointer.
|
inherited |
|
inherited |
Get a container with the Frames that are children of this Frame.
Note that this version is less efficient than the non-const version because it needs to rebuild a set so that the entries are const.
|
pure virtual |
Get a pointer to the _indexth dependent DegreeOfFreedom for this BodyNode.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Get a pointer to the _indexth dependent DegreeOfFreedom for this BodyNode.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Return a std::vector of DegreeOfFreedom pointers that this Node depends on.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Return a std::vector of DegreeOfFreedom pointers that this Node depends on.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Return a generalized coordinate index from the array index (< getNumDependentDofs)
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Indices of the generalized coordinates which affect this JacobianNode.
Implemented in dart::dynamics::BodyNode.
std::shared_ptr< const InverseKinematics > dart::dynamics::JacobianNode::getIK | ( | ) | const |
Get a pointer to an IK module for this JacobianNode.
Because this is a const function, a new IK module cannot be created if one does not already exist.
const std::shared_ptr< InverseKinematics > & dart::dynamics::JacobianNode::getIK | ( | bool | _createIfNull = false | ) |
Get a pointer to an IK module for this JacobianNode.
If _createIfNull is true, then the IK module will be generated if one does not already exist.
|
pure virtual |
Return the generalized Jacobian targeting the origin of this JacobianNode.
The Jacobian is expressed in the Frame of this JacobianNode.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Return the generalized Jacobian targeting an offset within the Frame of this JacobianNode.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
A version of getJacobian(const Eigen::Vector3d&) that lets you specify a coordinate Frame to express the Jacobian in.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
A version of getJacobian() that lets you specify a coordinate Frame to express the Jacobian in.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
Return the classical time derivative of the generalized Jacobian targeting the origin of this BodyNode.
The Jacobian is expressed in the World coordinate Frame.
NOTE: Since this is a classical time derivative, it should be used with classical linear and angular vectors. If you are using spatial vectors, use getJacobianSpatialDeriv() instead.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
A version of getJacobianClassicDeriv() that can compute the Jacobian for an offset within the Frame of this BodyNode.
The offset must be expressed in the coordinates of this BodyNode Frame.
NOTE: Since this is a classical time derivative, it should be used with classical linear and angular vectors. If you are using spatial vectors, use getJacobianSpatialDeriv() instead.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
A version of getJacobianClassicDeriv() that can return the Jacobian in coordinates of any Frame.
NOTE: Since this is a classical time derivative, it should be used with classical linear and angular vectors. If you are using spatial vectors, use getJacobianSpatialDeriv() instead.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
Return the spatial time derivative of the generalized Jacobian targeting the origin of this BodyNode.
The Jacobian is expressed in this BodyNode's coordinate Frame.
NOTE: Since this is a spatial time derivative, it should be used with spatial vectors. If you are using classical linear and angular acceleration vectors, then use getJacobianClassicDeriv(), getLinearJacobianDeriv(), or getAngularJacobianDeriv() instead.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Return the spatial time derivative of the generalized Jacobian targeting an offset in the Frame of this BodyNode.
The Jacobian is expressed in this BodyNode's coordinate Frame.
NOTE: This Jacobian Derivative is only for use with spatial vectors. If you are using classic linear and angular vectors, then use getJacobianClassicDeriv(), getLinearJacobianDeriv(), or getAngularJacobianDeriv() instead.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
A version of getJacobianSpatialDeriv(const Eigen::Vector3d&) that allows an arbitrary coordinate Frame to be specified.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
A version of getJacobianSpatialDeriv() that can return the Jacobian in coordinates of any Frame.
NOTE: This Jacobian Derivative is only for use with spatial vectors. If you are using classical linear and angular vectors, then use getJacobianClassicDeriv(), getLinearJacobianDeriv(), or getAngularJacobianDeriv() instead.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
inherited |
|
inherited |
|
pure virtual |
Return the generalized Jacobian targeting an offset within the Frame of this BodyNode.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
Return the linear Jacobian targeting the origin of this BodyNode.
You can specify a coordinate Frame to express the Jacobian in.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
A version of getLinearJacobianDeriv() that can compute the Jacobian for an offset within the Frame of this BodyNode.
The offset must be expressed in coordinates of this BodyNode Frame.
NOTE: Since this is a classical time derivative, it should be used with classical linear vectors. If you are using spatial vectors, use getJacobianSpatialDeriv() instead.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
pure virtual |
Return the linear Jacobian (classical) time derivative, in terms of any coordinate Frame.
NOTE: Since this is a classical time derivative, it should be used with classical linear vectors. If you are using spatial vectors, use getJacobianSpatialDeriv() instead.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
inherited |
|
inherited |
|
pure virtualinherited |
Return the name of this Entity.
Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::PointMassNotifier, and dart::dynamics::BodyNode.
|
pure virtualinherited |
Get the name of this Node.
Implemented in dart::dynamics::BodyNode.
virtual const std::string& dart::dynamics::Node::getName |
Get the name of this Node.
|
virtualinherited |
|
virtualinherited |
|
inherited |
Get the number of Entities that are currently children of this Frame.
|
inherited |
Get the number of Frames that are currently children of this Frame.
|
pure virtual |
Same as getNumDependentGenCoords()
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
The number of the generalized coordinates which affect this JacobianNode.
Implemented in dart::dynamics::BodyNode.
|
privateinherited |
const std::shared_ptr< InverseKinematics > & dart::dynamics::JacobianNode::getOrCreateIK | ( | ) |
Get a pointer to an IK module for this JacobianNode.
The IK module will be generated if one does not already exist. This function is actually the same as getIK(true).
|
inherited |
Get the parent (reference) frame of this Entity.
|
inherited |
Get the parent (reference) frame of this Entity.
|
pure virtualinherited |
The Featherstone ABI algorithm exploits a component of the spatial acceleration which we refer to as the partial acceleration.
This function returns that component of acceleration.
Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::FixedFrame, and dart::dynamics::BodyNode.
|
pure virtualinherited |
The Featherstone ABI algorithm exploits a component of the spatial acceleration which we refer to as the partial acceleration, accessible by getPartialAcceleration().
We save operations during our forward kinematics by computing and storing the partial acceleration separately from the rest of the Frame's acceleration. getPrimaryRelativeAcceleration() will return the portion of the relative spatial acceleration that is not contained in the partial acceleration. To get the full spatial acceleration of this Frame relative to its parent Frame, use getRelativeSpatialAcceleration(). To get the full spatial acceleration of this Frame relative to the World Frame, use getSpatialAcceleration().
Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::FixedFrame, and dart::dynamics::BodyNode.
|
pure virtualinherited |
Get the spatial acceleration of this Frame relative to its parent Frame, in the coordinates of this Frame.
Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::FixedFrame, and dart::dynamics::BodyNode.
|
pure virtualinherited |
Get the spatial velocity of this Frame relative to its parent Frame, in its own coordinates.
Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::FixedFrame, and dart::dynamics::BodyNode.
|
pure virtualinherited |
Get the transform of this Frame with respect to its parent Frame.
Implemented in dart::dynamics::WorldFrame, dart::dynamics::SimpleFrame, dart::dynamics::FixedFrame, and dart::dynamics::BodyNode.
|
virtualinherited |
Return the Skeleton that this Node is attached to.
Reimplemented in dart::dynamics::BodyNode.
|
virtualinherited |
Return the Skeleton that this Node is attached to.
Reimplemented in dart::dynamics::BodyNode.
|
inherited |
|
inherited |
|
inherited |
Get the spatial acceleration of a fixed point in this Frame.
|
inherited |
|
inherited |
|
inherited |
|
inherited |
Get the spatial velocity of a fixed point in this Frame.
|
inherited |
|
inherited |
|
virtualinherited |
Get the version number of this object.
|
pure virtual |
Return the generalized Jacobian targeting the origin of this JacobianNode.
The Jacobian is expressed in the World Frame.
Implemented in dart::dynamics::BodyNode.
|
pure virtual |
Return the generalized Jacobian targeting an offset in this JacobianNode.
The _offset is expected in coordinates of this BodyNode Frame. The Jacobian is expressed in the World Frame.
Implemented in dart::dynamics::TemplatedJacobianNode< NodeType >, and dart::dynamics::TemplatedJacobianNode< BodyNode >.
|
inherited |
|
virtualinherited |
Increment the version for this object.
Reimplemented in dart::dynamics::Shape.
|
inherited |
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.
|
inherited |
Returns true if this Node has been staged for removal from its BodyNode.
It will be deleted once all strong references to it expire. If it is an AccessoryNode, you can call reattach() to prevent that from happening.
|
inherited |
Returns true if this Frame is a ShapeFrame.
|
inherited |
|
inherited |
Returns true iff an acceleration update is needed for this Entity.
|
inherited |
Returns true iff a transform update is needed for this Entity.
|
inherited |
Returns true iff a velocity update is needed for this Entity.
|
virtualinherited |
void dart::dynamics::JacobianNode::notifyJacobianDerivUpdate | ( | ) |
Notify this BodyNode and all its descendents that their Jacobian derivatives need to be updated.
void dart::dynamics::JacobianNode::notifyJacobianUpdate | ( | ) |
Notify this BodyNode and all its descendents that their Jacobians need to be updated.
|
virtualinherited |
|
virtualinherited |
|
protectedvirtualinherited |
Called during a parent Frame change to allow extensions of the Frame class to handle new children in customized ways.
This function is a no op unless an inheriting class (such as BodyNode) overrides it.
Reimplemented in dart::dynamics::BodyNode.
|
protectedvirtualinherited |
Called when a child Entity is removed from its parent Frame.
This allows special post-processing to be performed for extensions of the Frame class.
Reimplemented in dart::dynamics::BodyNode.
|
protectedinherited |
|
protectedinherited |
Remove an Observer from the list of Observers.
|
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.
|
pure virtualinherited |
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.
virtual const std::string& dart::dynamics::Node::setName |
Set the name of this Node.
|
pure virtualinherited |
Set the name of this Node.
Implemented in dart::dynamics::BodyNode.
|
virtualinherited |
Set the Properties of this Node. By default, this does nothing.
|
virtualinherited |
Set the State of this Node. By default, this does nothing.
|
protectedinherited |
|
protectedinherited |
When all external references to the Node disappear, it will be deleted.
|
staticinherited |
|
mutableprotectedinherited |
Total acceleration of this Frame, in the coordinates of this Frame.
Do not use directly! Use getSpatialAcceleration() to access this quantity
|
protectedinherited |
Acceleration changed signal.
|
protectedinherited |
|
privateinherited |
Whether or not this Entity is set to be quiet.
|
privateinherited |
Contains whether or not this is a ShapeFrame.
|
privateinherited |
Contains whether or not this is the World Frame.
|
protectedinherited |
|
protectedinherited |
Container of this Frame's child Entities.
|
protectedinherited |
Container of this Frame's child Frames.
|
protected |
JacobianNode children that descend from this JacobianNode.
|
privateinherited |
|
protectedinherited |
weak pointer to the destructor for this Node.
We use a shared_ptr "destructor" class instead of managing Nodes directly with shared_ptrs because this scheme allows BodyNodes to circumvent the shared_ptr management by setting the mNode member of the Destructor to a nullptr. That way the BodyNode can never be deleted by its Destructor.
|
protectedinherited |
Frame changed signal.
|
protected |
Inverse kinematics module which gets lazily created upon request.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Index of this Node within its tree.
|
mutableprotected |
Dirty flag for body Jacobian.
|
mutableprotected |
Dirty flag for spatial time derivative of body Jacobian.
|
mutableprotected |
Dirty flag for the classic time derivative of the Jacobian.
|
mutableprotected |
Dirty flag for world Jacobian.
|
protectedinherited |
Name changed signal.
|
mutableprotectedinherited |
Does this Entity need an Acceleration update.
|
mutableprotectedinherited |
Does this Entity need a Transform update.
|
mutableprotectedinherited |
Does this Entity need a Velocity update.
|
mutableprotectedinherited |
List of current Observers.
|
protectedinherited |
Transform changed signal.
|
mutableprotectedinherited |
Total velocity of this Frame, in the coordinates of this Frame.
Do not use directly! Use getSpatialVelocity() to access this quantity
|
protectedinherited |
Velocity changed signal.
|
protectedinherited |
|
mutableprotectedinherited |
World transform of this Frame.
This object is mutable to enable auto-updating to happen in the const member getWorldTransform() function
Do not use directly! Use getWorldTransform() to access this quantity
|
inherited |
Slot register for acceleration updated signal.
|
inherited |
Slot register for frame changed signal.
|
inherited |
Slot register for name changed signal.
|
inherited |
Slot register for transform updated signal.
|
inherited |
Slot register for velocity updated signal.