dart
Classes | Public Types | Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
dart::dynamics::Skeleton Class Reference

class Skeleton More...

#include <Skeleton.hpp>

Inheritance diagram for dart::dynamics::Skeleton:
dart::common::VersionCounter dart::dynamics::MetaSkeleton dart::dynamics::SkeletonSpecializedFor< ShapeNode, EndEffector, Marker > dart::common::EmbedPropertiesOnTopOf< DerivedT, PropertiesDataT, CompositeBases > dart::common::Subject dart::common::CompositeJoiner< EmbedProperties< DerivedT, PropertiesDataT >, CompositeBases... >

Classes

struct  Configuration
 The Configuration struct represents the joint configuration of a Skeleton. More...
 
struct  DataCache
 
struct  DirtyFlags
 

Public Types

enum  ConfigFlags {
  CONFIG_NOTHING = 0, CONFIG_POSITIONS = 1 << 1, CONFIG_VELOCITIES = 1 << 2, CONFIG_ACCELERATIONS = 1 << 3,
  CONFIG_FORCES = 1 << 4, CONFIG_COMMANDS = 1 << 5, CONFIG_ALL = 0xFF
}
 
using AspectPropertiesData = detail::SkeletonAspectProperties
 
using AspectProperties = common::Aspect::MakeProperties< AspectPropertiesData >
 
using State = common::Composite::State
 
using Properties = common::Composite::Properties
 
- 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 Types inherited from dart::common::EmbedPropertiesOnTopOf< DerivedT, PropertiesDataT, CompositeBases >
using Impl = EmbedProperties< DerivedT, PropertiesDataT >
 
using Derived = typename Impl::Derived
 
using AspectPropertiesData = typename Impl::AspectPropertiesData
 
using AspectProperties = typename Impl::AspectProperties
 
using Aspect = typename Impl::Aspect
 
using Base = CompositeJoiner< Impl, CompositeBases... >
 

Public Member Functions

void integratePositions (double _dt)
 
void integrateVelocities (double _dt)
 
Eigen::VectorXd getPositionDifferences (const Eigen::VectorXd &_q2, const Eigen::VectorXd &_q1) const
 Return the difference of two generalized positions which are measured in the configuration space of this Skeleton. More...
 
Eigen::VectorXd getVelocityDifferences (const Eigen::VectorXd &_dq2, const Eigen::VectorXd &_dq1) const
 Return the difference of two generalized velocities or accelerations which are measured in the tangent space at the identity. More...
 
void computeForwardKinematics (bool _updateTransforms=true, bool _updateVels=true, bool _updateAccs=true)
 Compute forward kinematics. More...
 
void computeForwardDynamics ()
 Compute forward dynamics.
 
void computeInverseDynamics (bool _withExternalForces=false, bool _withDampingForces=false, bool _withSpringForces=false)
 Computes inverse dynamics. More...
 
void clearConstraintImpulses ()
 Clear constraint impulses and cache data used for impulse-based forward dynamics algorithm, where the constraint impulses are spatial constraints on the BodyNodes and generalized constraints on the Joints. More...
 
void updateBiasImpulse (BodyNode *_bodyNode)
 Update bias impulses.
 
void updateBiasImpulse (BodyNode *_bodyNode, const Eigen::Vector6d &_imp)
 Update bias impulses due to impulse [_imp] on body node [_bodyNode]. More...
 
void updateBiasImpulse (BodyNode *_bodyNode1, const Eigen::Vector6d &_imp1, BodyNode *_bodyNode2, const Eigen::Vector6d &_imp2)
 Update bias impulses due to impulse [_imp] on body node [_bodyNode]. More...
 
void updateBiasImpulse (SoftBodyNode *_softBodyNode, PointMass *_pointMass, const Eigen::Vector3d &_imp)
 Update bias impulses due to impulse[_imp] on body node [_bodyNode].
 
void updateVelocityChange ()
 Update velocity changes in body nodes and joints due to applied impulse.
 
void setImpulseApplied (bool _val)
 Set whether this skeleton is constrained. More...
 
bool isImpulseApplied () const
 Get whether this skeleton is constrained.
 
void computeImpulseForwardDynamics ()
 Compute impulse-based forward dynamics.
 
void resetUnion ()
 
Configuration
void setConfiguration (const Configuration &configuration)
 Set the configuration of this Skeleton.
 
Configuration getConfiguration (int flags=CONFIG_ALL) const
 Get the configuration of this Skeleton.
 
Configuration getConfiguration (const std::vector< std::size_t > &indices, int flags=CONFIG_ALL) const
 Get the configuration of the specified indices in this Skeleton.
 
State
void setState (const State &state)
 Set the State of this Skeleton [alias for setCompositeState(~)].
 
State getState () const
 Get the State of this Skeleton [alias for getCompositeState()].
 
Properties
void setProperties (const Properties &properties)
 Set all properties of this Skeleton.
 
Properties getProperties () const
 Get all properties of this Skeleton.
 
void setProperties (const AspectProperties &properties)
 Set the Properties of this Skeleton.
 
const AspectProperties & getSkeletonProperties () const
 Get the Properties of this Skeleton.
 
void setAspectProperties (const AspectProperties &properties)
 Set the AspectProperties of this Skeleton.
 
const std::string & setName (const std::string &_name) override
 Set name.
 
const std::string & getName () const override
 Get name.
 
void enableSelfCollision (bool enableAdjacentBodyCheck=false)
 Deprecated. More...
 
void disableSelfCollision ()
 Deprecated. Please use disableSelfCollisionCheck() instead.
 
void setSelfCollisionCheck (bool enable)
 Set whether to check self-collision.
 
bool getSelfCollisionCheck () const
 Return whether self-collision check is enabled.
 
void enableSelfCollisionCheck ()
 Enable self-collision check.
 
void disableSelfCollisionCheck ()
 Disable self-collision check.
 
bool isEnabledSelfCollisionCheck () const
 Return true if self-collision check is enabled.
 
void setAdjacentBodyCheck (bool enable)
 Set whether to check adjacent bodies. More...
 
bool getAdjacentBodyCheck () const
 Return whether adjacent body check is enabled.
 
void enableAdjacentBodyCheck ()
 Enable collision check for adjacent bodies. More...
 
