dart
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
dart::dynamics::Chain Class Reference

Chain is a specialized type of Linkage that represents a single unbranching and fully connected sequence of BodyNodes. More...

#include <Chain.hpp>

Inheritance diagram for dart::dynamics::Chain:
Inheritance graph
[legend]
Collaboration diagram for dart::dynamics::Chain:
Collaboration graph
[legend]

Classes

struct  Criteria
 

Public Types

enum  IncludeUpstreamParentJointTag { IncludeUpstreamParentJoint }
 This enum is used to specify to the create() function that the parent joint of whichever is upstream of the other should be included in the Chain that gets generated. More...
 
- Public Types inherited from dart::dynamics::MetaSkeleton
using NameChangedSignal = common::Signal< void(std::shared_ptr< const MetaSkeleton > _skeleton, const std::string &_oldName, const std::string &_newName)>
 

Public Member Functions

ChainPtr cloneChain () const
 Creates and returns a clone of this Chain.
 
ChainPtr cloneChain (const std::string &cloneName) const
 Creates and returns a clone of this Chain.
 
MetaSkeletonPtr cloneMetaSkeleton (const std::string &cloneName) const override
 Creates an identical clone of this MetaSkeleton.
 
bool isStillChain () const
 Returns false if this Chain has been broken, or some new Branching has been added. More...
 
- Public Member Functions inherited from dart::dynamics::Linkage
LinkagePtr cloneLinkage () const
 Creates and returns a clone of this Linkage.
 
LinkagePtr cloneLinkage (const std::string &cloneName) const
 Creates and returns a clone of this Linkage.
 
MetaSkeletonPtr cloneMetaSkeleton (const std::string &cloneName) const override
 Creates an identical clone of this MetaSkeleton.
 
bool isAssembled () const
 Returns false if the original assembly of this Linkage has been broken in some way.
 
void reassemble ()
 Revert the assembly of this Linkage to its original structure.
 
void satisfyCriteria ()
 Redefine this Linkage so that its Criteria is satisfied.
 
- Public Member Functions inherited from dart::dynamics::ReferentialSkeleton
ReferentialSkeletonoperator= (const ReferentialSkeleton &_other)=delete
 Remove copy operator TODO(MXG): Consider allowing this.
 
virtual ~ReferentialSkeleton ()=default
 Default destructor.
 
std::unique_ptr< common::LockableReferencegetLockableReference () const override
 Returns mutex.
 
const std::string & setName (const std::string &_name) override
 Set the name of this MetaSkeleton.
 
const std::string & getName () const override
 Get the name of this MetaSkeleton.
 
std::size_t getNumSkeletons () const
 Returns number of skeletons associated with this ReferentialSkeleton.
 
bool hasSkeleton (const Skeleton *skel) const
 Returns whether this ReferentialSkeleton contains any BodyNode or Joint from skel. More...
 
std::size_t getNumBodyNodes () const override
 Get number of body nodes.
 
BodyNodegetBodyNode (std::size_t _idx) override
 Get BodyNode whose index is _idx.
 
const BodyNodegetBodyNode (std::size_t _idx) const override
 Get const BodyNode whose index is _idx.
 
BodyNodegetBodyNode (const std::string &name) override
 Returns the BodyNode of given name. More...
 
const BodyNodegetBodyNode (const std::string &name) const override
 Returns the BodyNode of given name. More...
 
const std::vector< BodyNode * > & getBodyNodes () override
 Get all the BodyNodes that are held by this MetaSkeleton.
 
const std::vector< const BodyNode * > & getBodyNodes () const override
 Get all the BodyNodes that are held by this MetaSkeleton.
 
std::vector< BodyNode * > getBodyNodes (const std::string &name) override
 Returns all the BodyNodes of given name. More...
 
std::vector< const BodyNode * > getBodyNodes (const std::string &name) const override
 Returns all the BodyNodes of given name. More...
 
bool hasBodyNode (const BodyNode *bodyNode) const override
 Returns whether this Skeleton contains bodyNode.
 
std::size_t getIndexOf (const BodyNode *_bn, bool _warning=true) const override
 Get the index of a specific BodyNode within this ReferentialSkeleton. More...
 
