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...
|
| CableTrackerSubsystem () |
|
| CableTrackerSubsystem (MultibodySystem &) |
|
int | getNumCablePaths () const |
| Get the number of cable paths being managed by this cable tracker subsystem. More...
|
|
const CablePath & | getCablePath (CablePathIndex cableIx) const |
| Get const access to a particular cable path. More...
|
|
CablePath & | updCablePath (CablePathIndex cableIx) |
| Get writable access to a particular cable path. More...
|
|
| Subsystem () |
|
| Subsystem (const Subsystem &) |
|
Subsystem & | operator= (const Subsystem &) |
|
| ~Subsystem () |
|
const String & | getName () const |
|
const String & | getVersion () 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 Vector & | getQ (const State &) const |
|
const Vector & | getU (const State &) const |
|
const Vector & | getZ (const State &) const |
|
const Vector & | getQDot (const State &) const |
|
const Vector & | getUDot (const State &) const |
|
const Vector & | getZDot (const State &) const |
|
const Vector & | getQDotDot (const State &) const |
|
const Vector & | getQErr (const State &) const |
|
const Vector & | getUErr (const State &) const |
|
const Vector & | getUDotErr (const State &) const |
|
const Vector & | getMultipliers (const State &) const |
|
const Vector & | getEventTriggersByStage (const State &, Stage) const |
|
Vector & | updQ (State &) const |
|
Vector & | updU (State &) const |
|
Vector & | updZ (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 |
|
Vector & | updQDot (const State &) const |
|
Vector & | updUDot (const State &) const |
|
Vector & | updZDot (const State &) const |
|
Vector & | updQDotDot (const State &) const |
|
Vector & | updQErr (const State &) const |
|
Vector & | updUErr (const State &) const |
|
Vector & | updUDotErr (const State &) const |
|
Vector & | updMultipliers (const State &) const |
|
Vector & | updEventTriggersByStage (const State &, Stage) const |
|
Stage | getStage (const State &) const |
|
const AbstractValue & | getDiscreteVariable (const State &s, DiscreteVariableIndex dx) const |
|
Real | getDiscreteVarLastUpdateTime (const State &s, DiscreteVariableIndex dx) const |
|
CacheEntryIndex | getDiscreteVarUpdateIndex (const State &s, DiscreteVariableIndex dx) const |
|
const AbstractValue & | getDiscreteVarUpdateValue (const State &s, DiscreteVariableIndex dx) const |
|
AbstractValue & | updDiscreteVarUpdateValue (const State &s, DiscreteVariableIndex dx) const |
|
bool | isDiscreteVarUpdateValueRealized (const State &s, DiscreteVariableIndex dx) const |
|
void | markDiscreteVarUpdateValueRealized (const State &s, DiscreteVariableIndex dx) const |
|
AbstractValue & | updDiscreteVariable (State &, DiscreteVariableIndex) const |
|
const AbstractValue & | getCacheEntry (const State &, CacheEntryIndex) const |
|
AbstractValue & | updCacheEntry (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 System & | getSystem () const |
|
System & | updSystem () |
|
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::Guts & | getSubsystemGuts () const |
|
Subsystem::Guts & | updSubsystemGuts () |
|
void | adoptSubsystemGuts (Subsystem::Guts *g) |
|
void | setSystem (System &, SubsystemIndex) |
|
| Subsystem (Subsystem::Guts *g) |
|
bool | hasGuts () const |
|
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.