GCOP
1.0
|
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