GCOP
1.0
|
00001 #ifndef GCOP_SE3_H 00002 #define GCOP_SE3_H 00003 00004 #include "group.h" 00005 #include "so3.h" 00006 00007 namespace gcop { 00008 00009 using namespace Eigen; 00010 00011 typedef Matrix<double, 6, 1> Vector6d; 00012 typedef Matrix<double, 7, 1> Vector7d; 00013 typedef Matrix<double, 4, 4> Matrix4d; 00014 typedef Matrix<double, 6, 6> Matrix6d; 00015 00016 class SE3 : public Group<6, 4> { 00017 public: 00018 00019 SE3(); 00020 00021 static SE3& Instance(); 00022 00023 void inv(Matrix4d &gi, const Matrix4d &g) const; 00024 00025 void hat(Matrix4d &vh, const Vector6d &v) const; 00026 00027 void hatinv(Vector6d &v, const Matrix4d &vh) const; 00028 00029 void Tg(Matrix6d &M, const Matrix4d &g) const; 00030 00031 void Ad(Matrix6d &M, const Matrix4d &g) const; 00032 00033 void ad(Matrix6d &M, const Vector6d &v) const; 00034 00035 void adt(Matrix6d &M, const Vector6d &mu) const; 00036 00037 void adinv(Vector6d& v, const Matrix6d& m) const; 00038 00039 void exp(Matrix4d &g, const Vector6d &v) const; 00040 00041 void log(Vector6d& v, const Matrix4d& g) const; 00042 00043 // void plog(Vector6d& v, const Matrix4d& m) const; 00044 00045 void cay(Matrix4d& g, const Vector6d &v) const; 00046 00047 // use the default cayinv 00048 // void cayinv(Vector3d& v, const Matrix4d& m) const; 00049 00050 void dcay(Matrix6d& M, const Vector6d& v) const; 00051 00052 void dcayinv(Matrix6d& M, const Vector6d& v) const; 00053 00054 void tlnmu(Vector6d& mup, const Vector6d& v, const Vector6d &mu) const; 00055 00056 void tln(Matrix6d &M, const Vector6d &v) const; 00057 00058 void q2g(Matrix4d &g, const Vector6d &q) const; 00059 00060 void quatxyz2g(Matrix4d &g, const Vector7d &wquatxyz) const; 00061 00062 void g2quatxyz(Vector7d &wquatxyz, const Matrix4d &g) const; 00063 00064 void g2q(Vector6d &q, const Matrix4d &g) const; 00065 00066 void rpyxyz2g(Matrix4d &g, const Vector3d &rpy, const Vector3d &xyz) const; 00067 00068 void g2rpyxyz(Vector3d &rpy, Vector3d &xyz, const Matrix4d &g) const; 00069 00070 00071 double tol; 00072 00073 SO3 &so3; 00074 }; 00075 } 00076 00077 #endif