GCOP  1.0
uuvmanifold.h
Go to the documentation of this file.
00001 #ifndef GCOP_UUVMANIFOLD_H
00002 #define GCOP_UUVMANIFOLD_H
00003 
00004 #include "manifold.h"
00005 
00006 namespace gcop {
00007   
00008   using namespace std;
00009   using namespace Eigen;
00010 
00011   typedef Matrix<double, 6, 1> Vector6d;
00012   typedef Matrix<double, 9, 1> Vector9d;
00013   typedef Matrix<double, 12, 1> Vector12d;
00014   typedef Matrix<double, 12, 12> Matrix12d;
00015   
00016   struct UuvState {
00017     UuvState() {g.setIdentity(); v.setZero(); }
00018     virtual ~UuvState() {};
00019 
00020     Matrix4d g;  
00021     Vector6d v;  
00022   };
00023   
00024   class UuvManifold : public Manifold<UuvState, 12> {
00025     
00026   public:
00027     static UuvManifold& Instance();
00028 
00029     void Lift(Vector12d &v,
00030               const UuvState &xa,
00031               const UuvState &xb);      
00032 
00033     void Retract(UuvState &xb, 
00034                  const UuvState &xa,
00035                  const Vector12d &v);
00036 
00037     void dtau(Matrix12d &M, const Vector12d &v);
00038 
00039     void Adtau(Matrix12d &M, const Vector12d &v);
00040 
00041   private:
00042     UuvManifold();
00043   };  
00044 }
00045 
00046 
00047 #endif