NTRT Simulator
 All Classes Files Functions Variables Typedefs Friends Pages
Todo List
Member BaseSpineCPGControl::onTeardown (BaseSpineModelLearning &subject)

- consolidate with other controller classes.

- return length scale as a parameter

- return length scale as a parameter

Member BaseSpineCPGControl::setupCPGs (BaseSpineModelLearning &subject, array_2D nodeActions, array_4D edgeActions)
: redo with for_each
Member ContactTestModel::setup (tgWorld &world)
Get rid of this.
Member CPGNode::CPGNode (int nodeNum, const std::vector< double > &params)
consider adding vector of initial conditions for stability
Member CPGNode::updateDTs (double descCom)

better name?

ask about refactoring to use for_each

Member FlemonsSpineModelLearning::setup (tgWorld &world)

: reference the things that do this for us

: there seems to be an issue with Muscle2P connections if the front of a tetra is inside the next one.

: the snake is a temporary variable – will its destructor be called? If not, where do we delete its children?

Member ImpedanceControl::_lengthStiffness
Rename m_lengthStiffness.
Member ImpedanceControl::_offsetTension
rename m_offsetTension.
Member ImpedanceControl::_velStiffness
Rename m_velocityStiffness.
Member ImpedanceControl::control (tgBaseString *const mString, double deltaTimeSeconds, double newPosition, double offsetVel=0)

Make mMuscle a reference.

should we add an offset position so it can just control??

Member main (int argc, char **argv)

Does the model assume ownership of the controller?

Does the model assume ownership of the controller?

File Muscle2P.cpp
Split so only one class is defined per file. $Id$
File Muscle2P.h
Split so only one class is defined per header file. $Id$
Member operator<< (std::ostream &os, const tgPairs &p)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const btCompoundShape &cs)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgModel &obj)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgTags &tags)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgConnectorInfo &n)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgNode &node)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgNodes &n)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgPair &pair)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const tgRigidInfo &obj)

Inlining this does no good; stream operations are slow.

Do we need to re-add the collision shape for debugging?

Member operator<< (std::ostream &os, const tgStructureInfo &obj)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const btQuaternion &q)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const btVector3 &v)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const btTransform &xf)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const btRigidBody &rb)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const btCollisionShape &cs)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const CPGEdge &obj)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const CPGEquations &obj)
Inlining this does no good; stream operations are slow.
Member operator<< (std::ostream &os, const CPGNode &obj)
Inlining this does no good; stream operations are slow.
Member StructureTestModel::setup (tgWorld &world)
Get rid of this.
Member TetraSpineCPGControl::setupCPGs (BaseSpineModelLearning &subject, array_2D nodeActions, array_4D edgeActions)
: redo with for_each
Member tgBaseString::Config::Config (double s=1000.0, double d=10.0, bool h=false, double rot=0, double mf=1000.0, double tVel=100.0, double mxAcc=10000.0, double mnAL=0.1, double mnRL=0.1)
is this the right place for this, or the constructor of this class?
Member tgBaseString::Config::maxTens
give the motor interia, and specify more things by torque
Member tgBaseString::Config::rotation
Is this meaningful for non-rod shapes?
Member tgBulletRenderer::tgBulletRenderer (tgWorld &world)
Make the world const.
Member tgBulletUtil::worldToDynamicsWorld (tgWorld &world)
Use typeinfo to verify that this is correct.
Member tgCompoundRigidInfo::addRigid (tgRigidInfo &rigid)
Get rid of this. Require all m_rigids to be supplied in the constructor.
Member tgCompoundRigidInfo::containsNode (const btVector3 &nodeVector) const
Use std::find_if()
Member tgCompoundRigidInfo::getCenterOfMass () const

Make this const here and in all base classes and derived classes.

Make rigid const when tgCompoundRigidInfo::getCenterOfMass() is const.

If all m_rigids are supplied in the constructor, this can be calculated in the constructor and cashed as a const member variable.

Member tgCompoundRigidInfo::getCompound ()
What is the purpose? The caller must already have the object, a reference or a pointer to be able to call this.
Member tgCompoundRigidInfo::getCompound () const

What is the purpose? The caller must already have the object, a reference or a pointer to be able to call this.

Add this to the base classes and derived classes.

Member tgCompoundRigidInfo::getContainedNodes () const
Use std::accumulate()
Member tgCompoundRigidInfo::getLeafRigids ()
This function can't be const unless the return value is std::set<const tgRigidInfo*>.
Member tgCompoundRigidInfo::getMass () const

Do this in the constructor and cache the result as a member variable.

Use std::accumulate()

Member tgCompoundRigidInfo::m_rigids

Change this to std::set to prevent duplication.

Make this const and initialize it in the constructor.

Member tgCompoundRigidInfo::setRigidBody (btRigidBody *const rigidBody)

tgCompoundRigidInfo is infected by Bullet Physics

Use std::for_each()

Member tgCompoundRigidInfo::sharesNodesWith (const tgRigidInfo &other) const

Make this const in all base classes and all derived classes.

Make other const in all base classes and all derived classes.

Use std::find_if()

