NTRT Simulator
 All Classes Files Functions Variables Typedefs Friends Pages
tgLinearString Class Reference
Inheritance diagram for tgLinearString:
Collaboration diagram for tgLinearString:

Public Member Functions

 tgLinearString (Muscle2P *muscle, const tgTags &tags, tgBaseString::Config &config)
 
 tgLinearString (Muscle2P *muscle, std::string space_separated_tags, tgBaseString::Config &config)
 
virtual ~tgLinearString ()
 
virtual void setup (tgWorld &world)
 
virtual void teardown ()
 
virtual void step (double dt)
 
virtual void onVisit (const tgModelVisitor &r) const
 
virtual void tensionMinLengthController (const double targetTension, float dt)
 
void setRestLength (double newLength, float dt)
 
const Muscle2PgetMuscle () const
 
virtual const double getStartLength () const
 
virtual const double getCurrentLength () const
 
virtual const double getTension () const
 
virtual const double getRestLength () const
 
virtual const double getVelocity () const
 
virtual const
tgBaseString::BaseStringHistory
getHistory () const
 
void attach (tgObserver< tgLinearString > *pObserver)
 
void notifyStep (double dt)
 
void notifySetup ()
 
void notifyTeardown ()
 
void addChild (tgModel *pChild)
 
virtual std::string toString (std::string prefix="") const
 
template<typename T >
std::vector< T * > find (const tgTagSearch &tagSearch)
 
template<typename T >
std::vector< T * > find (const std::string &tagSearch)
 
std::vector< tgModel * > getDescendants () const
 
void addTags (const std::string &space_separated_tags)
 
void addTags (const tgTags &tags)
 
bool hasTag (const std::string tag) const
 
bool hasAllTags (std::string tags)
 
bool hasAnyTags (const std::string tags)
 
bool hasNoTags ()
 
tgTagsgetTags ()
 
const tgTagsgetTags () const
 
void setTags (tgTags tags)
 
std::string getTagStr (std::string delim=" ") const
 

Protected Member Functions

virtual void moveMotors (double dt)
 

Protected Attributes

Muscle2Pm_muscle
 
Config m_config
 
BaseStringHistory *const m_pHistory
 
double m_restLength
 
double m_preferredLength
 
double m_startLength
 
double m_prevVelocity
 

Detailed Description

Definition at line 41 of file tgLinearString.h.

Constructor & Destructor Documentation

tgLinearString::tgLinearString ( Muscle2P muscle,
const tgTags tags,
tgBaseString::Config config 
)

Constructor using tags. Typically called in tgLinearStringInfo.cpp

Parameters
[in]muscleThe muscle2P object that this controls and logs. Set up in tgLinearStringInfo.cpp
[in]tagsas passed through tgStructure and tgStructureInfo
[in]configHolds member variables like elasticity, damping and motor parameters. See tgBaseString
[in]histwhether or not to log additional history
Todo:
move hist to config

Definition at line 65 of file tgLinearString.cpp.

tgLinearString::tgLinearString ( Muscle2P muscle,
std::string  space_separated_tags,
tgBaseString::Config config 
)

Same as other constructor, just a different type of tags

Definition at line 79 of file tgLinearString.cpp.

tgLinearString::~tgLinearString ( )
virtual

Destructor deletes the Muscle2P

Definition at line 96 of file tgLinearString.cpp.

Member Function Documentation

void tgModel::addChild ( tgModel pChild)
inherited

Add a sub-model to this model. The model takes ownership of the child sub-model and is responsible for deallocating it.

Parameters
[in,out]pChilda pointer to a sub-model
Exceptions
std::invalid_argumentis pChild is NULL, this object, or already a descendant
Todo:
Make sure that every child appears no more than once in the tree.

Definition at line 126 of file tgModel.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

void tgSubject< tgLinearString >::attach ( tgObserver< tgLinearString > *  pObserver)
inherited

Attach an observer to the subject of the observer.

Parameters
[in,out]pObservera pointer to an observer for the subject; do nothing if the pointer is NULL
template<typename T >
std::vector<T*> tgModel::find ( const tgTagSearch tagSearch)
inlineinherited

Get a vector of descendants sorted by type and a tagsearch. Useful for pulling out muscle groups, or similar.

Parameters
[in]tagSearch,atagSearch that contains the desired tags
Returns
a std::vector of pointers to members that match the tag search and typename T

Definition at line 129 of file tgModel.h.

Here is the call graph for this function:

template<typename T >
std::vector<T*> tgModel::find ( const std::string &  tagSearch)
inlineinherited

Get a vector of descendants sorted by type and a tagsearch. Useful for pulling out muscle groups, or similar.

Parameters
[in]tagSearch,astd::string& that contains the desired tags
Returns
a std::vector of pointers to members that match the tag search and typename T