void disableAdjacentBodyCheck ()
 Disable collision check for adjacent bodies. More...
 
bool isEnabledAdjacentBodyCheck () const
 Return true if self-collision check is enabled including adjacent bodies.
 
void setMobile (bool _isMobile)
 Set whether this skeleton will be updated by forward dynamics. More...
 
bool isMobile () const
 Get whether this skeleton will be updated by forward dynamics. More...
 
void setTimeStep (double _timeStep)
 Set time step. More...
 
double getTimeStep () const
 Get time step.
 
void setGravity (const Eigen::Vector3d &_gravity)
 Set 3-dim gravitational acceleration. More...
 
const Eigen::Vector3d & getGravity () const
 Get 3-dim gravitational acceleration.
 
Structural Properties
template<class JointType , class NodeType = BodyNode>
std::pair< JointType *, NodeType * > createJointAndBodyNodePair (BodyNode *_parent=nullptr, const typename JointType::Properties &_jointProperties=typename JointType::Properties(), const typename NodeType::Properties &_bodyProperties=typename NodeType::Properties())
 Create a Joint and child BodyNode pair of the given types. More...
 
std::size_t getNumBodyNodes () const override
 Get number of body nodes.
 
std::size_t getNumRigidBodyNodes () const
 Get number of rigid body nodes.
 
std::size_t getNumSoftBodyNodes () const
 Get number of soft body nodes.
 
std::size_t getNumTrees () const
 Get the number of independent trees that this Skeleton contains.
 
BodyNodegetRootBodyNode (std::size_t _treeIdx=0)
 Get the root BodyNode of the tree whose index in this Skeleton is _treeIdx.
 
const BodyNodegetRootBodyNode (std::size_t _treeIdx=0) const
 Get the const root BodyNode of the tree whose index in this Skeleton is _treeIdx.
 
JointgetRootJoint (std::size_t treeIdx=0u)
 Get the root Joint of the tree whose index in this Skeleton is treeIdx.
 
const JointgetRootJoint (std::size_t treeIdx=0u) const
 Get the const root Joint of the tree whose index in this Skeleton is treeIdx.
 
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.
 
SoftBodyNodegetSoftBodyNode (std::size_t _idx)
 Get SoftBodyNode whose index is _idx.
 
const SoftBodyNodegetSoftBodyNode (std::size_t _idx) const
 Get const SoftBodyNode 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...
 
SoftBodyNodegetSoftBodyNode (const std::string &_name)
 Get soft body node whose name is _name.
 
const SoftBodyNodegetSoftBodyNode (const std::string &_name) const
 Get const soft body node whose name is _name.
 
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...
 
const std::vector< BodyNode * > & getTreeBodyNodes (std::size_t _treeIdx)
 Get the BodyNodes belonging to a tree in this Skeleton.
 
std::vector< const BodyNode * > getTreeBodyNodes (std::size_t _treeIdx) const
 Get the BodyNodes belonging to a tree in this Skeleton.
 
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.
 
DegreeOfFreedomgetDof (const std::string &_name)
 Get degree of freedom (aka generalized coordinate) whose name is _name.
 
const DegreeOfFreedomgetDof (const std::string &_name) const
 Get degree of freedom (aka generalized coordinate) whose name is _name.
 
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...
 
const std::vector< DegreeOfFreedom * > & getTreeDofs (std::size_t _treeIdx)
 Get the DegreesOfFreedom belonging to a tree in this Skeleton.
 
const std::vector< const DegreeOfFreedom * > & getTreeDofs (std::size_t _treeIdx) const
 Get the DegreesOfFreedom belonging to a tree in this Skeleton.
 
bool checkIndexingConsistency () const
 This function is only meant for debugging purposes. More...
 
const std::shared_ptr< WholeBodyIK > & getIK (bool _createIfNull=false)
 Get a pointer to a WholeBodyIK module for this Skeleton. More...
 
const std::shared_ptr< WholeBodyIK > & getOrCreateIK ()
 Get a pointer to a WholeBodyIK module for this Skeleton. More...
 
std::shared_ptr< const WholeBodyIKgetIK () const
 Get a pointer to a WholeBodyIK module for this Skeleton. More...
 
const std::shared_ptr< WholeBodyIK > & createIK ()
 Create a new WholeBodyIK module for this Skeleton. More...
 
void clearIK ()
 Wipe away the WholeBodyIK module for this Skeleton, leaving it as a nullptr.
 
Support Polygon
const math::SupportPolygon & getSupportPolygon () const
 Get the support polygon of this Skeleton, which is computed based on the gravitational projection of the support geometries of all EndEffectors in this Skeleton that are currently in support mode. More...
 
const math::SupportPolygon & getSupportPolygon (std::size_t _treeIdx) const
 Same as getSupportPolygon(), but it will only use EndEffectors within the specified tree within this Skeleton.
 
const std::vector< std::size_t > & getSupportIndices () const
 Get a list of the EndEffector indices that correspond to each of the points in the support polygon. More...
 
const std::vector< std::size_t > & getSupportIndices (std::size_t _treeIdx) const
 Same as getSupportIndices(), but it corresponds to the support polygon of the specified tree within this Skeleton.
 
const std::pair< Eigen::Vector3d, Eigen::Vector3d > & getSupportAxes () const
 Get the axes that correspond to each component in the support polygon. More...
 
const std::pair< Eigen::Vector3d, Eigen::Vector3d > & getSupportAxes (std::size_t _treeIdx) const
 Same as getSupportAxes(), but it corresponds to the support polygon of the specified tree within this Skeleton.
 
const Eigen::Vector2d & getSupportCentroid () const
 Get the centroid of the support polygon for this Skeleton. More...
 
const Eigen::Vector2d & getSupportCentroid (std::size_t _treeIdx) const
 Get the centroid of the support polygon for a tree in this Skeleton. More...
 
std::size_t getSupportVersion () const
 The version number of a support polygon will be incremented each time the support polygon needs to be recomputed. More...
 
std::size_t getSupportVersion (std::size_t _treeIdx) const
 Same as getSupportVersion(), but it corresponds to the support polygon of the specified tree within this Skeleton.
 
Jacobians
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...
 
Equations of Motion
double getMass () const override
 Get total mass of the skeleton. More...
 