std::size_t getNumJoints () const override
 Get number of Joints.
 
JointgetJoint (std::size_t _idx) override
 Get Joint whose index is _idx.
 
const JointgetJoint (std::size_t _idx) const override
 Get const Joint whose index is _idx.
 
JointgetJoint (const std::string &name) override
 Returns the Joint of given name. More...
 
const JointgetJoint (const std::string &name) const override
 Returns the Joint of given name. More...
 
std::vector< Joint * > getJoints () override
 Returns all the joints that are held by this MetaSkeleton.
 
std::vector< const Joint * > getJoints () const override
 Returns all the joints that are held by this MetaSkeleton.
 
std::vector< Joint * > getJoints (const std::string &name) override
 Returns all the Joint of given name. More...
 
std::vector< const Joint * > getJoints (const std::string &name) const override
 Returns all the Joint of given name. More...
 
bool hasJoint (const Joint *joint) const override
 Returns whether this Skeleton contains join.
 
std::size_t getIndexOf (const Joint *_joint, bool _warning=true) const override
 Get the index of a specific Joint within this ReferentialSkeleton. More...
 
std::size_t getNumDofs () const override
 Return the number of degrees of freedom in this skeleton.
 
DegreeOfFreedomgetDof (std::size_t _idx) override
 Get degree of freedom (aka generalized coordinate) whose index is _idx.
 
const DegreeOfFreedomgetDof (std::size_t _idx) const override
 Get degree of freedom (aka generalized coordinate) whose index is _idx.
 
const std::vector< DegreeOfFreedom * > & getDofs () override
 Get the vector of DegreesOfFreedom for this MetaSkeleton.
 
std::vector< const DegreeOfFreedom * > getDofs () const override
 Get a vector of const DegreesOfFreedom for this MetaSkeleton.
 
std::size_t getIndexOf (const DegreeOfFreedom *_dof, bool _warning=true) const override
 Get the index of a specific DegreeOfFreedom within this ReferentialSkeleton. More...
 
math::Jacobian getJacobian (const JacobianNode *_node) const override
 Get the spatial Jacobian targeting the origin of a BodyNode. More...
 
math::Jacobian getJacobian (const JacobianNode *_node, const Frame *_inCoordinatesOf) const override
 Get the spatial Jacobian targeting the origin of a BodyNode. More...
 
math::Jacobian getJacobian (const JacobianNode *_node, const Eigen::Vector3d &_localOffset) const override
 Get the spatial Jacobian targeting an offset in a BodyNode. More...
 
math::Jacobian getJacobian (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const Frame *_inCoordinatesOf) const override
 Get the spatial Jacobian targeting an offset in a BodyNode. More...
 
math::Jacobian getWorldJacobian (const JacobianNode *_node) const override
 Get the spatial Jacobian targeting the origin of a BodyNode. More...
 
math::Jacobian getWorldJacobian (const JacobianNode *_node, const Eigen::Vector3d &_localOffset) const override
 Get the spatial Jacobian targeting an offset in a BodyNode. More...
 
