Simbody  3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SimTK::CableTrackerSubsystem Class Reference

This subsystem tracks the paths of massless, frictionless cables that take the shortest route between two distant points of a multibody system, passing smoothly over geometric obstacles that are attached to intermediate bodies. More...

#include <CableTrackerSubsystem.h>

+ Inheritance diagram for SimTK::CableTrackerSubsystem:

Public Member Functions

 CableTrackerSubsystem ()
 
 CableTrackerSubsystem (MultibodySystem &)
 
int getNumCablePaths () const
 Get the number of cable paths being managed by this cable tracker subsystem. More...
 
const CablePathgetCablePath (CablePathIndex cableIx) const
 Get const access to a particular cable path. More...
 
CablePathupdCablePath (CablePathIndex cableIx)
 Get writable access to a particular cable path. More...
 
- Public Member Functions inherited from SimTK::Subsystem
 Subsystem ()
 
 Subsystem (const Subsystem &)
 
Subsystemoperator= (const Subsystem &)
 
 ~Subsystem ()
 
const StringgetName () const
 
const StringgetVersion () const
 
QIndex allocateQ (State &, const Vector &qInit) const
 
UIndex allocateU (State &, const Vector &uInit) const
 
ZIndex allocateZ (State &, const Vector &zInit) const
 
DiscreteVariableIndex allocateDiscreteVariable (State &, Stage invalidates, AbstractValue *v) const
 
DiscreteVariableIndex allocateAutoUpdateDiscreteVariable (State &, Stage invalidates, AbstractValue *v, Stage updateDependsOn) const
 
CacheEntryIndex allocateCacheEntry (const State &, Stage dependsOn, Stage computedBy, AbstractValue *v) const
 
CacheEntryIndex allocateCacheEntry (const State &state, Stage g, AbstractValue *v) const
 
CacheEntryIndex allocateLazyCacheEntry (const State &state, Stage earliest, AbstractValue *v) const
 
QErrIndex allocateQErr (const State &, int nqerr) const
 
UErrIndex allocateUErr (const State &, int nuerr) const
 
UDotErrIndex allocateUDotErr (const State &, int nudoterr) const
 
EventTriggerByStageIndex allocateEventTriggersByStage (const State &, Stage, int ntriggers) const
 
const VectorgetQ (const State &) const
 
const VectorgetU (const State &) const
 
const VectorgetZ (const State &) const
 
const VectorgetQDot (const State &) const
 
const VectorgetUDot (const State &) const
 
const VectorgetZDot (const State &) const
 
const VectorgetQDotDot (const State &) const
 
const VectorgetQErr (const State &) const
 
const VectorgetUErr (const State &) const
 
const VectorgetUDotErr (const State &) const
 
const VectorgetMultipliers (const State &) const
 
const VectorgetEventTriggersByStage (const State &, Stage) const
 
VectorupdQ (State &) const
 
VectorupdU (State &) const
 
VectorupdZ (State &) const
 
void setQ (State &s, const Vector &q) const
 
void setU (State &s, const Vector &u) const
 
void setZ (State &s, const Vector &z) const
 
VectorupdQDot (const State &) const
 
VectorupdUDot (const State &) const
 
VectorupdZDot (const State &) const
 
VectorupdQDotDot (const State &) const
 
VectorupdQErr (const State &) const
 
VectorupdUErr (const State &) const
 
VectorupdUDotErr (const State &) const
 
VectorupdMultipliers (const State &) const
 
VectorupdEventTriggersByStage (const State &, Stage) const
 
Stage getStage (const State &) const
 
const AbstractValuegetDiscreteVariable (const State &s, DiscreteVariableIndex dx) const
 
Real getDiscreteVarLastUpdateTime (const State &s, DiscreteVariableIndex dx) const
 
CacheEntryIndex getDiscreteVarUpdateIndex (const State &s, DiscreteVariableIndex dx) const
 
const AbstractValuegetDiscreteVarUpdateValue (const State &s, DiscreteVariableIndex dx) const
 
AbstractValueupdDiscreteVarUpdateValue (const State &s, DiscreteVariableIndex dx) const
 
bool isDiscreteVarUpdateValueRealized (const State &s, DiscreteVariableIndex dx) const
 
void markDiscreteVarUpdateValueRealized (const State &s, DiscreteVariableIndex dx) const
 