const Eigen::MatrixXd & getMassMatrix (std::size_t _treeIdx) const
 Get the mass matrix of a specific tree in the Skeleton.
 
const Eigen::MatrixXd & getMassMatrix () const override
 Get the Mass Matrix of the MetaSkeleton.
 
const Eigen::MatrixXd & getAugMassMatrix (std::size_t _treeIdx) const
 Get the augmented mass matrix of a specific tree in the Skeleton.
 
const Eigen::MatrixXd & getAugMassMatrix () const override
 Get augmented mass matrix of the skeleton. More...
 
const Eigen::MatrixXd & getInvMassMatrix (std::size_t _treeIdx) const
 Get the inverse mass matrix of a specific tree in the Skeleton.
 
const Eigen::MatrixXd & getInvMassMatrix () const override
 Get inverse of Mass Matrix of the MetaSkeleton.
 
const Eigen::MatrixXd & getInvAugMassMatrix (std::size_t _treeIdx) const
 Get the inverse augmented mass matrix of a tree.
 
const Eigen::MatrixXd & getInvAugMassMatrix () const override
 Get inverse of augmented Mass Matrix of the MetaSkeleton.
 
const Eigen::VectorXd & getCoriolisForces (std::size_t _treeIdx) const
 Get the Coriolis force vector of a tree in this Skeleton.
 
const Eigen::VectorXd & getCoriolisForces () const override
 Get Coriolis force vector of the MetaSkeleton's BodyNodes.
 
const Eigen::VectorXd & getGravityForces (std::size_t _treeIdx) const
 Get the gravity forces for a tree in this Skeleton.
 
const Eigen::VectorXd & getGravityForces () const override
 Get gravity force vector of the MetaSkeleton.
 
const Eigen::VectorXd & getCoriolisAndGravityForces (std::size_t _treeIdx) const
 Get the combined vector of Coriolis force and gravity force of a tree.
 
const Eigen::VectorXd & getCoriolisAndGravityForces () const override
 Get combined vector of Coriolis force and gravity force of the MetaSkeleton. More...
 
const Eigen::VectorXd & getExternalForces (std::size_t _treeIdx) const
 Get the external force vector of a tree in the Skeleton.
 
const Eigen::VectorXd & getExternalForces () const override
 Get external force vector of the MetaSkeleton.
 
const Eigen::VectorXd & getConstraintForces (std::size_t _treeIdx) const
 Get damping force of the skeleton. More...
 
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.
 
void notifyArticulatedInertiaUpdate (std::size_t _treeIdx)
 Notify that the articulated inertia and everything that depends on it needs to be updated.
 
void dirtyArticulatedInertia (std::size_t _treeIdx)
 Notify that the articulated inertia and everything that depends on it needs to be updated.
 
void notifySupportUpdate (std::size_t _treeIdx)
 Notify that the support polygon of a tree needs to be updated.
 
void dirtySupportPolygon (std::size_t _treeIdx)
 Notify that the support polygon of a tree needs to be updated.
 
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.
 
Center of Mass Jacobian
Eigen::Vector3d getCOM (const Frame *_withRespectTo=Frame::World()) const override
 Get the Skeleton'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 Skeleton'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 Skeleton's COM Jacobian in terms of any Frame (default is World Frame)
 
math::LinearJacobian getCOMLinearJacobian (const Frame *_inCoordinatesOf=Frame::World()) const override
 Get the Skeleton'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::common::VersionCounter
 VersionCounter ()
 Default constructor.
 
virtual std::size_t incrementVersion ()
 Increment the version for this object.
 
virtual std::size_t getVersion () const
 Get the version number of this object.
 
- 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.
 
- Public Member Functions inherited from dart::common::EmbedPropertiesOnTopOf< DerivedT, PropertiesDataT, CompositeBases >
template<typename... Args>
 EmbedPropertiesOnTopOf (Args &&... args)
 

Public Attributes

std::weak_ptr< SkeletonmUnionRootSkeleton
 
std::size_t mUnionSize
 
std::size_t mUnionIndex
 
- Public Attributes inherited from dart::dynamics::MetaSkeleton
common::SlotRegister< NameChangedSignalonNameChanged
 

Protected Types

using SpecializedTreeNodes = std::map< std::type_index, std::vector< NodeMap::iterator > * >
 

Protected Member Functions

 Skeleton (const AspectPropertiesData &_properties)
 Constructor called by create()
 
void setPtr (const SkeletonPtr &_ptr)
 Setup this Skeleton with its shared_ptr.
 
void constructNewTree ()
 Construct a new tree in the Skeleton.
 
void registerBodyNode (BodyNode *_newBodyNode)
 Register a BodyNode with the Skeleton. Internal use only.
 
void registerJoint (Joint *_newJoint)
 Register a Joint with the Skeleton. Internal use only.
 
void registerNode (NodeMap &nodeMap, Node *_newNode, std::size_t &_index)
 Register a Node with the Skeleton. Internal use only.
 
void registerNode (Node *_newNode)
 Register a Node with the Skeleton. Internal use only.
 
void destructOldTree (std::size_t tree)
 Remove an old tree from the Skeleton.
 
void unregisterBodyNode (BodyNode *_oldBodyNode)
 Remove a BodyNode from the Skeleton. Internal use only.
 
void unregisterJoint (Joint *_oldJoint)
 Remove a Joint from the Skeleton. Internal use only.
 
void unregisterNode (NodeMap &nodeMap, Node *_oldNode, std::size_t &_index)
 Remove a Node from the Skeleton. Internal use only.
 
void unregisterNode (Node *_oldNode)
 Remove a Node from the Skeleton. Internal use only.
 
bool moveBodyNodeTree (Joint *_parentJoint, BodyNode *_bodyNode, SkeletonPtr _newSkeleton, BodyNode *_parentNode)
 Move a subtree of BodyNodes from this Skeleton to another Skeleton.
 
template<class JointType >
JointType * moveBodyNodeTree (BodyNode *_bodyNode, const SkeletonPtr &_newSkeleton, BodyNode *_parentNode, const typename JointType::Properties &_joint)
 Move a subtree of BodyNodes from this Skeleton to another Skeleton while changing the Joint type of the top parent Joint. More...
 
