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