GCOP  1.0
body2dmanifold.h
Go to the documentation of this file.
00001 #ifndef GCOP_BODY2DMANIFOLD_H
00002 #define GCOP_BODY2DMANIFOLD_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, 6, 1> Vector6d;
00013   typedef Matrix<double, 6, 6> Matrix6d;
00014   typedef pair<Matrix3d, Vector3d> Body2dState;
00015   
00016   class Body2dManifold : public Manifold<Body2dState, 6> {
00017   public:
00018     
00019     static Body2dManifold& Instance();
00020     
00021     void Lift(Vector6d &dx,
00022               const Body2dState &xa,
00023               const Body2dState &xb);      
00024 
00025     void Retract(Body2dState &xb,
00026                  const Body2dState &xa,
00027                  const Vector6d &dx);    
00028 
00029     void dtau(Matrix6d &M, const Vector6d &v);
00030 
00031     void Adtau(Matrix6d &M, const Vector6d &v);
00032 
00033   private:
00034     Body2dManifold();
00035   };
00036 }
00037 
00038 #endif