std::pair< Joint *, BodyNode * > cloneBodyNodeTree (Joint *_parentJoint, const BodyNode *_bodyNode, const SkeletonPtr &_newSkeleton, BodyNode *_parentNode, bool _recursive) const
 Copy a subtree of BodyNodes onto another Skeleton while leaving the originals intact.
 
template<class JointType >
std::pair< JointType *, BodyNode * > cloneBodyNodeTree (const BodyNode *_bodyNode, const SkeletonPtr &_newSkeleton, BodyNode *_parentNode, const typename JointType::Properties &_joint, bool _recursive) const
 Copy a subtree of BodyNodes onto another Skeleton while leaving the originals intact, but alter the top parent Joint to a new type.
 
std::vector< const BodyNode * > constructBodyNodeTree (const BodyNode *_bodyNode) const
 Create a vector representation of a subtree of BodyNodes.
 
std::vector< BodyNode * > constructBodyNodeTree (BodyNode *_bodyNode)
 
std::vector< BodyNode * > extractBodyNodeTree (BodyNode *_bodyNode)
 Create a vector representation of a subtree of BodyNodes and remove that subtree from this Skeleton without deleting them.
 
void receiveBodyNodeTree (const std::vector< BodyNode *> &_tree)
 Take in and register a subtree of BodyNodes.
 
void updateTotalMass ()
 Update the computation for total mass.
 
void updateCacheDimensions (DataCache &_cache)
 Update the dimensions for a specific cache.
 
void updateCacheDimensions (std::size_t _treeIdx)
 Update the dimensions for a tree's cache.
 
void updateArticulatedInertia (std::size_t _tree) const
 Update the articulated inertia of a tree.
 
void updateArticulatedInertia () const
 Update the articulated inertias of the skeleton.
 
void updateMassMatrix (std::size_t _treeIdx) const
 Update the mass matrix of a tree.
 
void updateMassMatrix () const
 Update mass matrix of the skeleton.
 
void updateAugMassMatrix (std::size_t _treeIdx) const
 
void updateAugMassMatrix () const
 Update augmented mass matrix of the skeleton.
 
void updateInvMassMatrix (std::size_t _treeIdx) const
 Update the inverse mass matrix of a tree.
 
void updateInvMassMatrix () const
 Update inverse of mass matrix of the skeleton.
 
void updateInvAugMassMatrix (std::size_t _treeIdx) const
 Update the inverse augmented mass matrix of a tree.
 
void updateInvAugMassMatrix () const
 Update inverse of augmented mass matrix of the skeleton.
 
void updateCoriolisForces (std::size_t _treeIdx) const
 Update Coriolis force vector for a tree in the Skeleton.
 
void updateCoriolisForces () const
 Update Coriolis force vector of the skeleton.
 
void updateGravityForces (std::size_t _treeIdx) const
 Update the gravity force vector of a tree.
 
void updateGravityForces () const
 Update gravity force vector of the skeleton.
 
void updateCoriolisAndGravityForces (std::size_t _treeIdx) const
 Update the combined vector for a tree in this Skeleton.
 
void updateCoriolisAndGravityForces () const
 Update combined vector of the skeleton.
 
void updateExternalForces (std::size_t _treeIdx) const
 Update external force vector to generalized forces for a tree.
 
void updateExternalForces () const
 update external force vector to generalized forces.
 
const Eigen::VectorXd & computeConstraintForces (DataCache &cache) const
 Compute the constraint force vector for a tree.
 
const std::string & addEntryToBodyNodeNameMgr (BodyNode *_newNode)
 Add a BodyNode to the BodyNode NameManager.
 
const std::string & addEntryToJointNameMgr (Joint *_newJoint, bool _updateDofNames=true)
 Add a Joint to to the Joint NameManager.
 
void addEntryToSoftBodyNodeNameMgr (SoftBodyNode *_newNode)
 Add a SoftBodyNode to the SoftBodyNode NameManager.
 
void updateNameManagerNames ()
 
- Protected Member Functions inherited from dart::common::VersionCounter
void setVersionDependentObject (VersionCounter *dependent)
 
- 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.
 

Protected Attributes

std::weak_ptr< SkeletonmPtr
 The resource-managing pointer to this Skeleton.
 
std::vector< SoftBodyNode * > mSoftBodyNodes
 List of Soft body node list in the skeleton.
 
dart::common::NameManager< BodyNode * > mNameMgrForBodyNodes
 NameManager for tracking BodyNodes.
 
dart::common::NameManager< Joint * > mNameMgrForJoints
 NameManager for tracking Joints.
 
dart::common::NameManager< DegreeOfFreedom * > mNameMgrForDofs
 NameManager for tracking DegreesOfFreedom.
 
dart::common::NameManager< SoftBodyNode * > mNameMgrForSoftBodyNodes
 NameManager for tracking SoftBodyNodes.
 
std::shared_ptr< WholeBodyIKmWholeBodyIK
 WholeBodyIK module for this Skeleton.
 
common::aligned_vector< DataCachemTreeCache
 
DataCache mSkelCache
 
SpecializedTreeNodes mSpecializedTreeNodes
 
double mTotalMass
 Total mass.
 
bool mIsImpulseApplied
 Flag for status of impulse testing.
 
std::mutex mMutex
 
- Protected Attributes inherited from dart::common::VersionCounter
std::size_t mVersion
 
- Protected Attributes inherited from dart::dynamics::MetaSkeleton
NameChangedSignal mNameChangedSignal
 
- Protected Attributes inherited from dart::common::Subject
std::set< Observer * > mObservers
 List of current Observers.
 

Friends

class BodyNode
 
class SoftBodyNode
 
class Joint
 
template<class >
class GenericJoint
 
class DegreeOfFreedom
 
class Node
 
class ShapeNode
 
class EndEffector
 

Constructor and Destructor

static SkeletonPtr create (const std::string &_name="Skeleton")
 Create a new Skeleton inside of a shared_ptr.
 
static SkeletonPtr create (const AspectPropertiesData &properties)
 Create a new Skeleton inside of a shared_ptr.
 
SkeletonPtr getPtr ()
 Get the shared_ptr that manages this Skeleton.
 
ConstSkeletonPtr getPtr () const
 Get the shared_ptr that manages this Skeleton.
 
SkeletonPtr getSkeleton ()
 Same as getPtr(), but this allows Skeleton to have a similar interface as BodyNode and Joint for template programming. More...
 
