GCOP
1.0
|
00001 #ifndef GCOP_BODY3DMANIFOLD_H 00002 #define GCOP_BODY3DMANIFOLD_H 00003 00004 #include "manifold.h" 00005 00006 namespace gcop { 00007 00008 using namespace std; 00009 using namespace Eigen; 00010 00011 typedef Matrix<double, 9, 1> Vector9d; 00012 typedef Matrix<double, 12, 1> Vector12d; 00013 typedef Matrix<double, 12, 12> Matrix12d; 00014 typedef pair<Matrix3d, Vector9d> Body3dState; 00015 00016 class Body3dManifold : public Manifold<Body3dState, 12> { 00017 00018 public: 00019 static Body3dManifold& Instance(); 00020 00021 void Lift(Vector12d &v, 00022 const Body3dState &xa, 00023 const Body3dState &xb); 00024 00025 void Retract(Body3dState &xb, 00026 const Body3dState &xa, 00027 const Vector12d &v); 00028 00029 void dtau(Matrix12d &M, const Vector12d &v); 00030 00031 void Adtau(Matrix12d &M, const Vector12d &v); 00032 00033 private: 00034 Body3dManifold(); 00035 }; 00036 } 00037 00038 00039 #endif