00001 00002 // 00003 // Title : ControlInformation.h 00004 // Project : 00005 // Created : Mon Dec 23 11:09:55 2002 00006 // Author : Chalongrath Pholsiri 00007 // Platforms : All 00008 // Copyright : The University of Texas at Austin 00009 // All Rights Reserved. 00010 // Access : Company Confidential 00011 // Purpose : Declaration of ControlInformation class 00012 // 00013 //---------------------------------------------------------------------------- 00014 // 00015 // Classes: 00016 // <none> 00017 // 00018 // Global Functions: 00019 // <none> 00020 // 00021 // Global Variables: 00022 // <none> 00023 // 00024 //---------------------------------------------------------------------------- 00025 // 00026 // $Revisions$ 00027 // 00028 // $Log: ControlInformation.h,v $ 00029 // Revision 1.3 2005/03/14 21:51:01 pmarch 00030 // Added to namespace OSCAR and removed "RR" from front of class names. 00031 // 00032 // Revision 1.2 2004/07/26 22:10:20 chetan 00033 // Made changes to compile with Warning Level 4 and also under the latest C++ standard 00034 // 00035 // Revision 1.1 2004/06/01 21:59:34 dinesh 00036 // Workspace for the Control Systems Domain 00037 // 00038 // 00040 00041 #ifndef ControlInformation_hpp 00042 #define ControlInformation_hpp 00043 00044 #include "Math/Vector.h" 00045 #include "Math/Matrix.h" 00046 00048 namespace OSCAR { 00049 00050 // This class is similar to RRInformation for it serves as to eliminate repeated calculations of 00051 // some important elements used in control algorithms. 00052 00053 class ControlInformation 00054 { 00055 public: 00056 ControlInformation(unsigned int dof, unsigned int noOutputs); 00057 ~ControlInformation(); 00058 00059 Vector *gravityTorques; // n-vector of gravity torques 00060 Vector *velocityTorques; // n-vector of velocity torques 00061 Vector *velInducedAcc; // JdotQdot term 00062 00063 Matrix *jacobian; // m X n EEF Jacobian 00064 Matrix *jacobianTranspose; // transpose of Jacobian 00065 Matrix *jacobianInverse; // inverse or pseudoinverse of Jacobian 00066 Matrix *inertiaJacobianInverse; // inertia-weighted pseudoinverse of Jacobian 00067 Matrix *inertia; // n X n inertia matrix (M) 00068 Matrix *inertiaInverse; // inverse of inertia matrix (M^-1) 00069 Matrix *operationalInertia; // m X m operational space inertia matrix (JM^-1Jt)^-1 00070 00071 // the followings are for null space calculations and valid only for redundant robots 00072 Matrix *nullProjector; // n X n null space projector (I - J# J) 00073 // J# could be either jacobianInverse of inertiaJacobianInverse 00074 // depending on the algorithm 00075 00076 Matrix *nullJacobian; // r X n null space Jacobian matrix 00077 Matrix *minNullProjector; // n X r minimal set null space projector 00078 Matrix *nullJacobianDot; // time derivative of null space Jacobian matrix 00079 Matrix *prevNullJacobian; 00080 00081 double timeStep; 00082 }; 00083 00084 } 00085 #endif // ControlInformation_hpp 00086
| RRG Homepage | OSCAR Overview | OSCAR Tutorials | Simulations |