00001 /************************************************************************************************/ 00002 /*! \file Thruster.h 00003 * \brief The Thruster class provides the interface for h/w thrusters. 00004 * \author $Author: cakinli $ 00005 * \version $Revision: 1.5 $ 00006 * \date $Date: 2005/02/25 18:40:52 $ 00007 ************************************************************************************************/ 00008 /*! 00009 * 00010 ************************************************************************************************/ 00011 00012 #ifndef __SSSL_THRUSTER_H__ 00013 #define __SSSL_THRUSTER_H__ 00014 00015 #include <Base/Actuator.h> 00016 #include <matrix/Matrix.h> 00017 #include <Actuators/PhysicalThruster.h> 00018 #include <Utils/CfgParse.h> 00019 #include <Hardware/DAQCard.h> 00020 00021 using namespace std; 00022 00023 class Thruster : public Actuator 00024 { 00025 public: 00026 // Contructors/Deconstructors 00027 /*! Default Constructor */ 00028 Thruster(); 00029 00030 /*! Constructor which accepts config parsing info */ 00031 Thruster(cfgBody& cfgdat); 00032 00033 /*! Deconstructor */ 00034 // virtual ~Thruster(); 00035 ~Thruster(); 00036 00037 // Facilitators 00038 int Stop(); 00039 00040 /*! Fire the thruster */ 00041 void StartFire(BYTE signal); 00042 /*! Default Const(); */ 00043 00044 void StopFire(); 00045 00046 // Mutators 00047 int Initialize(); 00048 // virtual int Initialize(); 00049 // virtual int Initialize(const string& _sInitString); 00050 // virtual int Deinitialize(); 00051 00052 /*! Set the desired thrust level (assumed steady state level with time > 600 ms) */ 00053 void SetThrustLevel(); 00054 00055 /*! Set the unit vector which points in the direction of the applied external force */ 00056 //void SetThrustVector(const Vector& ThrustVect); 00057 00058 /*! Set the number used to reference the thruster */ 00059 //void SetThrusterNumber(const int ThrusterNumber); 00060 00061 /*! Set the position vector from the CG to the thruster */ 00062 //void SetPositionVector(const Vector& PositionVect); 00063 00064 // Inspectors 00065 00066 /*! Get the unit vector which points in the direction of the applied external force */ 00067 //Vector GetThrustVector() const; 00068 00069 /*! Get the thruster position vector */ 00070 //Vector GetPositionVector() const; 00071 00072 /*! Get the thruster number */ 00073 //int GetThrusterNumber() const; 00074 00075 /*! Get the steady state thrust magnitude */ 00076 double GetThrustLevel() const; 00077 00078 /* Get the air pressure setting */ 00079 double GetCurrentPressure() const; 00080 00081 protected: 00082 00083 00084 private: 00085 00086 /*! The physical thruster object */ 00087 PhysicalThruster m_PhysicalThruster; 00088 00089 /*! The unit vector which points in the direction of the applied external force */ 00090 //Vector m_ThrustVector; 00091 00092 /*! The vector indicating the position of the thruster */ 00093 //Vector m_PositionVector; 00094 00095 /*! The current pressure level of the air supply */ 00096 double m_CurrentAirPressure; 00097 00098 /*! The current thrust magnitude, determined by the air pressure */ 00099 double m_CurrentThrustMagnitude; 00100 00101 /*! The index number used to reference the thruster */ 00102 int m_ThrusterNumber; 00103 00104 /*! Pointer to an instance of the DAQ card */ 00105 DAQCard* m_DAQCard; 00106 00107 }; 00108 00109 #endif 00110 // Do not change the comments below - they will be added automatically by CVS 00111 /***************************************************************************** 00112 * $Log: Thruster.h,v $ 00113 * Revision 1.5 2005/02/25 18:40:52 cakinli 00114 * Created Makefiles and organized include directives to reduce the number of 00115 * include paths. Reorganized libraries so that there is now one per source 00116 * directory. Each directory is self-contained in terms of its Makefile. 00117 * The local Makefile in each directory includes src/config.mk, which has all 00118 * the definitions and general and pattern rules. So at most, to see what 00119 * goes into building a target, a person needs to examine the Makefile in 00120 * that directory, and ../config.mk. 00121 * 00122 * Revision 1.4 2004/06/15 14:58:45 shaigunjoe 00123 * Added changes for digital signal 00124 * 00125 * Revision 1.3 2004/05/27 19:59:06 shoemaker 00126 * Made changes for analog output thruster control 00127 * 00128 * Revision 1.2 2003/07/04 14:06:43 simpliciter 00129 * Added newline at end of file. 00130 * 00131 * Revision 1.1.1.1 2003/06/06 18:44:15 simpliciter 00132 * Initial submission. 00133 * 00134 * 00135 ******************************************************************************/