AbstractValueupdDiscreteVariable (State &, DiscreteVariableIndex) const
 
const AbstractValuegetCacheEntry (const State &, CacheEntryIndex) const
 
AbstractValueupdCacheEntry (const State &, CacheEntryIndex) const
 
bool isCacheValueRealized (const State &, CacheEntryIndex) const
 
void markCacheValueRealized (const State &, CacheEntryIndex) const
 
void markCacheValueNotRealized (const State &, CacheEntryIndex) const
 
SystemQIndex getQStart (const State &) const
 
int getNQ (const State &) const
 
SystemUIndex getUStart (const State &) const
 
int getNU (const State &) const
 
SystemZIndex getZStart (const State &) const
 
int getNZ (const State &) const
 
SystemQErrIndex getQErrStart (const State &) const
 
int getNQErr (const State &) const
 
SystemUErrIndex getUErrStart (const State &) const
 
int getNUErr (const State &) const
 
SystemUDotErrIndex getUDotErrStart (const State &) const
 
int getNUDotErr (const State &) const
 
SystemMultiplierIndex getMultipliersStart (const State &) const
 
int getNMultipliers (const State &) const
 
SystemEventTriggerByStageIndex getEventTriggerStartByStage (const State &, Stage) const
 
int getNEventTriggersByStage (const State &, Stage) const
 
bool isInSystem () const
 
bool isInSameSystem (const Subsystem &otherSubsystem) const
 
const SystemgetSystem () const
 
SystemupdSystem ()
 
SubsystemIndex getMySubsystemIndex () const
 
bool isOwnerHandle () const
 
bool isEmptyHandle () const
 
bool isSameSubsystem (const Subsystem &otherSubsystem) const
 
bool subsystemTopologyHasBeenRealized () const
 
void invalidateSubsystemTopologyCache () const
 
MeasureIndex adoptMeasure (AbstractMeasure &)
 
AbstractMeasure getMeasure (MeasureIndex) const
 
template<class T >
Measure_< T > getMeasure_ (MeasureIndex mx) const
 
const Subsystem::GutsgetSubsystemGuts () const
 
Subsystem::GutsupdSubsystemGuts ()
 
void adoptSubsystemGuts (Subsystem::Guts *g)
 
void setSystem (System &, SubsystemIndex)
 
 Subsystem (Subsystem::Guts *g)
 
bool hasGuts () const
 

Detailed Description

This subsystem tracks the paths of massless, frictionless cables that take the shortest route between two distant points of a multibody system, passing smoothly over geometric obstacles that are attached to intermediate bodies.

The calculated path will consist of a series of straight line segments between obstacles, and geodesics over the obstacles.

Force elements defined elsewhere may make use of cable paths to apply forces to the system, by calculating a uniform tension in the cable that may depend on the cable kinematics calculated here. Cable kinematics includes the path, the cable length, and the cable "rate", defined as the time derivative of length. The path and length are available at Position stage, the rate is available at Velocity stage.

During construction, one or more CablePath objects are defined by giving for each CablePath an origin and end point and an ordered set of geometric obstacles represented either by surfaces or "via" points. Via points are like frictionless eyelets that the cable must pass through and can generate forces in any direction perpendicular to the cable; surfaces are one-sided and can only apply positive forces to the cable. Thus the cable path does not necessarily touch all the obstacles; the obstacles that it does touch are called the "active" obstacles. Via points are always active.

Every obstacle and point is rigidly fixed to Ground or some moving body of the multibody system, with its pose or station point provided. Any number of obstacles may be placed on one body.

Constructor & Destructor Documentation

SimTK::CableTrackerSubsystem::CableTrackerSubsystem ( )
SimTK::CableTrackerSubsystem::CableTrackerSubsystem ( MultibodySystem )
explicit

Member Function Documentation

int SimTK::CableTrackerSubsystem::getNumCablePaths ( ) const

Get the number of cable paths being managed by this cable tracker subsystem.

These are identified by CablePathIndex values from 0 to getNumCablePaths()-1. This is available after realizeTopology() and does not change subsequently.

const CablePath& SimTK::CableTrackerSubsystem::getCablePath ( CablePathIndex  cableIx) const

Get const access to a particular cable path.

CablePath& SimTK::CableTrackerSubsystem::updCablePath ( CablePathIndex  cableIx)

Get writable access to a particular cable path.


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