ConstSkeletonPtr getSkeleton () const
 Same as getPtr(), but this allows Skeleton to have a similar interface as BodyNode and Joint for template programming. More...
 
std::mutex & getMutex () const
 Get the mutex that protects the state of this Skeleton.
 
std::unique_ptr< common::LockableReferencegetLockableReference () const override
 Get the mutex that protects the state of this Skeleton.
 
 Skeleton (const Skeleton &)=delete
 
virtual ~Skeleton ()
 Destructor.
 
Skeletonoperator= (const Skeleton &_other)=delete
 Remove copy operator.
 
SkeletonPtr clone () const
 Create an identical clone of this Skeleton. More...
 
SkeletonPtr clone (const std::string &cloneName) const
 Create an identical clone of this Skeleton, except that it has a new name. More...
 
SkeletonPtr cloneSkeleton () const
 Creates and returns a clone of this Skeleton.
 
SkeletonPtr cloneSkeleton (const std::string &cloneName) const
 Creates and returns a clone of this Skeleton.
 
MetaSkeletonPtr cloneMetaSkeleton (const std::string &cloneName) const override
 Creates an identical clone of this MetaSkeleton.
 

Detailed Description

class Skeleton

Member Function Documentation

§ checkIndexingConsistency()

bool dart::dynamics::Skeleton::checkIndexingConsistency ( ) const

This function is only meant for debugging purposes.

It will verify that all objects held in the Skeleton have the correct information about their indexing.

§ clearConstraintImpulses()

void dart::dynamics::Skeleton::clearConstraintImpulses ( )

Clear constraint impulses and cache data used for impulse-based forward dynamics algorithm, where the constraint impulses are spatial constraints on the BodyNodes and generalized constraints on the Joints.

§ clone() [1/2]

SkeletonPtr dart::dynamics::Skeleton::clone ( ) const

Create an identical clone of this Skeleton.

Deprecated:
Deprecated in DART 6.7. Please use cloneSkeleton() instead.

§ clone() [2/2]

SkeletonPtr dart::dynamics::Skeleton::clone ( const std::string &  cloneName) const

Create an identical clone of this Skeleton, except that it has a new name.

Deprecated:
Deprecated in DART 6.7. Please use cloneSkeleton() instead.

§ computeForwardKinematics()

void dart::dynamics::Skeleton::computeForwardKinematics ( bool  _updateTransforms = true,
bool  _updateVels = true,
bool  _updateAccs = true 
)

Compute forward kinematics.

In general, this function doesn't need to be called for forward kinematics to update. Forward kinematics will always be computed when it's needed and will only perform the computations that are necessary for what the user requests. This works by performing some bookkeeping internally with dirty flags whenever a position, velocity, or acceleration is set, either internally or by the user.

On one hand, this results in some overhead due to the extra effort of bookkeeping, but on the other hand we have much greater code safety, and in some cases performance can be dramatically improved with the auto- updating. For example, this function is inefficient when only one portion of the BodyNodes needed to be updated rather than the entire Skeleton, which is common when performing inverse kinematics on a limb or on some subsection of a Skeleton.

This function might be useful in a case where the user wants to perform all the forward kinematics computations during a particular time window rather than waiting for it to be computed at the exact time that it's needed.

One example would be a real time controller. Let's say a controller gets encoder data at time t0 but needs to wait until t1 before it receives the force-torque sensor data that it needs in order to compute the output for an operational space controller. Instead of being idle from t0 to t1, it could use that time to compute the forward kinematics by calling this function.

§ computeInverseDynamics()

void dart::dynamics::Skeleton::computeInverseDynamics ( bool  _withExternalForces = false,
bool  _withDampingForces = false,
bool  _withSpringForces = false 
)

Computes inverse dynamics.

The inverse dynamics is computed according to the following equations of motion:

\( M(q) \ddot{q} + C(q, \dot{q}) + N(q) - \tau_{\text{ext}} - \tau_d - \tau_s = \tau \)

where \( \tau_{\text{ext}} \), \( \tau_d \), and \( \tau_s \) are external forces, joint damping forces, and joint spring forces projected on to the joint space, respectively. This function provides three flags whether to take into account each forces in computing the joint forces, \( \tau_d \). Not accounting each forces implies that the forces is added to \( \tau \) in order to keep the equation equivalent. If there forces are zero (by setting external forces, damping coeff, spring stiffness zeros), these flags have no effect.

Once this function is called, the joint forces, \( \tau \), can be obtained by calling getForces().

Parameters
[in]_withExternalForcesSet true to take external forces into account.
[in]_withDampingForcesSet true to take damping forces into account.
[in]_withSpringForcesSet true to take spring forces into account.

§ createIK()

const std::shared_ptr< WholeBodyIK > & dart::dynamics::Skeleton::createIK ( )

Create a new WholeBodyIK module for this Skeleton.

If an IK module already exists in this Skeleton, it will be destroyed and replaced by a brand new one.

§ createJointAndBodyNodePair()

template<class JointType , class NodeType >
std::pair< JointType *, NodeType * > dart::dynamics::Skeleton::createJointAndBodyNodePair ( BodyNode _parent = nullptr,
const typename JointType::Properties &  _jointProperties = typename JointType::Properties(),
const typename NodeType::Properties &  _bodyProperties = typename NodeType::Properties() 
)

Create a Joint and child BodyNode pair of the given types.

When creating a root (parentless) BodyNode, pass in nullptr for the _parent argument.

§ disableAdjacentBodyCheck()

void dart::dynamics::Skeleton::disableAdjacentBodyCheck ( )

Disable collision check for adjacent bodies.

This option is effective only when the self-collision check is enabled.

§ enableAdjacentBodyCheck()

void dart::dynamics::Skeleton::enableAdjacentBodyCheck ( )

Enable collision check for adjacent bodies.

This option is effective only when the self-collision check is enabled.

§ enableSelfCollision()

void dart::dynamics::Skeleton::enableSelfCollision ( bool  enableAdjacentBodyCheck = false)

Deprecated.

Please use enableSelfCollisionCheck() and setAdjacentBodyCheck() instead.

§ getAngularJacobian()

