Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages | Examples

SpeedTest.cpp

Go to the documentation of this file.
00001 #include "MomentumWheel.h"
00002 #include <fstream.h>
00003 #include "utils/Time.h"
00004 
00005 int main()
00006 {
00007         //Sample Program for new wheel initialization and
00008         // velocity reading procedures.
00009         
00010         
00011         // Create 3 momentum wheels
00012         MomentumWheel WheelX;
00013         MomentumWheel WheelY;
00014         MomentumWheel WheelZ;
00015         
00016         //Set the communications port for each wheel
00017         // can be done manually or in a config file
00018         WheelX.SetPort("USB0");
00019         WheelY.SetPort("USB1");
00020         WheelZ.SetPort("USB2");
00021         
00022         // Each wheel needs to be initialized individually
00023         WheelX.Initialize();
00024         WheelY.Initialize();
00025         WheelZ.Initialize();
00026 
00027         //Send a command to the wheels
00028         WheelX.SetWheelTorque(0.15);
00029         WheelY.SetWheelTorque(0.25);
00030         WheelZ.SetWheelTorque(0.35);
00031 
00032         sleep(10);
00033         double epoch = Now();
00034 
00035         // Run wheel.StartSpeedQuery() for every wheel you need to have speeds of.
00036         // The current configuration reads a speed every 0.75 sec, so the program 
00037         // performs best if the threads created by StartSpeedQuery() are staggered
00038         // over that time.
00039         WheelX.StartSpeedQuery();
00040         usleep(250000);
00041         WheelY.StartSpeedQuery();
00042         usleep(250000);
00043         WheelZ.StartSpeedQuery();
00044         
00045         ofstream outfile("QuerySpeed.txt", ios::out);
00046         outfile << "# xspeed xstamp yspeed ystamp zspeed zstamp looptime elapsed\n";
00047         int brett = 0;
00048         double stampx;
00049         double stampy;
00050         double stampz;
00051         double speedx;
00052         double speedy;
00053         double speedz;
00054         //double epoch = Now();
00055         
00056         while(brett < 20)       
00057         {
00058                 usleep(1000000);
00059                 tick();
00060 
00061                 // To retrieve the most current speed of the wheel run wheel.GetWheelSpeed(speed, time)
00062                 // where speed is set to the most recent wheel speed, and time is set to the timestamp
00063                 // on that measurement.
00064                 WheelX.GetWheelSpeed(speedx,stampx);
00065                 WheelY.GetWheelSpeed(speedy,stampy);
00066                 WheelZ.GetWheelSpeed(speedz,stampz);
00067                 outfile << brett << " " <<  speedx  << " " << stampx-epoch  << " ";
00068                 outfile << speedy  << " " << stampy-epoch  << " " << speedz << " " << stampz-epoch << " ";
00069                 
00070                 outfile << tock() << " " << Now()-epoch << endl;
00071                 
00072                 brett++;
00073 
00074         }
00075 
00076         return 0;
00077 }

Generated on Wed Sep 5 12:54:25 2007 for DSACSS Operational Code by  doxygen 1.3.9.1