NTRT Simulator  Version: Master
 All Classes Namespaces Files Functions Variables Typedefs Friends Pages
AppTetraSpineStatic.cpp
1 /*
2  * Copyright © 2012, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The NASA Tensegrity Robotics Toolkit (NTRT) v1 platform is licensed
7  * under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * http://www.apache.org/licenses/LICENSE-2.0.
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
15  * either express or implied. See the License for the specific language
16  * governing permissions and limitations under the License.
17 */
18 
28 // This application
29 #include "TetraSpineStaticModel.h"
30 #include "TetraSpineStaticModel_hf.h"
31 #include "SerializedSpineControl.h"
32 // This library
33 #include "core/tgModel.h"
34 #include "core/tgSimView.h"
35 #include "core/tgSimViewGraphics.h"
36 #include "core/tgSimulation.h"
37 #include "core/tgWorld.h"
39 // The C++ Standard Library
40 #include <iostream>
41 
49 int main(int argc, char** argv)
50 {
51  std::cout << "AppTetraSpineSerial" << std::endl;
52 
53  // First create the world
54  const tgWorld::Config config(981); // gravity, cm/sec^2
55  tgWorld world(config);
56 
57  // Second create the view
58  const double stepSize = 1.0/1000.0; // Seconds
59  const double renderRate = 1.0/60.0; // Seconds
60  tgSimView view(world, stepSize, renderRate);
61 
62  // Third create the simulation
63  tgSimulation simulation(view);
64 
65  // Fourth create the models with their controllers and add the models to the
66  // simulation
67  const int segments = 3;
68  TetraSpineStaticModel_hf* myModel =
69  new TetraSpineStaticModel_hf(segments);
70 
71  /* Required for setting up serialization file input/output.
72  * But overwritten in SerializedSpineControl...
73  * */
74  const std::string suffix((argc > 1) ? argv[1] : "controlVars.json");
75 
76  SerializedSpineControl* const myControl =
77  new SerializedSpineControl(suffix);
78 
79  myModel->attach(myControl);
80  /*
81  tgCPGLogger* const myLogger =
82  new tgCPGLogger("logs/CPGValues.txt");
83 
84  myControl->attach(myLogger);
85  */
86  simulation.addModel(myModel);
87 
88  int i = 0;
89  while (i < 1)
90  {
91  simulation.run(60000);
92  //simulation.reset();
93  i++;
94  }
95 
97 
101  #if (0)
102  delete myControl;
103  #endif
104  //Teardown is handled by delete, so that should be automatic
105  return 0;
106 }
int main(int argc, char **argv)
A Sine Wave controller for TetraSpine using JSON serialization.
Contains the definition of class tgSimulation.
Contains the definition of class tgModel.
Contains the definition of class tgSimViewGraphics.
Contains the definition of class tgWorld $Id$.
Contains the definition of class tgSimView.
Contains the definition of interface class tgCPGLogger.
void attach(tgObserver< T > *pObserver)
Definition: tgSubject.h:91
Tetraspine, configured for learning in the NTRT simulator.