math::AngularJacobian dart::dynamics::Skeleton::getAngularJacobian ( const JacobianNode _node,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

Get the angular Jacobian of a BodyNode.

You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getAngularJacobianDeriv()

math::AngularJacobian dart::dynamics::Skeleton::getAngularJacobianDeriv ( const JacobianNode _node,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

Get the angular Jacobian time derivative of a BodyNode.

You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getAugMassMatrix()

const Eigen::MatrixXd & dart::dynamics::Skeleton::getAugMassMatrix ( ) const
overridevirtual

Get augmented mass matrix of the skeleton.

This matrix is used in ConstraintDynamics to compute constraint forces. The matrix is M + h*D + h*h*K where D is diagonal joint damping coefficient matrix, K is diagonal joint stiffness matrix, and h is simulation time step.

Implements dart::dynamics::MetaSkeleton.

§ getBodyNode() [1/2]

BodyNode * dart::dynamics::Skeleton::getBodyNode ( const std::string &  name)
overridevirtual

Returns the BodyNode of given name.

Parameters
[in]nameThe BodyNode name that want to search.
Returns
The body node of given name.

Implements dart::dynamics::MetaSkeleton.

§ getBodyNode() [2/2]

const BodyNode * dart::dynamics::Skeleton::getBodyNode ( const std::string &  name) const
overridevirtual

Returns the BodyNode of given name.

Parameters
[in]nameThe BodyNode name that want to search.
Returns
The body node of given name.

Implements dart::dynamics::MetaSkeleton.

§ getBodyNodes() [1/2]

std::vector< BodyNode * > dart::dynamics::Skeleton::getBodyNodes ( const std::string &  name)
overridevirtual

Returns all the BodyNodes of given name.

Parameters
[in]nameThe BodyNode name that want to search.
Returns
The list of BodyNodes of given name.
Note
Skeleton always guarantees name uniqueness for BodyNodes and Joints. So this function returns the single BodyNode of the given name if it exists.

Implements dart::dynamics::MetaSkeleton.

§ getBodyNodes() [2/2]

std::vector< const BodyNode * > dart::dynamics::Skeleton::getBodyNodes ( const std::string &  name) const
overridevirtual

Returns all the BodyNodes of given name.

Parameters
[in]nameThe BodyNode name that want to search.
Returns
The list of BodyNodes of given name.
Note
Skeleton always guarantees name uniqueness for BodyNodes and Joints. So this function returns the single BodyNode of the given name if it exists.

Implements dart::dynamics::MetaSkeleton.

§ getCOMJacobianSpatialDeriv()

math::Jacobian dart::dynamics::Skeleton::getCOMJacobianSpatialDeriv ( const Frame _inCoordinatesOf = Frame::World()) const
overridevirtual

Get the Skeleton's COM Jacobian spatial time derivative in terms of any Frame (default is World Frame).

NOTE: Since this is a spatial time derivative, it is only meant to be used with spatial acceleration vectors. If you are using classical linear vectors, then use getCOMLinearJacobianDeriv() instead.

Implements dart::dynamics::MetaSkeleton.

§ getCOMLinearJacobianDeriv()

math::LinearJacobian dart::dynamics::Skeleton::getCOMLinearJacobianDeriv ( const Frame _inCoordinatesOf = Frame::World()) const
overridevirtual

Get the Skeleton's COM Linear Jacobian time derivative in terms of any Frame (default is World Frame).

NOTE: Since this is a classical time derivative, it is only meant to be used with classical acceleration vectors. If you are using spatial vectors, then use getCOMJacobianSpatialDeriv() instead.

Implements dart::dynamics::MetaSkeleton.

§ getConstraintForces()

const Eigen::VectorXd & dart::dynamics::Skeleton::getConstraintForces ( std::size_t  _treeIdx) const

Get damping force of the skeleton.

Get constraint force vector for a tree

§ getCoriolisAndGravityForces()

const Eigen::VectorXd & dart::dynamics::Skeleton::getCoriolisAndGravityForces ( ) const
overridevirtual

Get combined vector of Coriolis force and gravity force of the MetaSkeleton.

Implements dart::dynamics::MetaSkeleton.

§ getIK() [1/2]

const std::shared_ptr< WholeBodyIK > & dart::dynamics::Skeleton::getIK ( bool  _createIfNull = false)

Get a pointer to a WholeBodyIK module for this Skeleton.

If _createIfNull is true, then the IK module will be generated if one does not already exist.

§ getIK() [2/2]

std::shared_ptr< const WholeBodyIK > dart::dynamics::Skeleton::getIK ( ) const

Get a pointer to a WholeBodyIK module for this Skeleton.

Because this is a const function, a new IK module cannot be created if one does not already exist.

§ getIndexOf() [1/3]

std::size_t dart::dynamics::Skeleton::getIndexOf ( const BodyNode _bn,
bool  _warning = true 
) const
overridevirtual

Get the index of a specific BodyNode within this ReferentialSkeleton.

Returns INVALID_INDEX if it is not held in this ReferentialSkeleton. When _warning is true, a warning message will be printed if the BodyNode is not in the MetaSkeleton.

Implements dart::dynamics::MetaSkeleton.

§ getIndexOf() [2/3]

std::size_t dart::dynamics::Skeleton::getIndexOf ( const Joint _joint,
bool  _warning = true 
) const
overridevirtual

Get the index of a specific Joint within this ReferentialSkeleton.

Returns INVALID_INDEX if it is not held in this ReferentialSkeleton. When _warning is true, a warning message will be printed if the Joint is not in the MetaSkeleton.

Implements dart::dynamics::MetaSkeleton.

§ getIndexOf() [3/3]

std::size_t dart::dynamics::Skeleton::getIndexOf ( const DegreeOfFreedom _dof,
bool  _warning = true 
) const
overridevirtual

Get the index of a specific DegreeOfFreedom within this ReferentialSkeleton.

Returns INVALID_INDEX if it is not held in this ReferentialSkeleton. When _warning is true, a warning message will be printed if the DegreeOfFreedom is not in the MetaSkeleton.

Implements dart::dynamics::MetaSkeleton.

§ getJacobian() [1/4]

math::Jacobian dart::dynamics::Skeleton::getJacobian ( const JacobianNode _node) const
overridevirtual

Get the spatial Jacobian targeting the origin of a BodyNode.

The Jacobian is expressed in the Frame of the BodyNode.

Implements dart::dynamics::MetaSkeleton.

§ getJacobian() [2/4]

math::Jacobian dart::dynamics::Skeleton::getJacobian ( const JacobianNode _node,
const Frame _inCoordinatesOf 
) const
overridevirtual

Get the spatial Jacobian targeting the origin of a BodyNode.

You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getJacobian() [3/4]

math::Jacobian dart::dynamics::Skeleton::getJacobian ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset 
) const
overridevirtual

Get the spatial Jacobian targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. The Jacobian is expressed in the Frame of the BodyNode.

Implements dart::dynamics::MetaSkeleton.

§ getJacobian() [4/4]

math::Jacobian dart::dynamics::Skeleton::getJacobian ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset,
const Frame _inCoordinatesOf 
) const
overridevirtual

