19 #ifndef TENSEGRITY_MODEL_H
20 #define TENSEGRITY_MODEL_H
40 #include "LinearMath/btVector3.h"
42 #include <yaml-cpp/yaml.h>
50 typedef YAML::Node Yam;
73 const static double rodDensity = 1.0;
77 const static double rodFriction = 1.0;
81 const static double rodRollFriction = 0.0;
85 const static double rodRestitution = 0.2;
92 const static double boxWidth = 1.0;
96 const static double boxHeight = 1.0;
100 const static double boxDensity = 1.0;
104 const static double boxFriction = 1.0;
108 const static double boxRollFriction = 0.0;
112 const static double boxRestitution = 0.2;
120 const static double sphereRadius = 0.5;
121 const static double sphereDensity = 1.0;
122 const static double sphereFriction = 1.0;
123 const static double sphereRollFriction = 0.0;
124 const static double sphereRestitution = 0.2;
131 const static double stringStiffness = 1000.0;
135 const static double stringDamping = 10.0;
139 const static double stringPretension = 0.0;
143 const static double stringRadius = 1.0;
147 const static double stringMotorFriction = 0.0;
151 const static double stringMotorInertia = 1.0;
155 const static double stringBackDrivable = 0;
159 const static double stringHistory = 0;
163 const static double stringMaxTension = 1000.0;
167 const static double stringTargetVelocity = 100.0;
171 const static double stringMinActualLength = 0.1;
175 const static double stringMinRestLength = 0.1;
179 const static double stringRotation = 0;
186 const static bool stringMoveCablePointAToEdge =
true;
187 const static bool stringMoveCablePointBToEdge =
true;
192 std::string topLvlStructurePath;
241 virtual void step(
double timeStep);
262 std::vector<tgSpringCableActuator*> allActuators;
268 void addChildren(
tgStructure& structure,
const std::string& structurePath,
tgBuildSpec& spec,
const Yam& substructures);
273 void addChild(
tgStructure& structure,
const std::string& parentPath,
274 const std::string& childName,
const Yam& childStructurePath,
tgBuildSpec& spec);
279 void addChildRotation(
tgStructure& childStructure,
const Yam& rotation);
284 void addChildScale(
tgStructure& childStructure,
const Yam& scale);
290 void addChildOffset(
tgStructure& childStructure,
int offsetIndex,
const Yam& offset);
295 void addChildTranslation(
tgStructure& childStructure,
const Yam& translation);
305 void addNodes(
tgStructure& structure,
const Yam& nodes);
311 void addPairGroups(
tgStructure& structure,
const Yam& pair_groups);
324 void addBonds(
tgStructure& structure,
const std::string& bonds,
const std::string& tags,
const Yam& pairs,
tgBuildSpec& spec);
330 void addNodeNodePairs(
tgStructure& structure,
const std::string& tags,
const Yam& pairs,
331 const std::string* childStructure1Name = NULL,
const std::string* childStructure2Name = NULL);
338 void addNodeEdgePairs(
tgStructure& structure,
const std::string& tags,
const Yam& pairs,
339 const std::string* childStructure1Name,
const std::string* childStructure2Name,
tgBuildSpec& spec);
346 std::vector<btVector3>& structure1RefNodes, std::vector<btVector3>& structure2RefNodes,
347 std::vector<tgNode*>& ligands, std::vector< std::pair<tgNode*, tgNode*> >& receptors,
const Yam& links);
353 void parseAttachmentPoint(
tgStructure& structure,
const std::string& attachment, std::vector<btVector3>& refNodes,
354 std::vector<tgNode*>& ligands, std::vector< std::pair<tgNode*, tgNode*> >& receptors);
360 void rotateAndTranslate(
tgStructure& childStructure2,
361 std::vector<btVector3>& structure1RefNodes, std::vector<btVector3>& structure2RefNodes);
367 const std::vector<tgBuildSpec::RigidAgent*>& rigidAgents,
tgBuildSpec& spec);
382 void addBuilders(
tgBuildSpec& spec,
const Yam& builders);
387 void addRodBuilder(
const std::string& builderClass,
const std::string& tagMatch,
const Yam& parameters,
tgBuildSpec& spec);
392 void addBasicActuatorBuilder(
const std::string& builderClass,
const std::string& tagMatch,
const Yam& parameters,
tgBuildSpec& spec);
397 void addKinematicActuatorBuilder(
const std::string& builderClass,
const std::string& tagMatch,
const Yam& parameters,
tgBuildSpec& spec);
402 void addBoxBuilder(
const std::string& builderClass,
const std::string& tagMatch,
const Yam& parameters,
tgBuildSpec& spec);
407 void addSphereBuilder(
const std::string& builderClass,
const std::string& tagMatch,
const Yam& parameters,
tgBuildSpec& spec);
412 void yamlContainsOnly(
const Yam& yam,
const std::string structurePath,
const std::vector<std::string> keys);
417 void yamlNoDuplicates(
const Yam& yam,
const std::string structurePath);
427 #endif // TENSEGRITY_MODEL_H
TensegrityModel(const std::string &structurePath)
static const double rodRadius
Definition of tgSubject class.
virtual void onVisit(tgModelVisitor &visitor)
virtual void step(double timeStep)
const std::vector< tgSpringCableActuator * > & getAllActuators() const
Contains the definition of class tgModel.
virtual void setup(tgWorld &world)
Definition of class tgStructure.
virtual ~TensegrityModel()
Definition of class tgBuildSpec.