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

PhysicalTiltSensor.cpp

Go to the documentation of this file.
00001 //////////////////////////////////////////////////////////////////////////////////////////////////
00002 /*! \file PhysicalTiltSensor.cpp
00003 *  \brief Implementation of the PhysicalTiltSensor class
00004 *  \author $Author: bstreetman $
00005 *  \version $Revision: 1.2 $
00006 *  \date    $Date: 2004/05/04 18:33:34 $
00007 *//////////////////////////////////////////////////////////////////////////////////////////////////
00008 /*! 
00009 */
00010 //////////////////////////////////////////////////////////////////////////////////////////////////
00011 
00012 #include "PhysicalTiltSensor.h"
00013 #include "utils/Time.h"
00014 #include <fstream.h>
00015 
00016 PhysicalTiltSensor::PhysicalTiltSensor()
00017 {
00018         m_fd = -1;
00019 }
00020 
00021 PhysicalTiltSensor::~PhysicalTiltSensor()
00022 {
00023         close(m_fd);
00024 }
00025 
00026 int PhysicalTiltSensor::Initialize()
00027 {
00028         if (m_fd < 0) { // g_fd has NOT been set yet, then init the daisychain
00029                 char *stringPort;
00030                 stringPort = new char[80];
00031                 sprintf(stringPort,"/dev/tty%s",m_Port.c_str());
00032         
00033                 init_serial(stringPort,B9600,&m_fd);
00034                 cout << stringPort << "   fd: " << m_fd << endl;
00035         
00036                 char *testCommand;
00037                 testCommand = new char[80];
00038                 sprintf(testCommand, "R");
00039                 say(m_fd, testCommand);
00040                 usleep(500000);
00041                 hear(m_fd, testCommand, 15, 0, 10000, '\r');
00042                 cout << "Reset Returned:  " << testCommand << endl;
00043                 
00044         }
00045                 
00046         return 0;
00047 }
00048 
00049 Vector PhysicalTiltSensor::GetSensorToBodyQuaternion()
00050 {
00051         Vector qwe(3);
00052         return qwe;
00053 }
00054 
00055 void PhysicalTiltSensor::GetAngles(double& pitch, double& roll, double& t)
00056 {
00057         char *testCommand;
00058         testCommand = new char[80];
00059         sprintf(testCommand, "G");
00060         say(m_fd, testCommand);
00061         
00062         t = Now();
00063         usleep(1000000);
00064         char *Results= new char[80];
00065         //Results = new char[80];
00066         int errval;
00067         errval = hear(m_fd, Results, 15, 6, 100000, '\r');
00068         //cout << "errval:  " << errval << endl;
00069         
00070         pitch = ((int)256*(int) Results[1] + (int) Results[2])*0.00275415;//convert from hardware value to degrees
00071         pitch = pitch*3.14159265/180.0;//convert degress to rad
00072         roll = ((int)256*Results[3] + (int) Results[4])*0.00275415;
00073         roll = roll*3.14159265/180.0;
00074 
00075         if(pitch > 1.30900){
00076                 pitch = 9999;
00077         }       
00078         if(roll > 1.30900){
00079                 roll = 9999;
00080         }       
00081                 
00082         return;
00083 }
00084 
00085 int PhysicalTiltSensor::GetFD()
00086 {
00087         return m_fd;
00088 }
00089 
00090 void PhysicalTiltSensor::SetPort(string Port)
00091 {
00092         m_Port = Port;
00093 }
00094 
00095 Measurement PhysicalTiltSensor::GetMeasurement()
00096 {
00097         Measurement M;
00098         return M;
00099 }

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