Get the spatial Jacobian targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianClassicDeriv() [1/3]

math::Jacobian dart::dynamics::Skeleton::getJacobianClassicDeriv ( const JacobianNode _node) const
overridevirtual

Get the spatial Jacobian (classical) time derivative targeting the origin of a BodyNode.

The Jacobian is expressed in the World Frame.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianClassicDeriv() [2/3]

math::Jacobian dart::dynamics::Skeleton::getJacobianClassicDeriv ( const JacobianNode _node,
const Frame _inCoordinatesOf 
) const
overridevirtual

Get the spatial Jacobian (classical) time derivative targeting the origin a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianClassicDeriv() [3/3]

math::Jacobian dart::dynamics::Skeleton::getJacobianClassicDeriv ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

Get the spatial Jacobian (classical) time derivative targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianSpatialDeriv() [1/4]

math::Jacobian dart::dynamics::Skeleton::getJacobianSpatialDeriv ( const JacobianNode _node) const
overridevirtual

Get the spatial Jacobian time derivative targeting the origin of a BodyNode.

The Jacobian is expressed in the Frame of the BodyNode.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianSpatialDeriv() [2/4]

math::Jacobian dart::dynamics::Skeleton::getJacobianSpatialDeriv ( const JacobianNode _node,
const Frame _inCoordinatesOf 
) const
overridevirtual

Get the spatial Jacobian time derivative targeting the origin of a BodyNode.

You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianSpatialDeriv() [3/4]

math::Jacobian dart::dynamics::Skeleton::getJacobianSpatialDeriv ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset 
) const
overridevirtual

Get the spatial Jacobian time derivative targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. The Jacobian is expressed in the Frame of the BodyNode.

Implements dart::dynamics::MetaSkeleton.

§ getJacobianSpatialDeriv() [4/4]

math::Jacobian dart::dynamics::Skeleton::getJacobianSpatialDeriv ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset,
const Frame _inCoordinatesOf 
) const
overridevirtual

Get the spatial Jacobian time derivative targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getJoint() [1/2]

Joint * dart::dynamics::Skeleton::getJoint ( const std::string &  name)
overridevirtual

Returns the Joint of given name.

Parameters
[in]nameThe joint name that want to search.
Returns
The joint of given name.

Implements dart::dynamics::MetaSkeleton.

§ getJoint() [2/2]

const Joint * dart::dynamics::Skeleton::getJoint ( const std::string &  name) const
overridevirtual

Returns the joint of given name.

Parameters
[in]nameThe joint name that want to search.
Returns
The joint of given name.

Implements dart::dynamics::MetaSkeleton.

§ getJoints() [1/2]

std::vector< Joint * > dart::dynamics::Skeleton::getJoints ( const std::string &  name)
overridevirtual

Returns all the Joint of given name.

This MetaSkeleton can contain multiple Joints with the same name when this MetaSkeleton contains Joints from multiple Skeletons.

Parameters
[in]nameThe joint name that want to search.
Returns
The list of joints of given name.
Note
Skeleton always guarantees name uniqueness for BodyNodes and Joints. So this function returns the single Joint of the given name if it exists.

Implements dart::dynamics::MetaSkeleton.

§ getJoints() [2/2]

std::vector< const Joint * > dart::dynamics::Skeleton::getJoints ( const std::string &  name) const
overridevirtual

Returns all the Joint of given name.

This MetaSkeleton can contain multiple Joints with the same name when this MetaSkeleton contains Joints from multiple Skeletons.

Parameters
[in]nameThe joint name that want to search.
Returns
The list of joints of given name.
Note
Skeleton always guarantees name uniqueness for BodyNodes and Joints. So this function returns the single Joint of the given name if it exists.

Implements dart::dynamics::MetaSkeleton.

§ getLinearJacobian() [1/2]

