00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*! \file triadObserver.h 00003 * \brief Header file for triad observer 00004 * \author $Author: jayhawk_hokie $ 00005 * \version $Revision: 1.5 $ 00006 * \date $Date: 2007/07/24 08:45:27 $ 00007 *////////////////////////////////////////////////////////////////////////////////////////////////// 00008 /*! 00009 */ 00010 ////////////////////////////////////////////////////////////////////////////////////////////////// 00011 00012 #ifndef __SSSL_TRIAD_OBSERVER_H__ 00013 #define __SSSL_TRIAD_OBSERVER_H__ 00014 00015 00016 #include <string> 00017 #include <iostream> 00018 #include <cmath> 00019 #include <sstream> 00020 #include <ctime> 00021 #include "Sensors/DMUAccelerometer.h" 00022 #include "Sensors/DMURateGyro.h" 00023 #include "rotation/Rotation.h" 00024 #include "matrix/Matrix.h" 00025 #include "Sensors/Magnetometer.h" 00026 #include "Base/Whorl.h" 00027 #include "Observer.h" 00028 #include "dsacssinterface.h" 00029 00030 extern "C"{ 00031 #include "Hardware/satctl.h" 00032 #include "Hardware/common.h" 00033 } 00034 00035 using namespace std; 00036 00037 class triadObserver : public Observer 00038 { 00039 public: 00040 ////////////////////////////////// 00041 // Constructors/Deconstructors 00042 ////////////////////////////////// 00043 00044 triadObserver( ); 00045 00046 triadObserver( TiXmlHandle handle, Whorl* ptr_whorl ); 00047 00048 virtual ~triadObserver( ); 00049 00050 int Initialize( ); 00051 00052 int Run( ); 00053 00054 void Parse( TiXmlHandle handle ); 00055 00056 Matrix GetAttitude( ); 00057 00058 void SetMagnetometerBodyVector( Vector _magnetometer ); 00059 void SetMagnetometerInertialVector( Vector _magnetometer ); 00060 void SetAccelerometerBodyVector( Vector _accelerometer ); 00061 void SetAccelerometerInertialVector( Vector _accelerometer ); 00062 00063 private: 00064 Vector m_magBody; 00065 00066 Vector m_2magBodyPrevious; 00067 00068 Vector m_accelBody; 00069 Vector m_ratesBody; // body-fixed measurements 00070 00071 00072 Whorl* m_whorl; // pointer to a whorl object 00073 00074 // inertial vectors 00075 Vector m_magInertial; 00076 Vector m_accelInertial; // inertial measurements 00077 00078 Vector m_AngularAccel; 00079 00080 Vector m_rsensor; 00081 }; 00082 00083 #endif 00084 00085 // Do not change the comments below - they will be added automatically by CVS 00086 /***************************************************************************** 00087 * $Log: triadObserver.h,v $ 00088 * Revision 1.5 2007/07/24 08:45:27 jayhawk_hokie 00089 * Replaced matrix pointers. 00090 * 00091 * Revision 1.4 2007/05/29 19:02:15 jayhawk_hokie 00092 * *** empty log message *** 00093 * 00094 * Revision 1.3 2007/03/27 19:15:44 jayhawk_hokie 00095 * Updated Class. 00096 * 00097 * Revision 1.2 2007/03/21 20:12:28 jayhawk_hokie 00098 * Update of the Triad Observer Class 00099 * 00100 * Revision 1.1 2007/01/12 22:11:57 bwilliam 00101 * Initial submission. 00102 * 00103 ******************************************************************************/ 00104