Actin  Version 5.5.5 Software for Robotics Simulation and Control

Holds a description of a manipulator link. More...

#include <ecManipulatorLink.h>

[legend]
[legend]

## Public Member Functions

default constructor

destructor

copy constructor

assignment operator

assignment operator, except the child links

EcBoolean operator== (const EcManipulatorLink &orig) const
equality operator

EcBoolean equalForReferencing (const EcManipulatorLink &orig) const
equality operator for referencing

virtual EcBoolean xmlInit () EC_OVERRIDE
initialize XML components for reading and writing

virtual EcXmlObjectclone () const EC_OVERRIDE
clone - a virtual constructor to an EcXmlObject pointer

virtual void registerComponents () EC_OVERRIDE
register components with the parent

virtual EcBoolean equality (const EcXmlObject *other) const EC_OVERRIDE
equality - virtual equality to an EcXmlObject pointer

virtual EcXmlObjectnewObject () const EC_OVERRIDE
virtual new that returns an EcXmlObject

gets an identifying label

virtual void setLinkLabel (const EcString &label)
sets an identifying label

virtual void appendToAllLabels (const EcString &appendage)
appends a string to all labels of all links including child links. More...

virtual EcBoolean setSurfacesByShapeID (const EcU32 &shapeID, const EcStringDataMapMap &surfaces)
set shape surface properties by the shape ID.

virtual EcBoolean setSurfaces (const EcString &linkName, const EcU32 &shapeID, const EcStringDataMapMap &surfaces)

virtual EcBoolean setShapeSurfaceProperty (const EcString &linkName, const EcU32 &shapeID, const EcString &surfaceProperty)
set shape surface property string if the name matched,

virtual EcBoolean setShapeIdentifier (const EcString &linkName, const EcU32 &shapeID, const EcString &identifier)
set shape identifier string if the name matched,

gets Denavit-Hartenberg parameters

sets Denavit-Hartenberg parameters

sets the top element of the link kinematics container

gets the child links – nonconst

Adds a link by copy to the end of the first chain rooted at this link. More...

virtual const EcBasePhysicalExtentphysicalExtent () const
gets the physical extent

virtual const EcCapsulecapsuleBoundingVolume () const
gets the capsule bounding volume

virtual const EcShapeContainershapeContainer () const
get the shape container (this may or may not be referenced)

virtual const EcShapeContainermemberShapeContainer () const
get the member-variable shape container

virtual void setShapeContainer (const EcShapeContainer &shapeContainer)
set the shape container

virtual void setShape (const EcShape &shape)
sets the shape

virtual void setFromShape (const EcShape &shape, const EcReal mass=1.5)
set all properties from a shape

virtual void setFromShapeContainer (const EcShapeContainer &shapeContainer)
set all properties from a shape container

virtual const EcCoordinateSystemTransformationprimaryFrame () const
gets the primary frame in local coordinates

virtual void setPrimaryFrame (const EcCoordinateSystemTransformation &primaryFrame)
sets the primary frame More...

virtual const EcJointActuatorjointActuator () const
gets the joint actuator

virtual void setJointActuator (const EcJointActuator &jointActuator)
sets the joint actuator

virtual void truncateValues (const EcReal &precision=1e-10)
truncate values in the physical extents to the precision specified.

virtual const EcRigidBodyMassPropertiesmassProperties (const EcStatedSystemStruct *statedSystemStruct=0) const
gets mass properties expressed in primary frame. This is the base mass properties combined with the mass properties in the map, which is the total mass properties of this link. More...

virtual void setMassProperties (const EcRigidBodyMassProperties &massProperties)

virtual const EcRigidBodyMassPropertiesbaseMassProperties () const
gets the base mass properties expressed in primary frame

virtual void setBaseMassProperties (const EcRigidBodyMassProperties &massProperties)
sets the base mass properties expressed in primary frame

virtual const EcRigidBodyMassPropertiesMapmassPropertiesMap () const
gets the map of mass properties. The map contains mass properties in addition to the base mass properties.

virtual void setMassPropertiesMap (const EcRigidBodyMassPropertiesMap &massPropMap)
sets the map of mass properties

virtual void clearMassPropertiesMap ()
clear all the mass properties in the map

virtual void addMassProperties (const EcString &identifier, const EcRigidBodyMassProperties &massProperties)
add mass properties expressed in primary frame and identified by identifier. This will change the total mass properties of the link.

virtual EcBoolean deleteMassProperties (const EcString &identifier)

virtual const EcSpringPropertiesspringProperties () const
get functions for String properties

virtual void setSpringProperties (const EcSpringProperties &springProperties)
set functions for String properties

virtual const EcDamperPropertiesdamperProperties () const
get functions for damper properties

virtual void setDamperProperties (const EcDamperProperties &damperProperties)
set functions for damper properties

virtual EcReal totalLocalTorque (EcManipulatorActiveState &activeState) const
calculate total joint torque from spring + damper

virtual const EcRigidBodyMassPropertiesmassPropertiesInDHFrame (const EcStatedSystemStruct *statedSystemStruct=0) const
gets the mass properties expressed in the D-H frame More...

virtual void transformComponentsBy (const EcCoordinateSystemTransformation xform)

virtual void setLinkIndex (const EcU32 index)

virtual EcReal lookupCollisionAvoidanceMetric () const
get the collision avoidance metric for this link

map this and all child links

virtual EcCoordinateSystemTransformation dhFrameInSystem (const EcPositionState &posState) const

virtual const EcCoordinateSystemTransformationdhFrameInSystem (EcManipulatorActivePositionState &actPosState) const

