00001 ////////////////////////////////////////////////////////////////////////////////////////////////// 00002 /*! \file AttitudeModels.cpp 00003 * \brief Class for various spacecraft attitude models 00004 * \author $Author: jayhawk_hokie $ 00005 * \version $Revision: 1.2 $ 00006 * \date $Date: 2007/07/24 08:37:59 $ 00007 *////////////////////////////////////////////////////////////////////////////////////////////////// 00008 /*! 00009 */ 00010 ////////////////////////////////////////////////////////////////////////////////////////////////// 00011 00012 00013 #include "AttitudeModels.h" 00014 00015 using namespace std; 00016 using namespace O_SESSAME; 00017 00018 00019 /* Constructors */ 00020 AttitudeModels::AttitudeModels( ) 00021 { 00022 } 00023 00024 /* Destructor */ 00025 AttitudeModels::~AttitudeModels( ) 00026 { 00027 00028 } 00029 00030 void AttitudeModels::MRPKinematic( ModifiedRodriguezParameters _mrp, Vector _angularVelocity, ModifiedRodriguezParameters &_mrpRate ) 00031 { 00032 Vector mrpRate = ( ( (1-pow(norm2(_mrp),2))*eye(3) + 2*skew(_mrp) + 2*_mrp*(~_mrp) )*_angularVelocity/4 ); 00033 _mrpRate = ModifiedRodriguezParameters( mrpRate ); 00034 return; 00035 } 00036 00037 void AttitudeModels::QuaternionKinematic( Quaternion _quaternion, Vector _angularVelocity, Quaternion &_quaternionRate ) 00038 { 00039 /* quaternion kinematic differential equation (vector form) */ 00040 _quaternionRate( _(1,3) ) = 0.5 * ( _quaternion(4) * _angularVelocity - skew( _angularVelocity ) * _quaternion( _(1,3) ) ); 00041 _quaternionRate( _(4,4) ) = (-0.5 * ~_angularVelocity * _quaternion( _(1,3) ) ) ; 00042 00043 /* Euler Equation */ 00044 //Matrix invInertiaMatrix = matrixInv3x3( inertiaMatrix ); 00045 //stateDot( _(5,7) ) = invInertiaMatrix*( - skew(angularRate) * inertiaMatrix * angularRate ); 00046 return; 00047 } 00048 00049 00050 00051 // Do not change the comments below - they will be added automatically by CVS 00052 /***************************************************************************** 00053 * $Log: AttitudeModels.cpp,v $ 00054 * Revision 1.2 2007/07/24 08:37:59 jayhawk_hokie 00055 * Modified Kinematic Equations. 00056 * 00057 * Revision 1.1 2007/06/19 19:55:08 jayhawk_hokie 00058 * Initial submission. Added MRP and Quaternion Kinematic Equations. 00059 * 00060 * 00061 * 00062 * 00063 ******************************************************************************/ 00064