math::LinearJacobian dart::dynamics::Skeleton::getLinearJacobian ( const JacobianNode _node,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

Get the linear Jacobian targeting the origin of a BodyNode.

You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getLinearJacobian() [2/2]

math::LinearJacobian dart::dynamics::Skeleton::getLinearJacobian ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

Get the linear Jacobian targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getLinearJacobianDeriv() [1/2]

math::LinearJacobian dart::dynamics::Skeleton::getLinearJacobianDeriv ( const JacobianNode _node,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

of a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getLinearJacobianDeriv() [2/2]

math::LinearJacobian dart::dynamics::Skeleton::getLinearJacobianDeriv ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset,
const Frame _inCoordinatesOf = Frame::World() 
) const
overridevirtual

Get the linear Jacobian (classical) time derivative targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. You can specify a coordinate Frame to express the Jacobian in.

Implements dart::dynamics::MetaSkeleton.

§ getMass()

double dart::dynamics::Skeleton::getMass ( ) const
overridevirtual

Get total mass of the skeleton.

The total mass is calculated as BodyNodes are added and is updated as BodyNode mass is changed, so this is a constant-time O(1) operation for the Skeleton class.

Implements dart::dynamics::MetaSkeleton.

§ getOrCreateIK()

const std::shared_ptr< WholeBodyIK > & dart::dynamics::Skeleton::getOrCreateIK ( )

Get a pointer to a WholeBodyIK module for this Skeleton.

The IK module will be generated if one does not already exist. This function is actually the same as getIK(true).

§ getPositionDifferences()

Eigen::VectorXd dart::dynamics::Skeleton::getPositionDifferences ( const Eigen::VectorXd &  _q2,
const Eigen::VectorXd &  _q1 
) const

Return the difference of two generalized positions which are measured in the configuration space of this Skeleton.

If the configuration space is Euclidean space, this function returns _q2 - _q1. Otherwise, it depends on the type of the configuration space.

§ getSkeleton() [1/2]

SkeletonPtr dart::dynamics::Skeleton::getSkeleton ( )

Same as getPtr(), but this allows Skeleton to have a similar interface as BodyNode and Joint for template programming.

§ getSkeleton() [2/2]

ConstSkeletonPtr dart::dynamics::Skeleton::getSkeleton ( ) const

Same as getPtr(), but this allows Skeleton to have a similar interface as BodyNode and Joint for template programming.

§ getSupportAxes()

const std::pair< Eigen::Vector3d, Eigen::Vector3d > & dart::dynamics::Skeleton::getSupportAxes ( ) const

Get the axes that correspond to each component in the support polygon.

These axes are needed in order to map the points on a support polygon into 3D space. If gravity is along the z-direction, then these axes will simply be <1,0,0> and <0,1,0>.

§ getSupportCentroid() [1/2]

const Eigen::Vector2d & dart::dynamics::Skeleton::getSupportCentroid ( ) const

Get the centroid of the support polygon for this Skeleton.

If the support polygon is an empty set, the components of this vector will be nan.

§ getSupportCentroid() [2/2]

const Eigen::Vector2d & dart::dynamics::Skeleton::getSupportCentroid ( std::size_t  _treeIdx) const

Get the centroid of the support polygon for a tree in this Skeleton.

If the support polygon is an empty set, the components of this vector will be nan.

§ getSupportIndices()

const std::vector< std::size_t > & dart::dynamics::Skeleton::getSupportIndices ( ) const

Get a list of the EndEffector indices that correspond to each of the points in the support polygon.

§ getSupportPolygon()

const math::SupportPolygon & dart::dynamics::Skeleton::getSupportPolygon ( ) const

Get the support polygon of this Skeleton, which is computed based on the gravitational projection of the support geometries of all EndEffectors in this Skeleton that are currently in support mode.

§ getSupportVersion()

std::size_t dart::dynamics::Skeleton::getSupportVersion ( ) const

The version number of a support polygon will be incremented each time the support polygon needs to be recomputed.

This number can be used to immediately determine whether the support polygon has changed since the last time you asked for it, allowing you to be more efficient in how you handle the data.

§ getVelocityDifferences()

Eigen::VectorXd dart::dynamics::Skeleton::getVelocityDifferences ( const Eigen::VectorXd &  _dq2,
const Eigen::VectorXd &  _dq1 
) const

Return the difference of two generalized velocities or accelerations which are measured in the tangent space at the identity.

Since the tangent spaces are vector spaces, this function always returns _dq2 - _dq1.

§ getWorldJacobian() [1/2]

math::Jacobian dart::dynamics::Skeleton::getWorldJacobian ( const JacobianNode _node) const
overridevirtual

Get the spatial Jacobian targeting the origin of a BodyNode.

The Jacobian is expressed in the World Frame.

Implements dart::dynamics::MetaSkeleton.

§ getWorldJacobian() [2/2]

math::Jacobian dart::dynamics::Skeleton::getWorldJacobian ( const JacobianNode _node,
const Eigen::Vector3d &  _localOffset 
) const
overridevirtual

Get the spatial Jacobian targeting an offset in a BodyNode.

The _offset is expected in coordinates of the BodyNode Frame. The Jacobian is expressed in the World Frame.

Implements dart::dynamics::MetaSkeleton.

§ isMobile()

bool dart::dynamics::Skeleton::isMobile ( ) const

Get whether this skeleton will be updated by forward dynamics.

Returns
True if this skeleton is mobile.

§ moveBodyNodeTree()

template<class JointType >
JointType * dart::dynamics::Skeleton::moveBodyNodeTree ( BodyNode _bodyNode,
const SkeletonPtr &  _newSkeleton,
BodyNode _parentNode,
const typename JointType::Properties &  _joint 
)
protected

Move a subtree of BodyNodes from this Skeleton to another Skeleton while changing the Joint type of the top parent Joint.

Returns a nullptr if the move failed for any reason.

§ setAdjacentBodyCheck()

void dart::dynamics::Skeleton::setAdjacentBodyCheck ( bool  enable)

Set whether to check adjacent bodies.

This option is effective only when the self-collision check is enabled.

§ setGravity()

void dart::dynamics::Skeleton::setGravity ( const Eigen::Vector3d &  _gravity)

Set 3-dim gravitational acceleration.

The gravity is used for calculating gravity force vector of the skeleton.

§ setImpulseApplied()

void dart::dynamics::Skeleton::setImpulseApplied ( bool  _val)

Set whether this skeleton is constrained.

ConstraintSolver will mark this.

§ setMobile()

void dart::dynamics::Skeleton::setMobile ( bool  _isMobile)

Set whether this skeleton will be updated by forward dynamics.

Parameters
[in]_isMobileTrue if this skeleton is mobile.

§ setTimeStep()

void dart::dynamics::Skeleton::setTimeStep ( double  _timeStep)

Set time step.

This timestep is used for implicit joint damping force.

§ updateBiasImpulse() [1/2]

void dart::dynamics::Skeleton::updateBiasImpulse ( BodyNode _bodyNode,
const Eigen::Vector6d &  _imp 
)

Update bias impulses due to impulse [_imp] on body node [_bodyNode].

Parameters
_bodyNodeBody node contraint impulse, _imp, is applied
_impConstraint impulse expressed in body frame of _bodyNode

§ updateBiasImpulse() [2/2]

void dart::dynamics::Skeleton::updateBiasImpulse ( BodyNode _bodyNode1,
const Eigen::Vector6d &  _imp1,
BodyNode _bodyNode2,
const Eigen::Vector6d &  _imp2 
)

Update bias impulses due to impulse [_imp] on body node [_bodyNode].

Parameters
_bodyNode1Body node contraint impulse, _imp1, is applied
_imp1Constraint impulse expressed in body frame of _bodyNode1
_bodyNode2Body node contraint impulse, _imp2, is applied
_imp2Constraint impulse expressed in body frame of _bodyNode2

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