Definition at line 142 of file tgModel.h.

Here is the call graph for this function:

std::vector< tgModel * > tgModel::getDescendants ( ) const
inherited

Return a std::vector of const pointers to all sub-models.

Todo:
examine whether this should be public, and perhaps create a read only version
Returns
a std::vector of const pointers all sub-models.
Todo:
Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Definition at line 174 of file tgModel.cpp.

Here is the call graph for this function:

const Muscle2P* tgLinearString::getMuscle ( ) const
inline

Returns a pointer the string's Muscle2P. Used for rendering in tgBulletRenderer

Definition at line 121 of file tgLinearString.h.

Here is the caller graph for this function:

const double tgLinearString::getStartLength ( ) const
virtual

Return the appropreate values.

Implements tgBaseString.

Definition at line 150 of file tgLinearString.cpp.

void tgLinearString::moveMotors ( double  dt)
protectedvirtual

Called from public functions, it makes the restLength get closer to preferredlength, according to config constraints.

Implements tgBaseString.

Definition at line 196 of file tgLinearString.cpp.

Here is the caller graph for this function:

void tgSubject< tgLinearString >::notifySetup ( )
inherited

Call tgObserver<T>::onSetup() on all observers in the order in which they were attached.

Here is the caller graph for this function:

void tgSubject< tgLinearString >::notifyStep ( double  dt)
inherited

Call tgObserver<T>::onStep() on all observers in the order in which they were attached.

Parameters
[in]dtthe number of seconds since the previous call; do nothing if not positive

Here is the caller graph for this function:

void tgSubject< tgLinearString >::notifyTeardown ( )
inherited

Call tgObserver<T>::onTeardown() on all observers in the order in which they were attached.

void tgLinearString::onVisit ( const tgModelVisitor r) const
virtual

Double dispatch function for a tgModelVisitor. This object will pass itself back to the visitor. Used for rendering and data logging as of May 2014.

Parameters
[in]r,thevisiting tgModelVisitor

Reimplemented from tgModel.

Definition at line 131 of file tgLinearString.cpp.

Here is the call graph for this function:

void tgLinearString::setRestLength ( double  newLength,
float  dt 
)
virtual

Directly set m_preferredLength (see base class tgBaseString) Calls moveMotors(dt) to adjust the rest length of Muscle2P

Reimplemented from tgBaseString.

Definition at line 175 of file tgLinearString.cpp.

Here is the call graph for this function:

void tgLinearString::setup ( tgWorld world)
virtual

Notifies observers of setup, calls setup on children

Parameters
[in]world,thetgWorld the models are being built into

Reimplemented from tgBaseString.

Definition at line 103 of file tgLinearString.cpp.

Here is the call graph for this function:

void tgLinearString::step ( double  dt)
virtual

Step dt forward with the simulation. Notifies observers of step, applies forces to rigid bodies via Muscle2P, logs history if desired, steps children.

Parameters
[in]dt,mustbe >= 0.0

Reimplemented from tgBaseString.

Definition at line 115 of file tgLinearString.cpp.

Here is the call graph for this function:

void tgLinearString::teardown ( )
virtual

Notifies observers of teardown, teardown any children

Reimplemented from tgBaseString.

Definition at line 109 of file tgLinearString.cpp.

Here is the call graph for this function:

void tgLinearString::tensionMinLengthController ( const double  targetTension,
float  dt 
)
virtual

Functions for interfacing with muscle2P, and higher level controllers Set the desired tension of the string. Will change m_preferredLength (see base class tgBaseString) to reach targetTension, subject to the constraints in the kinematic motor model. Calls moveMotors(dt) upon completion of calculations

Implements tgBaseString.

Definition at line 278 of file tgLinearString.cpp.

Here is the call graph for this function:

Here is the caller graph for this function:

std::string tgModel::toString ( std::string  prefix = "") const
virtualinherited

Returns the tag names of this model and its children

Parameters
[in]prefixa string to append to
Returns
the original string with this model and its children's tags appended

Definition at line 156 of file tgModel.cpp.

Here is the caller graph for this function:

Member Data Documentation

Config tgBaseString::m_config
protectedinherited

A copy of the configuration POD supplied at constuction. This is not const.

Definition at line 223 of file tgBaseString.h.

BaseStringHistory* const tgBaseString::m_pHistory
protectedinherited

All history sequences.

Definition at line 226 of file tgBaseString.h.

double tgBaseString::m_prevVelocity
protectedinherited

Tracking the most recent velocity to avoid using deques.

Definition at line 245 of file tgBaseString.h.

double tgBaseString::m_restLength
protectedinherited

Motor Model Parameters

Definition at line 233 of file tgBaseString.h.

double tgBaseString::m_startLength
protectedinherited

Tracking the start length to avoid using deques.

Definition at line 240 of file tgBaseString.h.


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