GCOP  1.0
gunicyclemanifold.h
Go to the documentation of this file.
00001 #ifndef GCOP_GUNICYCLEMANIFOLD_H
00002 #define GCOP_GUNICYCLEMANIFOLD_H
00003 
00004 #include "manifold.h"
00005 #include <limits>
00006 
00007 namespace gcop {
00008   
00009   using namespace std;
00010   using namespace Eigen;
00011   
00012   typedef Matrix<double, 5, 1> Vector5d;
00013   typedef Matrix<double, 5, 5> Matrix5d;
00014   typedef pair<Matrix3d, Vector2d> M3V2d;
00015   
00016   class GunicycleManifold : public Manifold<M3V2d, 5> {
00017   public:
00018     
00019     static GunicycleManifold& Instance();
00020     
00021     void Lift(Vector5d &dx,
00022               const M3V2d &xa,
00023               const M3V2d &xb);      
00024 
00025     void Retract(M3V2d &xb,
00026                  const M3V2d &xa,
00027                  const Vector5d &dx);    
00028 
00029     void dtau(Matrix5d &M, const Vector5d &v);
00030 
00031     void Adtau(Matrix5d &M, const Vector5d &v);
00032 
00033   private:
00034     GunicycleManifold();
00035   };
00036 }
00037 
00038 #endif