math::LinearJacobian getLinearJacobian (const JacobianNode *_node, const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the linear Jacobian targeting the origin of a BodyNode. More...
 
math::LinearJacobian getLinearJacobian (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the linear Jacobian targeting an offset in a BodyNode. More...
 
math::AngularJacobian getAngularJacobian (const JacobianNode *_node, const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the angular Jacobian of a BodyNode. More...
 
math::Jacobian getJacobianSpatialDeriv (const JacobianNode *_node) const override
 Get the spatial Jacobian time derivative targeting the origin of a BodyNode. More...
 
math::Jacobian getJacobianSpatialDeriv (const JacobianNode *_node, const Frame *_inCoordinatesOf) const override
 Get the spatial Jacobian time derivative targeting the origin of a BodyNode. More...
 
math::Jacobian getJacobianSpatialDeriv (const JacobianNode *_node, const Eigen::Vector3d &_localOffset) const override
 Get the spatial Jacobian time derivative targeting an offset in a BodyNode. More...
 
math::Jacobian getJacobianSpatialDeriv (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const Frame *_inCoordinatesOf) const override
 Get the spatial Jacobian time derivative targeting an offset in a BodyNode. More...
 
math::Jacobian getJacobianClassicDeriv (const JacobianNode *_node) const override
 Get the spatial Jacobian (classical) time derivative targeting the origin of a BodyNode. More...
 
math::Jacobian getJacobianClassicDeriv (const JacobianNode *_node, const Frame *_inCoordinatesOf) const override
 Get the spatial Jacobian (classical) time derivative targeting the origin a BodyNode. More...
 
math::Jacobian getJacobianClassicDeriv (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the spatial Jacobian (classical) time derivative targeting an offset in a BodyNode. More...
 
math::LinearJacobian getLinearJacobianDeriv (const JacobianNode *_node, const Frame *_inCoordinatesOf=Frame::World()) const override
 of a BodyNode. More...
 
math::LinearJacobian getLinearJacobianDeriv (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the linear Jacobian (classical) time derivative targeting an offset in a BodyNode. More...
 
math::AngularJacobian getAngularJacobianDeriv (const JacobianNode *_node, const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the angular Jacobian time derivative of a BodyNode. More...
 
double getMass () const override
 Get the total mass of all BodyNodes in this ReferentialSkeleton. More...
 
const Eigen::MatrixXd & getMassMatrix () const override
 Get the Mass Matrix of the MetaSkeleton.
 
const Eigen::MatrixXd & getAugMassMatrix () const override
 Get augmented mass matrix of the skeleton. More...
 
const Eigen::MatrixXd & getInvMassMatrix () const override
 Get inverse of Mass Matrix of the MetaSkeleton.
 
const Eigen::MatrixXd & getInvAugMassMatrix () const override
 Get inverse of augmented Mass Matrix of the MetaSkeleton.
 
const Eigen::VectorXd & getCoriolisForces () const override
 Get Coriolis force vector of the MetaSkeleton's BodyNodes.
 
const Eigen::VectorXd & getGravityForces () const override
 Get gravity force vector of the MetaSkeleton.
 
const Eigen::VectorXd & getCoriolisAndGravityForces () const override
 Get combined vector of Coriolis force and gravity force of the MetaSkeleton. More...
 
const Eigen::VectorXd & getExternalForces () const override
 Get external force vector of the MetaSkeleton.
 
const Eigen::VectorXd & getConstraintForces () const override
 Get constraint force vector.
 
void clearExternalForces () override
 Clear the external forces of the BodyNodes in this MetaSkeleton.
 
void clearInternalForces () override
 Clear the internal forces of the BodyNodes in this MetaSkeleton.
 
double computeKineticEnergy () const override
 Get the kinetic energy of this MetaSkeleton.
 
double computePotentialEnergy () const override
 Get the potential energy of this MetaSkeleton.
 
void clearCollidingBodies () override
 Clear collision flags of the BodyNodes in this MetaSkeleton.
 
Eigen::Vector3d getCOM (const Frame *_withRespectTo=Frame::World()) const override
 Get the MetaSkeleton's COM with respect to any Frame (default is World Frame)
 
Eigen::Vector6d getCOMSpatialVelocity (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the Skeleton's COM spatial velocity in terms of any Frame (default is World Frame)
 
Eigen::Vector3d getCOMLinearVelocity (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the Skeleton's COM linear velocity in terms of any Frame (default is World Frame)
 
Eigen::Vector6d getCOMSpatialAcceleration (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the Skeleton's COM spatial acceleration in terms of any Frame (default is World Frame)
 
Eigen::Vector3d getCOMLinearAcceleration (const Frame *_relativeTo=Frame::World(), const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the MetaSkeleton's COM linear acceleration in terms of any Frame (default is World Frame)
 
math::Jacobian getCOMJacobian (const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the MetaSkeleton's COM Jacobian in terms of any Frame (default is World Frame)
 
math::LinearJacobian getCOMLinearJacobian (const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the MetaSkeleton's COM Linear Jacobian in terms of any Frame (default is World Frame)
 
math::Jacobian getCOMJacobianSpatialDeriv (const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the Skeleton's COM Jacobian spatial time derivative in terms of any Frame (default is World Frame). More...
 
math::LinearJacobian getCOMLinearJacobianDeriv (const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the Skeleton's COM Linear Jacobian time derivative in terms of any Frame (default is World Frame). More...
 
- Public Member Functions inherited from dart::dynamics::MetaSkeleton
 MetaSkeleton (const MetaSkeleton &)=delete
 
virtual ~MetaSkeleton ()=default
 Default destructor.
 
MetaSkeletonPtr cloneMetaSkeleton () const
 Creates an identical clone of this MetaSkeleton.
 
void setCommand (std::size_t _index, double _command)
 Set a single command.
 
double getCommand (std::size_t _index) const
 Get a single command.
 
void setCommands (const Eigen::VectorXd &_commands)
 Set commands for all generalized coordinates.
 
void setCommands (const std::vector< std::size_t > &_indices, const Eigen::VectorXd &_commands)
 Set commands for a subset of the generalized coordinates.
 
Eigen::VectorXd getCommands () const
 Get commands for all generalized coordinates.
 
Eigen::VectorXd getCommands (const std::vector< std::size_t > &_indices) const
 Get commands for a subset of the generalized coordinates.
 
void resetCommands ()
 Set all commands to zero.
 
void setPosition (std::size_t index, double _position)
 Set the position of a single generalized coordinate.
 
double getPosition (std::size_t _index) const
 Get the position of a single generalized coordinate.
 
void setPositions (const Eigen::VectorXd &_positions)
 Set the positions for all generalized coordinates.
 
void setPositions (const std::vector< std::size_t > &_indices, const Eigen::VectorXd &_positions)
 Set the positions for a subset of the generalized coordinates.
 
Eigen::VectorXd getPositions () const
 Get the positions for all generalized coordinates.
 
Eigen::VectorXd getPositions (const std::vector< std::size_t > &_indices) const
 Get the positions for a subset of the generalized coordinates.
 
void resetPositions ()
 Set all positions to zero.
 
void setPositionLowerLimit (std::size_t _index, double _position)
 Set the lower limit of a generalized coordinate's position.
 
void setPositionLowerLimits (const Eigen::VectorXd &positions)
 Set the lower limits for all generalized coordinates.
 
void setPositionLowerLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &positions)
 Set the lower limits for a subset of the generalized coordinates.
 
double getPositionLowerLimit (std::size_t _index) const
 Get the lower limit of a generalized coordinate's position.
 
Eigen::VectorXd getPositionLowerLimits () const
 Get the lower limits for all generalized coordinates.
 
Eigen::VectorXd getPositionLowerLimits (const std::vector< std::size_t > &indices) const
 Get the lower limits for a subset of the generalized coordinates.
 
void setPositionUpperLimit (std::size_t _index, double _position)
 Set the upper limit of a generalized coordainte's position.
 
void setPositionUpperLimits (const Eigen::VectorXd &positions)
 Set the upper limits for all generalized coordinates.
 
void setPositionUpperLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &positions)
 Set the upper limits for a subset of the generalized coordinates.
 
double getPositionUpperLimit (std::size_t _index) const
 Get the upper limit of a generalized coordinate's position.
 
Eigen::VectorXd getPositionUpperLimits () const
 Get the upper limits for all generalized coordinates.
 
Eigen::VectorXd getPositionUpperLimits (const std::vector< std::size_t > &indices) const
 Get the upper limits for a subset of the generalized coordinates.
 
void setVelocity (std::size_t _index, double _velocity)
 Set the velocity of a single generalized coordinate.
 
double getVelocity (std::size_t _index) const
 Get the velocity of a single generalized coordinate.
 
void setVelocities (const Eigen::VectorXd &_velocities)
 Set the velocities of all generalized coordinates.
 
void setVelocities (const std::vector< std::size_t > &_indices, const Eigen::VectorXd &_velocities)
 Set the velocities of a subset of the generalized coordinates.
 
Eigen::VectorXd getVelocities () const
 Get the velocities for all generalized coordinates.
 
Eigen::VectorXd getVelocities (const std::vector< std::size_t > &_indices) const
 Get the velocities for a subset of the generalized coordinates.
 
void resetVelocities ()
 Set all velocities to zero.
 
void setVelocityLowerLimit (std::size_t _index, double _velocity)
 Set the lower limit of a generalized coordinate's velocity.
 
void setVelocityLowerLimits (const Eigen::VectorXd &velocities)
 Set the lower limits for all generalized coordinates's velocity.
 
void setVelocityLowerLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &velocities)
 Set the lower limits for a subset of the generalized coordinates's velocity.
 
double getVelocityLowerLimit (std::size_t _index)
 Get the lower limit of a generalized coordinate's velocity.
 
Eigen::VectorXd getVelocityLowerLimits () const
 Get the lower limits for all generalized coordinates's velocity.
 
Eigen::VectorXd getVelocityLowerLimits (const std::vector< std::size_t > &indices) const
 Get the lower limits for a subset of the generalized coordinates's velocity.
 
void setVelocityUpperLimit (std::size_t _index, double _velocity)
 Set the upper limit of a generalized coordinate's velocity.
 
void setVelocityUpperLimits (const Eigen::VectorXd &velocities)
 Set the upper limits for all generalized coordinates's velocity.
 
void setVelocityUpperLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &velocities)
 Set the upper limits for a subset of the generalized coordinates's velocity.
 
double getVelocityUpperLimit (std::size_t _index)
 Get the upper limit of a generalized coordinate's velocity.
 
Eigen::VectorXd getVelocityUpperLimits () const
 Get the upper limits for all generalized coordinates's velocity.
 
Eigen::VectorXd getVelocityUpperLimits (const std::vector< std::size_t > &indices) const
 Get the upper limits for a subset of the generalized coordinates's velocity.
 
void setAcceleration (std::size_t _index, double _acceleration)
 Set the acceleration of a single generalized coordinate.
 
double getAcceleration (std::size_t _index) const
 Get the acceleration of a single generalized coordinate.
 
void setAccelerations (const Eigen::VectorXd &_accelerations)
 Set the accelerations of all generalized coordinates.
 
void setAccelerations (const std::vector< std::size_t > &_indices, const Eigen::VectorXd &_accelerations)
 Set the accelerations of a subset of the generalized coordinates.
 
Eigen::VectorXd getAccelerations () const
 Get the accelerations for all generalized coordinates.
 
Eigen::VectorXd getAccelerations (const std::vector< std::size_t > &_indices) const
 Get the accelerations for a subset of the generalized coordinates.
 
void resetAccelerations ()
 Set all accelerations to zero.
 
void setAccelerationLowerLimit (std::size_t _index, double _acceleration)
 Set the lower limit of a generalized coordinate's acceleration.
 
void setAccelerationLowerLimits (const Eigen::VectorXd &accelerations)
 Set the lower limits for all generalized coordinates's acceleration.
 
void setAccelerationLowerLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &accelerations)
 Set the lower limits for a subset of the generalized coordinates's acceleration.
 
double getAccelerationLowerLimit (std::size_t _index) const
 Get the lower limit of a generalized coordinate's acceleration.
 
Eigen::VectorXd getAccelerationLowerLimits () const
 Get the lower limits for all generalized coordinates's acceleration.
 
Eigen::VectorXd getAccelerationLowerLimits (const std::vector< std::size_t > &indices) const
 Get the lower limits for a subset of the generalized coordinates's acceleration.
 
void setAccelerationUpperLimit (std::size_t _index, double _acceleration)
 Set the upper limit of a generalized coordinate's acceleration.
 
void setAccelerationUpperLimits (const Eigen::VectorXd &accelerations)
 Set the upper limits for all generalized coordinates's acceleration.
 
void setAccelerationUpperLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &accelerations)
 Set the upper limits for a subset of the generalized coordinates's acceleration.
 
double getAccelerationUpperLimit (std::size_t _index) const
 Get the upper limit of a generalized coordinate's acceleration.
 
Eigen::VectorXd getAccelerationUpperLimits () const
 Get the upper limits for all generalized coordinates's acceleration.
 
Eigen::VectorXd getAccelerationUpperLimits (const std::vector< std::size_t > &indices) const
 Get the upper limits for a subset of the generalized coordinates's acceleration.
 
void setForce (std::size_t _index, double _force)
 Set the force of a single generalized coordinate.
 
double getForce (std::size_t _index) const
 Get the force of a single generalized coordinate.
 
void setForces (const Eigen::VectorXd &_forces)
 Set the forces of all generalized coordinates.
 
void setForces (const std::vector< std::size_t > &_index, const Eigen::VectorXd &_forces)
 Set the forces of a subset of the generalized coordinates.
 
Eigen::VectorXd getForces () const
 Get the forces for all generalized coordinates.
 
Eigen::VectorXd getForces (const std::vector< std::size_t > &_indices) const
 Get the forces for a subset of the generalized coordinates.
 
void resetGeneralizedForces ()
 Set all forces of the generalized coordinates to zero.
 
void setForceLowerLimit (std::size_t _index, double _force)
 Set the lower limit of a generalized coordinate's force.
 
void setForceLowerLimits (const Eigen::VectorXd &forces)
 Set the lower limits for all generalized coordinates's force.
 
void setForceLowerLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &forces)
 Set the lower limits for a subset of the generalized coordinates's force.
 
double getForceLowerLimit (std::size_t _index) const
 Get the lower limit of a generalized coordinate's force.
 
Eigen::VectorXd getForceLowerLimits () const
 Get the lower limits for all generalized coordinates's force.
 
Eigen::VectorXd getForceLowerLimits (const std::vector< std::size_t > &indices) const
 Get the lower limits for a subset of the generalized coordinates's force.
 
void setForceUpperLimit (std::size_t _index, double _force)
 Set the upper limit of a generalized coordinate's force.
 
void setForceUpperLimits (const Eigen::VectorXd &forces)
 Set the upperlimits for all generalized coordinates's force.
 
void setForceUpperLimits (const std::vector< std::size_t > &indices, const Eigen::VectorXd &forces)
 Set the upper limits for a subset of the generalized coordinates's force.
 
double getForceUpperLimit (std::size_t _index) const
 Get the upper limit of a generalized coordinate's force.
 
Eigen::VectorXd getForceUpperLimits () const
 Get the upper limits for all generalized coordinates's force.
 
Eigen::VectorXd getForceUpperLimits (const std::vector< std::size_t > &indices) const
 Get the upper limits for a subset of the generalized coordinates's force.
 
Eigen::VectorXd getVelocityChanges () const
 Get the velocity changes for all the generalized coordinates.
 
void setJointConstraintImpulses (const Eigen::VectorXd &_impulses)
 Set the constraint impulses for the generalized coordinates.
 
Eigen::VectorXd getJointConstraintImpulses () const
 Get the constraint impulses for the generalized coordinates.
 
math::Jacobian getJacobian (const JacobianNode *_node, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf) const
 Get the spatial Jacobian targeting the origin of a BodyNode relative to another BodyNode in the same Skeleton. More...
 
math::Jacobian getJacobian (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf) const
 Get the spatial Jacobian targeting an offset in a BodyNode relative to another BodyNode in the same Skeleton. More...
 
math::LinearJacobian getLinearJacobian (const JacobianNode *_node, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf=Frame::World()) const
 Get the linear Jacobian targeting the origin of a BodyNode relative to another BodyNode in the same Skeleton. More...
 
math::LinearJacobian getLinearJacobian (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf=Frame::World()) const
 Get the linear Jacobian targeting an offset in a BodyNode relative to another BodyNode in the same Skeleton. More...
 
math::AngularJacobian getAngularJacobian (const JacobianNode *_node, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf=Frame::World()) const
 Get the angular Jacobian of a BodyNode relative to another BodyNode in the same Skeleton. More...
 
math::Jacobian getJacobianSpatialDeriv (const JacobianNode *_node, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf) const
 Get the spatial Jacobian time derivative targeting the origin of a BodyNode relative to another BodyNode in the same Skeleton. More...
 
math::Jacobian getJacobianSpatialDeriv (const JacobianNode *_node, const Eigen::Vector3d &_localOffset, const JacobianNode *_relativeTo, const Frame *_inCoordinatesOf) const
 Get the spatial Jacobian time derivative targeting an offset in a BodyNode relative to another Bodynode in the same Skeleton. More...
 
double computeLagrangian () const
 Compute and return Lagrangian of this MetaSkeleton.
 
double getKineticEnergy () const
 Get the kinetic energy of this MetaSkeleton.
 
double getPotentialEnergy () const
 Get the potential energy of this MetaSkeleton.
 
- Public Member Functions inherited from dart::common::Subject
virtual ~Subject ()
 Destructor will notify all Observers that it is destructing.
 

Static Public Member Functions

static ChainPtr create (const Chain::Criteria &_criteria, const std::string &_name="Chain")
 Create a Chain given some Chain::Criteria.
 
static ChainPtr create (BodyNode *_start, BodyNode *_target, const std::string &_name="Chain")
 Create a Chain given a start and a target BodyNode. More...
 
static ChainPtr create (BodyNode *_start, BodyNode *_target, IncludeUpstreamParentJointTag, const std::string &_name="Chain")
 Create a Chain given a start and a target BodyNode. More...
 
- Static Public Member Functions inherited from dart::dynamics::Linkage
static LinkagePtr create (const Criteria &_criteria, const std::string &_name="Linkage")
 Create a Linkage with the given Criteria.
 

Protected Member Functions

 Chain (const Chain::Criteria &_criteria, const std::string &_name="Chain")
 Constructor for the Chain class.
 
 Chain (BodyNode *_start, BodyNode *_target, const std::string &_name="Chain")
 Alternative constructor for the Chain class.
 
 Chain (BodyNode *_start, BodyNode *_target, IncludeUpstreamParentJointTag, const std::string &_name="Chain")
 Alternative constructor for the Chain class.
 
- Protected Member Functions inherited from dart::dynamics::Linkage
 Linkage (const Criteria &_criteria, const std::string &_name="Linkage")
 Constructor for the Linkage class. More...
 
virtual void update ()
 Update any metadata needed by the Linkage or its derived classes.
 
- Protected Member Functions inherited from dart::dynamics::ReferentialSkeleton
 ReferentialSkeleton ()=default
 Default constructor. More...
 
void registerComponent (BodyNode *_bn)
 Add a BodyNode, along with its parent Joint and parent DegreesOfFreedom to this ReferentialSkeleton. More...
 
void registerBodyNode (BodyNode *_bn)
 Add a BodyNode to this ReferentialSkeleton, ignoring its Joint and DegreesOfFreedom. More...
 
void registerJoint (Joint *_joint)
 Add a Joint to this Referential Skeleton, ignoring its DegreesOfFreedom. More...
 
void registerDegreeOfFreedom (DegreeOfFreedom *_dof)
 Add a DegreeOfFreedom to this ReferentialSkeleton. More...
 
void unregisterComponent (BodyNode *_bn)
 Completely remove a BodyNode and its parent DegreesOfFreedom from this ReferentialSkeleton. More...
 
void unregisterBodyNode (BodyNode *_bn, bool _unregisterDofs)
 Remove a BodyNode from this ReferentialSkeleton, ignoring its parent DegreesOfFreedom. More...
 
void unregisterJoint (BodyNode *_child)
 Remove a Joint from this ReferentialSkeleton. More...
 
void unregisterDegreeOfFreedom (BodyNode *_bn, std::size_t _localIndex)
 Remove a DegreeOfFreedom from this ReferentialSkeleton. More...
 
void updateCaches ()
 Update the caches to match any changes to the structure of this ReferentialSkeleton.
 
- Protected Member Functions inherited from dart::dynamics::MetaSkeleton
 MetaSkeleton ()
 Default constructor.
 
- Protected Member Functions inherited from dart::common::Subject
void sendDestructionNotification () const
 Send a destruction notification to all Observers. More...
 
void addObserver (Observer *_observer) const
 Add an Observer to the list of Observers.
 
void removeObserver (Observer *_observer) const
 Remove an Observer from the list of Observers.
 

Additional Inherited Members

- Public Attributes inherited from dart::dynamics::MetaSkeleton
common::SlotRegister< NameChangedSignalonNameChanged
 
- Protected Attributes inherited from dart::dynamics::Linkage
Criteria mCriteria
 Criteria that defines the structure of this Linkage.
 
std::vector< WeakBodyNodePtr > mParentBodyNodes
 Recording of the parent BodyNodes that were held by each of the BodyNodes when the Linkage was constructed.
 
- Protected Attributes inherited from dart::dynamics::ReferentialSkeleton
std::weak_ptr< MetaSkeletonmPtr
 Weak pointer to this Skeleton.
 
std::string mName
 Name of this ReferentialSkeleton.
 
std::unordered_set< const Skeleton * > mSkeletons
 Skeletons that this ReferentialSkeleton contains any BodyNode or Joint from the Skeletons. More...
 
std::set< std::mutex * > mSkeletonMutexes
 Mutexes of the skeletons. More...
 
std::vector< BodyNodePtr > mBodyNodes
 BodyNodes that this ReferentialSkeleton references. More...
 
std::vector< BodyNode * > mRawBodyNodes
 Raw BodyNode pointers. This vector is used for the MetaSkeleton API.
 
std::vector< const BodyNode * > mRawConstBodyNodes
 Raw const BodyNode pointers. This vector is used for the MetaSkeleton API.
 
std::vector< JointPtr > mJoints
 Joints that this ReferentialSkeleton references.
 
std::vector< DegreeOfFreedomPtr > mDofs
 DegreesOfFreedom that this ReferentialSkeleton references.
 
std::vector< DegreeOfFreedom * > mRawDofs
 Raw DegreeOfFreedom vector. This vector is used for the MetaSkeleton API.
 
std::vector< const DegreeOfFreedom * > mRawConstDofs
 Raw const DegreeOfFreedom vector. More...
 
std::unordered_map< const BodyNode *, IndexMapmIndexMap
 Raw const DegreeOfFreedom. This vector is used for the MetaSkeleton API. More...
 
Eigen::MatrixXd mM
 Cache for Mass Matrix.
 
Eigen::MatrixXd mAugM
 Cache for Augmented Mass Matrix.
 
Eigen::MatrixXd mInvM
 Cache for inverse Mass Matrix.
 
Eigen::MatrixXd mInvAugM
 Cache for inverse Augmented Mass Matrix.
 
Eigen::VectorXd mCvec
 Cache for Coriolis vector.
 
Eigen::VectorXd mG
 Cache for gravity vector.
 
Eigen::VectorXd mCg
 Cache for combined Coriolis and gravity vector.
 
Eigen::VectorXd mFext
 Cache for external force vector.
 
Eigen::VectorXd mFc
 Cache for constraint force vector.
 
- Protected Attributes inherited from dart::dynamics::MetaSkeleton
NameChangedSignal mNameChangedSignal
 
- Protected Attributes inherited from dart::common::Subject
std::set< Observer * > mObservers
 List of current Observers.
 

Detailed Description

Chain is a specialized type of Linkage that represents a single unbranching and fully connected sequence of BodyNodes.

A chain will start from a specified BodyNode and include every BodyNode on the way to a target BodyNode, except it will stop if it encounters a branching (BodyNode with multiple child BodyNodes) or a FreeJoint.

Member Enumeration Documentation

◆ IncludeUpstreamParentJointTag

This enum is used to specify to the create() function that the parent joint of whichever is upstream of the other should be included in the Chain that gets generated.

Member Function Documentation

◆ create() [1/2]

ChainPtr dart::dynamics::Chain::create ( BodyNode _start,
BodyNode _target,
const std::string &  _name = "Chain" 
)
static

Create a Chain given a start and a target BodyNode.

Note that whichever BodyNode is upstream of the other will be excluded from the Chain.

◆ create() [2/2]

ChainPtr dart::dynamics::Chain::create ( BodyNode _start,
BodyNode _target,
IncludeUpstreamParentJointTag  ,
const std::string &  _name = "Chain" 
)
static

Create a Chain given a start and a target BodyNode.

In this version, both BodyNodes will be included in the Chain that gets created.

◆ isStillChain()

bool dart::dynamics::Chain::isStillChain ( ) const

Returns false if this Chain has been broken, or some new Branching has been added.


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