00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __ORBIT_OBSERVER_H__
00013 #define __ORBIT_OBSERVER_H__
00014
00015
00016 #include <stdlib.h>
00017 #include <unistd.h>
00018 #include <string.h>
00019 #include <stdio.h>
00020 #include <iostream.h>
00021
00022
00023 #include <rotation/Rotation.h>
00024 #include <matrix/Matrix.h>
00025
00026
00027 #include <orbit/Orbit.h>
00028 #include <orbit/OrbitState.h>
00029 #include <orbit/orbitstaterep/Keplerian.h>
00030
00031
00032 #include <orbit/orbitstaterep/MappingMeanOsculatingOrbitElements.h>
00033
00034
00035 #include <Sensors/AshtechG12_GPS_PhysicalDevice.h>
00036
00037
00038 #include<Base/Whorl.h>
00039
00040
00041
00042 #include "Comm/ClientSocket.h"
00043 #include "Comm/SocketException.h"
00044
00045
00046 #include "dsacssinterface.h"
00047
00048 using namespace std;
00049
00050 using namespace O_SESSAME;
00051
00052
00053 class OrbitObserver
00054 {
00055
00056 public:
00057
00058 OrbitObserver( );
00059
00060 virtual ~OrbitObserver( );
00061
00062
00063
00064
00065
00066
00067 virtual int Run() = 0;
00068
00069
00070 virtual int Initialize() = 0;
00071
00072
00073 Matrix DirectionCosMatrix1Axis( double _angle );
00074
00075 Matrix DirectionCosMatrix2Axis( double _angle );
00076
00077 Matrix DirectionCosMatrix3Axis( double _angle );
00078
00079 Vector WGS2ECEFPosition( double _latitude, double _longitude, double _altitude );
00080
00081 Vector NED2ECEFVelocity( double _latitude, double _longitude, double _altitude,
00082 double _velocityNorth, double _velocityEast, double _velocityDown );
00083
00084 Vector WGS842ECEF( double _latitude, double _longitude, double _altitude,
00085 double _velocityNorth, double _velocityEast, double _velocityDown );
00086
00087 Vector ECEFPosition2WGS84( double _x, double _y, double _z );
00088
00089 Vector ECEF2NEDVelocity( double _latitude, double _longitude, double _altitude,
00090 double _Vx, double _Vy, double _Vz );
00091
00092 Vector ECEF2WGS84( double _x, double _y, double _z, double _Vx, double _Vy, double _Vz );
00093
00094 Vector ECEF2ECI( CAMdoubleVector _ECEFVector, double _jDay );
00095
00096 Vector ECI2ECEF( CAMdoubleVector _ECIVector, double _jDay );
00097
00098 double lat_lon( double latlon, char sector );
00099
00100 void TangentPlaneState( AshtechG12_GPS_PhysicalDevice::Position recPos, CAMdoubleVector &_WGS84Vector );
00101
00102 void ECI2COE(Vector ECI, Vector VECI, Keplerian& myCOE, double& a, double& e, double& i, double& Lon, double& Arg, double& tru);
00103
00104 protected:
00105
00106 };
00107
00108 #endif
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122