GCOP
1.0
|
00001 #ifndef GCOP_UUVMANIFOLD_H 00002 #define GCOP_UUVMANIFOLD_H 00003 00004 #include "manifold.h" 00005 00006 namespace gcop { 00007 00008 using namespace std; 00009 using namespace Eigen; 00010 00011 typedef Matrix<double, 6, 1> Vector6d; 00012 typedef Matrix<double, 9, 1> Vector9d; 00013 typedef Matrix<double, 12, 1> Vector12d; 00014 typedef Matrix<double, 12, 12> Matrix12d; 00015 00016 struct UuvState { 00017 UuvState() {g.setIdentity(); v.setZero(); } 00018 virtual ~UuvState() {}; 00019 00020 Matrix4d g; 00021 Vector6d v; 00022 }; 00023 00024 class UuvManifold : public Manifold<UuvState, 12> { 00025 00026 public: 00027 static UuvManifold& Instance(); 00028 00029 void Lift(Vector12d &v, 00030 const UuvState &xa, 00031 const UuvState &xb); 00032 00033 void Retract(UuvState &xb, 00034 const UuvState &xa, 00035 const Vector12d &v); 00036 00037 void dtau(Matrix12d &M, const Vector12d &v); 00038 00039 void Adtau(Matrix12d &M, const Vector12d &v); 00040 00041 private: 00042 UuvManifold(); 00043 }; 00044 } 00045 00046 00047 #endif