virtual EcCoordinateSystemTransformation primaryFrameInSystem (const EcPositionState &posState) const

virtual const EcCoordinateSystemTransformationprimaryFrameInSystem (EcManipulatorActivePositionState &actPosState) const

virtual EcGeneralVelocity dhFrameVelocityInSystem (const EcManipulatorState &manipState) const

virtual const EcGeneralVelocitydhFrameVelocityInSystem (EcManipulatorActiveState &actState) const

virtual EcGeneralVelocity dhFrameVelocityInLocal (const EcManipulatorState &manipState) const

virtual const EcGeneralVelocitydhFrameVelocityInLocal (EcManipulatorActiveState &actState) const

virtual EcGeneralVelocity primaryFrameVelocityInSystem (const EcManipulatorState &manipState) const

virtual const EcGeneralVelocityprimaryFrameVelocityInSystem (EcManipulatorActiveState &actState) const

virtual EcGeneralAcceleration dhFrameAccelerationInLocal (const EcManipulatorState &manipState) const

virtual const EcGeneralAccelerationdhFrameAccelerationInLocal (EcManipulatorActiveState &actState) const

virtual EcGeneralAcceleration primaryFrameAccelerationInSystem (const EcManipulatorState &manipState) const

virtual const EcGeneralAccelerationprimaryFrameAccelerationInSystem (EcManipulatorActiveState &actState) const

virtual const EcGeneralForcedhFrameForceInLocal (const EcManipulatorExternalForce &manipExtForce, EcManipulatorActiveState &actState, const EcStatedSystemStruct *statedSystemStruct=0) const

virtual const EcRigidBodyMassPropertiescrbi (EcManipulatorActiveState &actState, const EcStatedSystemStruct *statedSystemStruct=0) const

virtual const EcArticulatedBodyDynamicsarbd (const EcManipulatorExternalForce &manipExtForce, const EcManipulatorTorque &manipTorque, EcManipulatorActiveState &actState, const EcStatedSystemStruct *statedSystemStruct=0) const

virtual void addArbdToParent (EcArticulatedBodyDynamics &parentArbd, const EcManipulatorExternalForce &manipExtForce, const EcManipulatorTorque &manipTorque, EcManipulatorActiveState &actState, const EcStatedSystemStruct *statedSystemStruct=0) const

virtual const EcGeneralAccelerationarbiSupplementalDhFrameAccelerationInLocal (const EcManipulatorExternalForce &manipExtForce, const EcManipulatorTorque &manipTorque, EcManipulatorActiveState &actState, const EcStatedSystemStruct *statedSystemStruct=0) const