Member tgCompoundRigidInfo::tgCompoundRigidInfo ()
Require both m_rigidBody and m_rigids to be supplied in the constructor. Initialize m_compoundShape, store mass and center of mass in member variables.
Member tgCPGInfo::addControlInfo (tgBaseCPGNode *string)
see if this can be ready for construction of the tgModel the first time. Would require editing tgStructureInfo
Member tgCPGInfo::setConnectivity (tgConnectorInfo *thisString, std::vector< tgConnectorInfo * > allStrings, array_4D edgeParams)
can we check to make sure the strings are on the same CPG system like we used to
Member tgCPGStringControl::onStep (tgLinearString &subject, double dt)
this fails if its attached to multiple controllers! is there a way to track global time at this level
Member tgDataObserver::onSetup (tgModel &model)

move functions to constructor when possible

move functions to constructor when possible

Member tgLinearString::tgLinearString (Muscle2P *muscle, const tgTags &tags, tgBaseString::Config &config)
move hist to config
Member tgLinearStringInfo::tgLinearStringInfo (const tgLinearString::Config &config, const tgPair &pair)
: make sure that tgPairs returns references to the vectors...
Member tgModel::addChild (tgModel *pChild)
Make sure that every child appears no more than once in the tree.
Member tgModel::getDescendants () const

examine whether this should be public, and perhaps create a read only version

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

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Unnecessary copying can be avoided by pasing the result collection in the recursive step.

Class tgNodes
: move operator[] out of tgTaggables into here
Member tgNodes::addNode (const btVector3 &node)
If node is already a value in the map, return its key.
Member tgNodes::addNode (double x, double y, double z)
If node is already a value in the map, return its index.
Member tgNodes::move (const btVector3 &offset)
use std::for_each()
Class tgPair
Replace with "typedef tgPair std::pair<btVector3*, btVector3*>;"
Member tgPair::tgPair (btVector3 from, btVector3 to)

Is it OK for from == to, either the same object or the same value?

Is it OK for from == to, either the same object or the same value?

Member tgRBString::Config::Config ()
remove this
Member tgRBString::setup (tgWorld &world)
Get rid of this.
Member tgRigidInfo::getCompound () const =0
Is this necessary?
Member tgRigidInfo::getCompound ()=0
Is this necessary?
Member tgRigidInfo::getConnectionPoint (const btVector3 &referencePoint, const btVector3 &destinationPoint) const =0

: For the generic tgRigidInfo implementation, allow people to provide a delegate object to find the connection point.

: Should this return a reference instead of a value? Possibility of change indicates a reference, but do we want to allow this to be changeable?

Member tgRigidInfo::getLeafRigids ()=0
This function can't be const unless the return value is std::set<const tgRigidInfo*>.
Member tgRigidInfo::isCompound () const
Is this necessary?
Member tgRigidInfo::setCollisionShape (btCollisionShape *p_btCollisionShape)
Does this leak any previous value of m_collisionShape?
Member tgRigidInfo::setRigidBody (btRigidBody *rigidBody)
Does this leak any previous value of m_rigidBody?
Member tgRodInfo::getLeafRigids ()
This function can't be const unless the return value is std::set<const tgRigidInfo*>.
Member tgRodInfo::initRigidBody (tgWorld &world)
come up with a general solution in tgRigidInfo::initRigidBody Currently very difficult to pass around the config file in tgRigidInfo, since
Member tgRodInfo::sharesNodesWith (const tgRigidInfo &other) const
: Move this to tgRigidInfo Does this rod have any nodes in common with the given tgRigidInfo object?
Parameters
in]other a reference to a tgRigidInfo object
Return values
trueif any node in this rod is also in other
falseif no node in this rod is also in other
Member tgRodInfo::tgRodInfo (const tgRod::Config &config, const tgPair &pair)
: make sure that tgPairs returns references to the vectors...
Member tgRodInfo::tgRodInfo (const tgRod::Config &config, tgTags tags, const tgPair &pair)
: make sure that tgPairs returns references to the vectors...
Member tgSimulation::addModel (tgModel *pModel)
Model pointer can't be NULL.
Member tgSimulation::run (int steps) const
Make steps of type size_t.
Member tgSimView::isInitialzed () const
Get rid of this.
Member tgSimViewGraphics::setup ()
Can this pointer become invalid if a reset occurs?
Member tgSimViewGraphics::tgSimViewGraphics (tgWorld &world, double stepSize=1.0/120.0, double renderRate=1.0/60.0)
figure out a good time to delete this
Member tgStructure::addChild (tgStructure *child)
: check to make sure we don't already have one of these structures (what does that mean?)
Note
: We only want to check that pairs are the same at build time, since one structure may build the pairs, while another may not depending on its tags.
Member tgStructure::addRotation (const btVector3 &fixedPoint, const btVector3 &axis, double angle)
add rotate functionality
Member tgUtil::deg2rad (double degrees)
Normalize the return value so that it is in [0.0, 2 * pi).
Member tgUtil::rad2deg (double radians)
Normalize the return value so that it is in [0.0, 360.0).
Member tgWorld::tgWorld (const Config &config)

I couldn't find a way to give config a default value.

Use the factory method design pattern to create the m_pImpl object.

Member tgWorld::tgWorld ()
Use the factory method design pattern to create the m_pImpl object.
Member tgWorld::tgWorld (const Config &config, tgGround *ground)

can we make the ground const?

Use the factory method design pattern to create the m_pImpl object.