virtual EcReal arbiJointAcceleration (const EcManipulatorExternalForce &manipExtForce, const EcManipulatorTorque &manipTorque, EcManipulatorActiveState &actState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the joint acceleration for this link calculated using the arbi algorithm More...

virtual void optimizeForRendering ()
reorganize this link for optimial rendering (only needs to be done once)

virtual EcBoolean lookup (const EcString &key, const EcDataMap *&property) const

virtual void recursiveOptimizeForRendering ()
reorganize this and all child links for optimal rendering

virtual const EcIndividualManipulatormanipulator () const
Returns the pointer to the manipulator that contains this link.

virtual void setManipulatorPointer (const EcIndividualManipulator *pManip)
Sets the pointer to the individual manipulator that contains this link.

virtual EcReal upperBoundExtentDistance () const

virtual EcReal upperBoundSubmanipulatorExtentDistance () const

virtual void axisAlignedBoundingBoxVectorInSystem (EcManipulatorActivePositionState &state, EcAxisAlignedBoundingBoxVector &aabbVec, EcU32Vector &shapeIDVec) const

virtual void relabelSubtree (const EcString &label, EcU32 &index)
relabel a subtree based on the root label passed in

virtual void deleteBoundingVolumes ()
delete all the bounding volumes in the bvh hierarchy

virtual EcInt32 numberOfShapes () const
returns the number of shapes associates with this link

virtual const EcShapeshapeByIndex (const EcU32 &index) const
get the shape by the index passed in

virtual const EcShapeshapeByIdentifier (const EcString &name) const
get a shape by string identifier

virtual EcBoolean mapShapes ()
set the index for each shape associated with this link

virtual void setNumShapes (const EcU32 &nShapes)
set the total number of shapes used to represent this link

virtual const EcU32numShapes () const
get the total number of shapes used to represent this link

virtual EcU32 numShapesInPhysicalRepresentation () const

virtual void scaleBy (EcReal scaleFactor)

virtual EcBoolean transformLinkTreeBy (const EcCoordinateSystemTransformation &xform)

virtual EcBoolean transformPrimaryFrame (const EcCoordinateSystemTransformation &xform)

virtual void intersectLineSegment (const EcLineSegment &lineSegment, EcLinkPointEvent &pointEvent, EcManipulatorActiveState *pActState, EcU32 levelOfDetail=0) const

change this link and the subtree to use references where possible

virtual void estimateMassProperties ()

virtual const EcTokentoken () const EC_OVERRIDE
gets the xml token used for writing out. More...

read this object from an XML stream

virtual EcBoolean write (EcXmlWriter &stream) const EC_OVERRIDE
write this object to an XML stream

virtual const EcShapegetNthNonBoundingShape (const EcU32 n) const
get the nth none-bounding shape of this link.

virtual void boundingVolumes (EcShapeConstPointerVector &boundingShapes, const EcU32 &bvhLevel=1) const
get all bounding volumes

virtual void deleteAllBoundingVolumes ()
delete all bounding volumes from the

virtual EcBoolean setJointLimit (const EcString &linkLabel, EcBoolean isLowerLimit, EcReal value)
set the new value for a joint limit More...

add a bounding volume to the shape in the shape container

copy the properties (link kinematics, mass properties, joint actuator, shape container, etc.) of this link to another link. This does not copy the child links. This should be used along with replaceLinkProperties method to efficiently modify some link properties of some link in the manipulator chain. More...

EcBoolean replaceJointActuator (const EcString &linkLabel, const EcJointActuator &jointActuator)

virtual EcBoolean setSurfaceProperties (const EcString &key, const EcDataMap &properties)
set the properties of the surface identified by key for all the shapes in this link. More...

virtual const EcLineSegmentforceVectorInLocal (const EcManipulatorActiveState &activeState) const
get the link's force vector resulting from impact forces

virtual const EcGeneralVelocitycomVelocityInLocal (EcManipulatorActiveState &activeState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the link's center of mass velocity represented in the local frame More...

virtual const EcGeneralAccelerationcomAccelerationInLocal (EcManipulatorActiveState &activeState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the link's center of mass acceleration represented in the local frame More...

virtual const EcGeneralMotionspatialMomentumInLocal (EcManipulatorActiveState &activeState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the spatial momentum at the center of mass of this link represented in the link's D-H frame. More...

virtual const EcGeneralMotioncompositeSpatialMomentumInLocal (EcManipulatorActiveState &activeState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the composite spatial momentum of this link and its outboard links represented in the link's D-H frame. More...

virtual const EcGeneralMotionspatialMomentumRateInLocal (EcManipulatorActiveState &activeState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the rate of spatial momentum at the center of mass of this link represented in the link's D-H frame. More...

virtual const EcGeneralMotioncompositeSpatialMomentumRateInLocal (EcManipulatorActiveState &activeState, const EcStatedSystemStruct *statedSystemStruct=0) const
compute and return the composite rate of spatial momentum of this link and its outboard links represented in the link's D-H frame. More...

virtual EcBoolean computeMomentFromLinearAcceleration (const EcVector &point, EcManipulatorActiveState &activeState, EcVector &moment, const EcStatedSystemStruct *statedSystemStruct=0) const
compute the moment around a point due to linear acceleration of this link and its outboard links

virtual const EcStateConstraintContainerupperLimitConstraintContainer () const
returns the upper limit constraint container for this link

virtual const EcBaseStateConstraintupperLimitConstraint () const
returns the upper limit constraint for this link More...

virtual void setUpperLimitConstraint (const EcBaseStateConstraint &value)
sets the upper limit constraint for this link

virtual const EcStateConstraintContainerlowerLimitConstraintContainer () const
returns the lower limit constraint container for this link

virtual const EcBaseStateConstraintlowerLimitConstraint () const
returns the lower limit constraint for this link More...

virtual void setLowerLimitConstraint (const EcBaseStateConstraint &value)
sets the lower limit constraint for this link

virtual const EcNamedPointsnamedPoints () const
returns the map of named points

virtual void setNamedPoints (const EcNamedPoints &value)
sets the map of named points

virtual EcBoolean lookupNamedPoint (const EcString &key, EcVector &point) const
returns a point

virtual void addNamedPoint (const EcString &key, const EcVector &point)
adds a point to the map

virtual const EcNamedFramesnamedFrames () const
returns the map of named frames

virtual void setNamedFrames (const EcNamedFrames &value)
sets the map of named frames

virtual EcBoolean lookupNamedFrame (const EcString &key, EcCoordinateSystemTransformation &frame) const
returns a frame

virtual EcBoolean addNamedFrame (const EcString &key, const EcCoordinateSystemTransformation &frame)
adds a frame to the map

virtual EcBoolean isConstrained () const
returns whether this link is constrained

virtual void setIsConstrained (EcBoolean value)
sets whether this link is constrained

virtual EcBoolean popLinkFromUnion (const EcString &label, EcIndividualManipulator &manip, EcCoordinateSystemTransformation &offset)
pop a link from the union

virtual void manipulatorLabelsInUnion (EcStringSet &labels) const
labels in the union

virtual EcBoolean addSensor (const EcBaseSensor *sensorPtr)

virtual const EcSensorVectorsensorVector () const
get sensor vector

virtual void setSensorVector (const EcSensorVector &sensorVec)
set sensor vector

virtual void unreferenceShapes ()

virtual void removePhysicalExtentRedundancy (const EcReal eps=0.0)

virtual EcSensorVectorsensorVector ()

Public Member Functions inherited from EcXmlCompoundType
ECDECLARE_BIGFOUR (EcXmlCompoundType)

read object attributes from an XML stream

read object elements from an XML stream

virtual EcBoolean writeAttributes (EcXmlWriter &stream) const
write object attributes to an XML stream

virtual EcBoolean writeElements (EcXmlWriter &stream) const
write object elements to an XML stream

virtual EcBoolean writeSchema (EcXmlSchema &stream) const EC_OVERRIDE
write schema

virtual EcBoolean writeSchemaAttributes (EcXmlSchema &stream) const
write schema attributes

virtual EcBoolean writeSchemaElements (EcXmlSchema &stream) const
write schema elements

virtual void registerComponent (const EcToken &token, EcXmlObject *obj)
register a single component More...

virtual void registerComponent (EcXmlObject *obj)
register a single component More...

virtual void registerComponentReadOnly (const EcToken &token, EcXmlObject *obj)
register a single component as read-only More...

virtual const EcXmlComponentMapcomponentMap () const
get a reference to the component map

virtual void registerAttributeComponent (const EcToken &AttribToken, EcXmlObject *Obj)
register a single attribute component More...

virtual void registerAttributeComponentReadOnly (const EcToken &AttribToken, EcXmlObject *Obj)
register a single attribute component read-only More...

virtual const EcXmlComponentMapattributeComponentMap ()
get a reference to the component attribute map

virtual const EcXmlSpecialDescriptorMapspecialDescriptorMap ()
get a reference to the special-descriptor map

virtual void registerComponentDescriptor (const EcToken &xmlToken, const EcToken &descriptorToken, const EcString &descriptorString)
register an XML token-string descriptor More...

virtual const EcXmlTokenStringDescriptorMapMaptokenStringDescriptorMap ()
get a reference to the XML token-string descriptor map

virtual EcBoolean hasChildren () const
return EcTrue if there are children components or EcFalse if an empty element.

virtual EcBoolean hasAttributes () const
return EcTrue if there are attributes in the element.

Public Member Functions inherited from EcXmlObject
ECDECLARE_BIGFOUR (EcXmlObject)

read this attribute from an XML stream

virtual EcBoolean createSchema (const EcString &filename, const EcToken &objectName=EcXml::EcDefaultToken) const
create schema

virtual EcBoolean xmlInitialized () const
get XML initialized flag. This bit is set on initialization.

virtual void setXmlInitialized (EcBoolean val=EcTrue)
set XML initialized flag. This bit is set on initialization.

virtual EcBoolean specified () const
get specified flag. This bit is set upon reading from an XML file.

virtual void setSpecified (EcBoolean val=EcTrue)
set specified flag. This bit is set upon reading from an XML file.

virtual EcBoolean isBasicType () const
Return true/false for basic type.

virtual EcBoolean equalsDefault () const
tests equality of XML object with default

## Static Public Attributes

static const EcU32 BASEINDEX
Copy of enumerations from foundCommon for backwards compatibility.

static const EcU32 VOIDINDEX

## Protected Types

typedef std::vector< std::pair< EcIndividualManipulator, EcCoordinateSystemTransformation > > EcManipulatorLinkInUnion
type definition of the manipulator link in union

## Protected Member Functions

virtual void registerComponentsForBase ()
register components with the parent for the base link

virtual void updateDefaultLimitConstraints ()
updates the default upper and lower limit constraints

virtual void updateMassProperties ()
recalculate the mass properties

virtual void updateDHMassProperties ()
recalculate the mass properties expressed in the D-H frame

virtual EcShapefindShape (const EcString &linkName, const EcU32 &shapeID)
return a pointer to the shape

Protected Member Functions inherited from EcXmlCompoundType

virtual EcXmlComponentMapnewComponentMap () const
allocate a new componentMap

virtual EcXmlSpecialDescriptorMapnewSpecialDescriptorMap ()
allocate a new specialDescriptorsMap

virtual EcXmlTokenStringDescriptorMapMapnewTokenStringDescriptorMap ()
allocate a new tokenStringDescriptorsMap

virtual void createComponentMap () const
create component map

virtual void createAttributeComponentMap ()
create attribute component map

virtual void createSpecialDescriptorMap ()
create special-descriptors map

virtual void createTokenStringDescriptorMap ()
create token-string descriptor map

virtual EcBoolean isReadOnlyComponent (const EcToken token) const
check to see if the token corresponds to a read-only component

virtual EcBoolean isReadOnlyAttribute (const EcToken token) const
check to see if the token corresponds to a read-only attribute

virtual EcXmlObjectlibraryAttribute ()

## Static Protected Member Functions

static const EcArticulatedBodyDynamicstheDummyArbd ()
gets the dummy Arbd

## Protected Attributes

the identifying label

the general joint set for the link

EcShapeContainer m_ShapeContainer
the physical extent of the link

EcJointActuator m_JointActuator

EcOldJointActuator m_OldJointActuator
the actuator for the link – deprecated

EcJointActuatorContainer m_JointActuatorContainer
the actuator for the link – deprecated

EcRigidBodyMassProperties m_MassProperties
the rigid-body mass properties of the link

EcSpringProperties m_SpringProperties

EcDamperProperties m_DamperProperties

a reference information for this link

EcStateConstraintContainer m_UpperLimitConstraintContainer
container for the upper limit constraint

EcStateConstraintContainer m_LowerLimitConstraintContainer
container for the lower limit constraint

EcNamedPoints m_NamedPoints
Named points.

EcNamedFrames m_NamedFrames
Named frames.

EcXmlBoolean m_IsConstrained
Constrained tag.

EcRigidBodyMassPropertiesMap m_MassPropertiesMap

EcSensorVector m_SensorVector
The vector of sensors attached to this link.

a vector of manipulators in the union – used for manipulator combination

a pointer to the parent link in the tree

EcRigidBodyMassProperties m_TotalMassProperties
the total mass properties of the link (combining the base one with all the ones in the map)

EcRigidBodyMassProperties m_TotalMassPropertiesInDHFrame
the rigid-body mass properties of the link expressed in the D-H frame

EcU32 m_NumberOfShapes
number of shapes used to represent this link

EcShapeConstPointerMap m_ShapePointerMap
map of shape pointers for this link

EcShapePointerVector m_ShapePointerVec
linear vector of shape pointers for this link

EcMultivariableJointStateConstraint m_DefaultUpperLimitConstraint
the default upper limit constraint

EcMultivariableJointStateConstraint m_DefaultLowerLimitConstraint
the default lower limit constraint

const EcIndividualManipulatorm_pManipulator
a pointer to the individual manipulator that contains this link

a pointer to a reference link

EcRigidBodyMassProperties m_CombinedMassProperties
the combined mass properties (combined with mass properties of link attached to this, if any)

EcCoordinateSystemTransformationVector m_Offsets
offset transformations

EcU32Vector m_DependentManipulators
dependent manipulators

Protected Attributes inherited from EcXmlCompoundType
EcXmlComponentMapm_pComponentMap

EcXmlComponentMapm_pAttributeComponentMap

EcXmlSpecialDescriptorMapm_pSpecialDescriptorMap

EcXmlTokenStringDescriptorMapMapm_pComponentMapTokenStringDescriptor

Protected Attributes inherited from EcXmlObject
EcU8 m_State
the state of the object - eight boolean flags

## Static Protected Attributes

static const EcCoordinateSystemTransformation m_theDummyTransformation
a dummy transformation

static const EcGeneralVelocity m_theDummyGeneralVelocity
a dummy general velocity

static const EcGeneralAcceleration m_theDummyGeneralAcceleration
a dummy general acceleration

static const EcGeneralForce m_theDummyGeneralForce
a dummy general force

static const EcRigidBodyMassProperties m_theDummyCrbi
a dummy composite rigid-body inertia

static const EcArticulatedBodyDynamics m_theDummyArbd
a dummy articulated rigid-body dynamics

static const EcCapsule m_theDummyCapsuleBoundingVolume
a dummy capsule bounding volume

static const EcGeneralMotion m_theDummySpatialMomentum
a dummy spatial momentum

static const EcGeneralMotion m_theDummySpatialMomentumRate
a dummy spatial momentum rate

static const EcReal m_theDefaultCollisionAvoidanceMetric
the default collision avoidance metric

Static Protected Attributes inherited from EcXmlObject
static const EcU8 m_theXmlInitializedBit
the bit used to describe xml initialization

static const EcU8 m_theSpecifiedBit
the bit used to describe specification

Public Types inherited from EcXmlCompoundType
enum  {
}
special-descriptor codes More...

## Detailed Description

Holds a description of a manipulator link.

A Class describing a robotic manipulator link. This includes a list of child links, a string identifier, a Denavit-Hartenberg set, the physical extent, an actuator description, and mass properties.

This description includes the physical extent and geometry of the link. Each link can have any number of child links, so a link is in general the root of a tree.

Examples:
ecProgrammaticConstructionMain.cpp.

Definition at line 78 of file ecManipulatorLink.h.

## Member Function Documentation

 virtual void EcManipulatorLink::addArbdToParent ( EcArticulatedBodyDynamics & parentArbd, const EcManipulatorExternalForce & manipExtForce, const EcManipulatorTorque & manipTorque, EcManipulatorActiveState & actState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

Parameters
 parentArbd The articulated-body dynamics of the parent's link manipExtForce The external force manipTorque The manipulator torque actState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
virtual

Parameters

Reimplemented in EcIndividualManipulator.

virtual

Parameters
Returns

Reimplemented in EcIndividualManipulator.

virtual

Parameters

Reimplemented in EcIndividualManipulator.

 virtual void EcManipulatorLink::appendToAllLabels ( const EcString & appendage )
virtual

appends a string to all labels of all links including child links.

Parameters
 [in] appendage A string to append.
 virtual const EcArticulatedBodyDynamics& EcManipulatorLink::arbd ( const EcManipulatorExternalForce & manipExtForce, const EcManipulatorTorque & manipTorque, EcManipulatorActiveState & actState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the articulated-body dynamics (articulated-body inertia and bias force) for this link represented in the link's D-H frame.

Parameters
 manipExtForce The external force manipTorque The manipulator torque actState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the articulated-body dynamics for this link represented in the link's D-H frame

Reimplemented in EcIndividualManipulator.

 virtual EcReal EcManipulatorLink::arbiJointAcceleration ( const EcManipulatorExternalForce & manipExtForce, const EcManipulatorTorque & manipTorque, EcManipulatorActiveState & actState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the joint acceleration for this link calculated using the arbi algorithm

Parameters
 manipExtForce The external force manipTorque The manipulator torque actState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the joint acceleration for this link
 virtual const EcGeneralAcceleration& EcManipulatorLink::arbiSupplementalDhFrameAccelerationInLocal ( const EcManipulatorExternalForce & manipExtForce, const EcManipulatorTorque & manipTorque, EcManipulatorActiveState & actState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

get the supplemental D-H frame acceleration represented in the local frame. this supplemental acceleration is the acceleration produced only by the base acceleration (if it exists) and joint accelerations.

Parameters
 manipExtForce The external force manipTorque The manipulator torque actState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the supplemental D-H frame acceleration represented in the local frame.

Reimplemented in EcIndividualManipulator.

 virtual void EcManipulatorLink::axisAlignedBoundingBoxVectorInSystem ( EcManipulatorActivePositionState & state, EcAxisAlignedBoundingBoxVector & aabbVec, EcU32Vector & shapeIDVec ) const
virtual

compute and return the vector of bounding boxes describing the shape (or shapes) the represent this link. This will always return one AABB unless the shape that defines the link is a union node, in which case it will return one AABB for each leaf node in the tree of unions.

virtual

Parameters
Examples:
ecCollisionAvoidanceExample.cpp, and ecProgrammaticConstructionMain.cpp.
 virtual const EcGeneralAcceleration& EcManipulatorLink::comAccelerationInLocal ( EcManipulatorActiveState & activeState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the link's center of mass acceleration represented in the local frame

Parameters
 activeState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the link's center of mass acceleration represented in the local frame
 virtual const EcGeneralMotion& EcManipulatorLink::compositeSpatialMomentumInLocal ( EcManipulatorActiveState & activeState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the composite spatial momentum of this link and its outboard links represented in the link's D-H frame.

Parameters
 activeState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the composite spatial momentum of this link and its outboard links represented in the link's D-H frame.

Reimplemented in EcIndividualManipulator.

 virtual const EcGeneralMotion& EcManipulatorLink::compositeSpatialMomentumRateInLocal ( EcManipulatorActiveState & activeState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the composite rate of spatial momentum of this link and its outboard links represented in the link's D-H frame.

Parameters
 activeState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the composite rate of spatial momentum of this link and its outboard links represented in the link's D-H frame.

Reimplemented in EcIndividualManipulator.

 virtual const EcGeneralVelocity& EcManipulatorLink::comVelocityInLocal ( EcManipulatorActiveState & activeState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the link's center of mass velocity represented in the local frame

Parameters
 activeState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the link's center of mass velocity represented in the local frame

copy the properties (link kinematics, mass properties, joint actuator, shape container, etc.) of this link to another link. This does not copy the child links. This should be used along with replaceLinkProperties method to efficiently modify some link properties of some link in the manipulator chain.

Parameters
 virtual const EcRigidBodyMassProperties& EcManipulatorLink::crbi ( EcManipulatorActiveState & actState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the composite rigid-body inertia of this and all outboard links represented in the link's D-H frame.

Parameters
 actState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the composite rigid-body inertia of this and all outboard links represented in the link's D-H frame

Reimplemented in EcIndividualManipulator.

 virtual EcBoolean EcManipulatorLink::deleteMassProperties ( const EcString & identifier )
virtual

delete the mass properties identified by identifier. Returns true if deletion is successful and this will change the total mass properties of the link. Or returns false if identifier doesn't exist.

 virtual EcGeneralAcceleration EcManipulatorLink::dhFrameAccelerationInLocal ( const EcManipulatorState & manipState ) const
virtual

get the link's D-H frame acceleration represented in the local frame from a manipulator state This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] manipState The manipulator state at which the DH frame acceleration is calculated. The manipulator state must have valid position, velocity, and acceleration states

Reimplemented in EcIndividualManipulator.

 virtual const EcGeneralAcceleration& EcManipulatorLink::dhFrameAccelerationInLocal ( EcManipulatorActiveState & actState ) const
virtual

get the link's D-H frame acceleration represented in the local frame Note that the active state caches the computed value, which can be reused.

Parameters
 [in,out] actState The active state at which the DH frame acceleration is calculated.

Reimplemented in EcIndividualManipulator.

 virtual const EcGeneralForce& EcManipulatorLink::dhFrameForceInLocal ( const EcManipulatorExternalForce & manipExtForce, EcManipulatorActiveState & actState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the general force that must be applied to the link to achieve the motion specified in the active state.

Parameters
 manipExtForce The external force actState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the general force that must be applied to the link to achieve the motion

Reimplemented in EcIndividualManipulator.

 virtual EcCoordinateSystemTransformation EcManipulatorLink::dhFrameInSystem ( const EcPositionState & posState ) const
virtual

get the link's D-H frame represented in the system frame from a position state. This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] posState The position state at which the DH frame is calculated.

Reimplemented in EcIndividualManipulator.

 virtual const EcCoordinateSystemTransformation& EcManipulatorLink::dhFrameInSystem ( EcManipulatorActivePositionState & actPosState ) const
virtual

get the link's D-H frame represented in the system frame from an active position state. Note that the active position state caches the computed value, which can be reused.

Parameters
 [in,out] actPosState The active position state at which the DH frame is calculated.

Reimplemented in EcIndividualManipulator.

 virtual EcGeneralVelocity EcManipulatorLink::dhFrameVelocityInLocal ( const EcManipulatorState & manipState ) const
virtual

get the link's D-H frame velocity represented in the local frame from a manipulator state. This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] manipState The manipulator state at which the DH frame velocity is calculated. The manipulator state must have valid position state and velocity state

Reimplemented in EcIndividualManipulator.

 virtual const EcGeneralVelocity& EcManipulatorLink::dhFrameVelocityInLocal ( EcManipulatorActiveState & actState ) const
virtual

get the link's D-H frame velocity represented in the local frame from an active state. Note that the active state caches the computed value, which can be reused.

Parameters
 [in,out] actState The active state at which the DH frame velocity is calculated.

Reimplemented in EcIndividualManipulator.

 virtual EcGeneralVelocity EcManipulatorLink::dhFrameVelocityInSystem ( const EcManipulatorState & manipState ) const
virtual

get the link's D-H frame velocity represented in the system frame from a manipulator state. The point of application of this motion is the origin of the D-H frame. This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] manipState The manipulator state at which the DH frame velocity is calculated. The manipulator state must have valid position state and velocity state

Reimplemented in EcIndividualManipulator.

 virtual const EcGeneralVelocity& EcManipulatorLink::dhFrameVelocityInSystem ( EcManipulatorActiveState & actState ) const
virtual

get the link's D-H frame velocity represented in the system frame from an active state. The point of application of this motion is the origin of the D-H frame. Note that the active state caches the computed value, which can be reused.

Parameters
 [in,out] actState The active state at which the DH frame velocity is calculated.

Reimplemented in EcIndividualManipulator.

virtual

try to guess the mass properties of this link using a bounding capsule and nominal density

Examples:
ecProgrammaticConstructionMain.cpp.
 virtual void EcManipulatorLink::intersectLineSegment ( const EcLineSegment & lineSegment, EcLinkPointEvent & pointEvent, EcManipulatorActiveState * pActState, EcU32 levelOfDetail = 0 ) const
virtual

intersect a line segment with this link, returning the closest point along the line segment using the initial closest point provided in pointEvent.

 virtual EcBoolean EcManipulatorLink::lookup ( const EcString & key, const EcDataMap *& property ) const
virtual

lookup the surface property given a key, this checks the local shape associated with this link, then the manipulators mapping

Parameters
 [in] key A string used to look up a surface property. [out] property The surface property associated with the key. Set to 0 if the key is not found.
Returns
True if the key is found or false otherwise.

Reimplemented in EcIndividualManipulator.

 virtual const EcBaseStateConstraint& EcManipulatorLink::lowerLimitConstraint ( ) const
virtual

returns the lower limit constraint for this link

The constraint is in the general form of f(q)>=0, where q is the position state (base position plus joint positions). This allows, for example, the lower limit of this joint to be a function of the position of another joint. For example, if the lower limit of joint 1 is a linear function of joint 0 in the form of lowerLim0 = 2*q1 + 1.5. Then, the constraint will be q0-(2*q1+1.5)>=0. Thus, f(q) is q0 - 2*q1 - 1.5, where q0 and q1 is the joint positions of joints 0 and 1, respectively. Note that If the constraint container is empty, this will return a default constraint.

 virtual const EcRigidBodyMassProperties& EcManipulatorLink::massProperties ( const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

gets mass properties expressed in primary frame. This is the base mass properties combined with the mass properties in the map, which is the total mass properties of this link.

Parameters
 [in] statedSystemStruct A pointer to the stated system struct. If not null, the returned mass properties will be the combined mass properties of this link plus a link, if any, that's attached to this link.
 virtual const EcRigidBodyMassProperties& EcManipulatorLink::massPropertiesInDHFrame ( const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

gets the mass properties expressed in the D-H frame

Parameters
 [in] statedSystemStruct A pointer to the stated system struct. If not null, the returned mass properties will be the combined mass properties of this link plus a link, if any, that's attached to this link.
 virtual EcU32 EcManipulatorLink::numShapesInPhysicalRepresentation ( ) const
virtual

gets the number of shapes used for the physical representation of the link. This is one unless union nodes are used.

 virtual EcGeneralAcceleration EcManipulatorLink::primaryFrameAccelerationInSystem ( const EcManipulatorState & manipState ) const
virtual

get the link's primary frame acceleration represented in the system frame from a manipulator state This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] manipState The manipulator state at which the DH frame acceleration is calculated. The manipulator state must have valid position, velocity, and acceleration states
 virtual const EcGeneralAcceleration& EcManipulatorLink::primaryFrameAccelerationInSystem ( EcManipulatorActiveState & actState ) const
virtual

get the link's primary frame acceleration represented in the system frame Note that the active state caches the computed value, which can be reused.

Parameters
 [in,out] actState The active state at which the primary frame acceleration is calculated.
 virtual EcCoordinateSystemTransformation EcManipulatorLink::primaryFrameInSystem ( const EcPositionState & posState ) const
virtual

get the link's primary frame represented in the system frame from a position state This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] posState The position state at which the primary frame is calculated.
 virtual const EcCoordinateSystemTransformation& EcManipulatorLink::primaryFrameInSystem ( EcManipulatorActivePositionState & actPosState ) const
virtual

get the link's primary frame represented in the system frame from an active position state Note that the active position state caches the computed value, which can be reused.

Parameters
 [in,out] actPosState The active position state at which the primary frame is calculated.
 virtual EcGeneralVelocity EcManipulatorLink::primaryFrameVelocityInSystem ( const EcManipulatorState & manipState ) const
virtual

get the link's primary frame velocity represented in the system frame from a manipulator state. The point of application of this motion is the origin of the primary frame. This is suitable for one-time calculate since the computed value is not cached.

Parameters
 [in] manipState The manipulator state at which the primary frame velocity is calculated. The manipulator state must have valid position state and velocity state
 virtual const EcGeneralVelocity& EcManipulatorLink::primaryFrameVelocityInSystem ( EcManipulatorActiveState & actState ) const
virtual

get the link's primary frame velocity represented in the system frame from an active state. The point of application of this motion is the origin of the primary frame. Note that the active state caches the computed value, which can be reused.

Parameters
 [in,out] actState The active state at which the primary frame velocity is calculated.

Reimplemented in EcIndividualManipulator.

 virtual void EcManipulatorLink::removePhysicalExtentRedundancy ( const EcReal eps = 0.0 )
virtual

remove physical extent redundancy eps (epsilon) is used to remove close points

 EcBoolean EcManipulatorLink::replaceJointActuator ( const EcString & linkLabel, const EcJointActuator & jointActuator )

Parameters
 [in] linkLabel The string identifier of the link whose properties are to be changed. [in] jointActuator The joint actuator that will be used.
Returns
True if successful or false if linkLabel is invalid.
 virtual EcBoolean EcManipulatorLink::replaceLinkProperties ( const EcString & linkLabel, const EcManipulatorLink & newLink, EcBoolean includeShapeContainer = EcFalse )
virtual

Parameters
 [in] linkLabel The string identifier of the link whose properties are to be changed. [in] newLink A link whose properties will be used. [in] includeShapeContainer If true, the shape container of the link identified by linkLabel will be replaced by the shape container of newLink. Shape container is a special case because of it may be referenced, in which case it needs to be unreferenced. The default is false, i.e. the shape container will not be replaced.
Returns
True if successful or false if linkLabel is invalid.
virtual

Parameters
 [in] linkLabel The string identifier of the link whose properties are to be changed. [in] newLink The mass properties that will be used.
Returns
True if successful or false if linkLabel is invalid.
 virtual void EcManipulatorLink::scaleBy ( EcReal scaleFactor )
virtual

scale the link and all children by the specified value (scaleFactor=1.0 does not change the link)

virtual

scale just this link by the specified value (scaleFactor=1.0 does not change the link)

 virtual EcBoolean EcManipulatorLink::setJointLimit ( const EcString & linkLabel, EcBoolean isLowerLimit, EcReal value )
virtual

set the new value for a joint limit

Parameters
 [in] linkLabel The identifying label of the link (joint) [in] isLowerLimit True for a lower limit or false for upper limit [in] value The new value for the joint limit
virtual

assign the references for this links in this and the subtree from the map (as needed)

 virtual void EcManipulatorLink::setMassProperties ( const EcRigidBodyMassProperties & massProperties )
virtual

sets the total mass properties expressed in primary frame. This will set the base mass properties to massProperties and clear the mass properties map

Examples:
ecCollisionAvoidanceExample.cpp, and ecProgrammaticConstructionMain.cpp.
 virtual void EcManipulatorLink::setPrimaryFrame ( const EcCoordinateSystemTransformation & primaryFrame )
virtual

sets the primary frame

Parameters
 [in] primaryFrame The primary frame in local coordinates
Examples:
ecProgrammaticConstructionMain.cpp.
 virtual EcBoolean EcManipulatorLink::setSurfaceProperties ( const EcString & key, const EcDataMap & properties )
virtual

set the properties of the surface identified by key for all the shapes in this link.

Parameters
 [in] key A string to identify the surface material. [in] properties The surface properties to be set.
Returns
True if key is found in at least one shape or false otherwise.

Reimplemented in EcIndividualManipulator.

 virtual EcBoolean EcManipulatorLink::setSurfaces ( const EcString & linkName, const EcU32 & shapeID, const EcStringDataMapMap & surfaces )
virtual

set shape surface properties if the name matched, visit the child link recursively.

 virtual const EcGeneralMotion& EcManipulatorLink::spatialMomentumInLocal ( EcManipulatorActiveState & activeState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the spatial momentum at the center of mass of this link represented in the link's D-H frame.

Parameters
 activeState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the spatial momentum at the center of mass of this link represented in the link's D-H frame.
 virtual const EcGeneralMotion& EcManipulatorLink::spatialMomentumRateInLocal ( EcManipulatorActiveState & activeState, const EcStatedSystemStruct * statedSystemStruct = 0 ) const
virtual

compute and return the rate of spatial momentum at the center of mass of this link represented in the link's D-H frame.

Parameters
 activeState The manipulator active state statedSystemStruct The stated system struct for use when there are other manipulators attached to this link. If so, the mass properties of the attached manipulators will be included in the calculation. If this parameter is null or there's not attached manipulator, then only this link's mass properties are used.
Returns
the rate of spatial momentum at the center of mass of this link represented in the link's D-H frame.
virtual

Returns
 virtual const EcToken& EcManipulatorLink::token ( ) const
virtual

gets the xml token used for writing out.

Implements EcXmlObject.

Reimplemented in EcIndividualManipulator.

 virtual void EcManipulatorLink::transformComponentsBy ( const EcCoordinateSystemTransformation xform )
virtual

transform components (mass properties and shape). this has the same effect as setting the primary frame from identity to this value

virtual

transform this with respect to its parent by a general coordinate system transformation. This transformation is inserted before the link placement. If the kinematics class has a precursor P, the P=XForm*P;

 virtual EcBoolean EcManipulatorLink::transformPrimaryFrame ( const EcCoordinateSystemTransformation & xform )
virtual

transform this link so that the primary frame transformation is that given, but the link does not change (i.e., if xform is identity, then the primary frame will coincide with the DH frame, but the link won't change). After calling the primary frame equals xform.

virtual

normally, the shapes are shared among the same link of the same manipulator in different copies of the system for space efficiency. Calling this method will copy the shape container and break that sharing. Note that this is performed on this link and the child links as well

 virtual EcReal EcManipulatorLink::upperBoundExtentDistance ( ) const
virtual

returns the upper bound extent distance. This is the distance from the DH frame to the polygon furthest away from the frame for this link

 virtual EcReal EcManipulatorLink::upperBoundSubmanipulatorExtentDistance ( ) const
virtual

returns the upper bound extent distance for the links that make up the sub-manipulator beneath this link

 virtual const EcBaseStateConstraint& EcManipulatorLink::upperLimitConstraint ( ) const
virtual

returns the upper limit constraint for this link

The constraint is in the general form of f(q)>=0, where q is the position state (base position plus joint positions). This allows, for example, the upper limit of this joint to be a function of the position of another joint. For example, if the upper limit of joint 1 is a linear function of joint 0 in the form of upperLim0 = 2*q1 + 1.5. Then, the constraint will be 2*q1+1.5-q0>=0. Thus, f(q) is -q0 + 2*q1 + 1.5, where q0 and q1 is the joint positions of joints 0 and 1, respectively. Note that If the constraint container is empty, this will return a default constraint.