10 #ifndef EIGEN_LGSM_LIE_ALGEBRA_se3_H    11 #define EIGEN_LGSM_LIE_ALGEBRA_se3_H    28 template<
class Derived> 
    30   : 
public MatrixBase<Derived> 
    34   typedef MatrixBase<Derived> 
Base;
    65   template<class OtherDerived> EIGEN_STRONG_INLINE Derived& operator=(const MatrixBase<OtherDerived>& other);
    68   template<class OtherDerived> PlainObject 
bracket(const 
LieAlgebraBase<BaseType, OtherDerived>& a) const;
    71   inline Group 
exp(const Scalar precision = 1.e-6) const;
    75   inline Matrix<Scalar, 6, 6> dexp() const; 
    83   inline Map<so3Element> getso3Element(){ 
return Map<so3Element>(this->
derived().get().template head<3>().data()); }
    85   inline Map<const so3Element> 
getso3Element()
 const {
return  Map<const so3Element>(this->
derived().get().template head<3>().data()); }
    87   inline Map<Vector3> 
getR3Element() { 
return  Map<Vector3>(this->
derived().get().template tail<3>().data()); }
    89   inline Map<const Vector3> 
getR3Element()
 const { 
return  Map<const Vector3>(this->
derived().get().template tail<3>().data()); }
   102 template<
class Derived>
   106   this->
get() = other.
get();
   110 template<
class Derived>
   111 template<
class OtherDerived>
   121 template<
class Derived> 
   122 template<
class OtherDerived>
   125                                                                                                     OtherDerived>& a)
 const    127   return PlainObject(this->getso3Element().cross(a.getso3Element()), 
   128                      this->getso3Element().cross(a.getR3Element()) - a.getso3Element().cross(this->getR3Element()) );
   142 template<
class Derived> 
inline   144   LieAlgebraBase<Matrix<typename internal::traits<Derived>::Scalar, 6, 1>, Derived>
::exp(
const Scalar precision)
 const    146   return Group(this->getso3Element().dexp().transpose() * this->getR3Element()
   147                ,this->getso3Element().
exp());
   151 template<
class Derived>
   152 inline typename LieAlgebraBase<Matrix<typename internal::traits<Derived>::Scalar, 6, 1>, Derived >
::Matrix6     153   LieAlgebraBase<Matrix<typename internal::traits<Derived>::Scalar, 6, 1>, Derived>::dexp()
 const    155   Matrix<Scalar, 6, 6> res;
   158   res.template block<3,3>(0,0) = this->getso3Element().dexp();
   159   res.template block<3,3>(3,3) = res.template block<3,3>(0,0);
   160   res.template block<3,3>(0,3).setZero();
   161   res.template block<3,3>(3,0) = this->getso3Element().d2exp(this->getR3Element());
   182 template<
class Derived> 
   186   typedef MatrixBase<Derived>  
Base;
   210   inline Map<so3Element> getso3Element(){ 
return Map<so3Element>(this->
derived().get().template head<3>().data()); }
   212   inline Map<const so3Element> 
getso3Element()
 const {
return  Map<const so3Element>(this->
derived().get().template head<3>().data()); }
   214   inline Map<Vector3> 
getR3Element() { 
return  Map<Vector3>(this->
derived().get().template tail<3>().data()); }
   216   inline Map<const Vector3> 
getR3Element()
 const { 
return  Map<const Vector3>(this->
derived().get().template tail<3>().data()); }
   239   template<
typename Scalar>
   241     : 
public traits<LieAlgebraBase<Matrix<Scalar, 6, 1>, LieAlgebra<Matrix<Scalar, 6, 1> > > >
   247   template<
typename Scalar, 
int Options>
   248     struct traits<Map<
LieAlgebra<Matrix<Scalar, 6, 1> >, Options> > 
   249     : 
public traits<LieAlgebraDualBase<Matrix<Scalar, 6, 1>, LieAlgebraDual<Matrix<Scalar, 6, 1> > > >
   255   template<
typename Scalar, 
int Options>
   256     struct traits<Map<const 
LieAlgebra<Matrix<Scalar, 6, 1> >, Options> > 
   257     : 
public traits<LieAlgebraDualBase<Matrix<Scalar, 6, 1>, LieAlgebraDual<Matrix<Scalar, 6, 1> > > >
   265 template<
typename _Scalar> 
class LieAlgebra<Matrix<_Scalar, 6, 1> > : 
   266   public LieAlgebraBase<Matrix<_Scalar, 6, 1>, LieAlgebra<Matrix<_Scalar, 6, 1> > > 
   275   EIGEN_INHERIT_ASSIGNMENT_OPERATORS(
LieAlgebra)
   289   inline LieAlgebra(Scalar rx, Scalar ry, Scalar rz, Scalar vx, Scalar vy, Scalar vz) {
   298   inline LieAlgebra(
const typename Base::so3Element& r, 
const typename Base::Vector3& v) {
   299     this->getR3Element() = v;
   300     this->getso3Element() = r;
   328   public LieAlgebraDualBase<Matrix<_Scalar, 6, 1>, LieAlgebraDual<Matrix<_Scalar, 6, 1> > > 
   343   inline LieAlgebraDual(Scalar rx, Scalar ry, Scalar rz, Scalar vx, Scalar vy, Scalar vz) {
   344     m_coeffs << rx, ry, rz, vx, vy, vz;
   346   inline LieAlgebraDual(
const typename Base::so3Element& r, 
const typename Base::Vector3& v) {
   347     this->getR3Element() = v;
   348     this->getso3Element() = r;
 Matrix< Scalar, 3, 1 > Vector3
Map< const Vector3 > getR3Element() const 
internal::traits< Derived >::Coefficients Coefficients
LieAlgebra(const BaseType &g)
Class describing an element of a Lie Algebra. 
Map< const so3Element > getso3Element() const 
MatrixBase< Derived > Base
Map< const Vector3 > getR3Element() const 
LieAlgebraDual(Scalar rx, Scalar ry, Scalar rz, Scalar vx, Scalar vy, Scalar vz)
LieAlgebra(const typename Base::so3Element &r, const typename Base::Vector3 &v)
LieAlgebra(Scalar rx, Scalar ry, Scalar rz, Scalar vx, Scalar vy, Scalar vz)
LieAlgebraDual(const Matrix< Scalar, 6, 1 > &g)
const Derived & derived() const 
Matrix< Scalar, 6, 1 > Coefficients
LieAlgebraDualBase< Matrix< _Scalar, 6, 1 >, LieAlgebraDual< Matrix< _Scalar, 6, 1 > > > Base
Matrix< Scalar, 6, 1 > BaseType
LieAlgebraDual(const typename Base::so3Element &r, const typename Base::Vector3 &v)
Map< Matrix< Scalar, 6, 1 >, Options > Coefficients
Group exp(Scalar precision=1.e-6) const 
Matrix< Scalar, 6, 1 > BaseType
internal::traits< LieAlgebraDual< Matrix< Scalar, 6, 1 > > >::Coefficients Coefficients
LieAlgebra(const LieAlgebra &g)
LieGroup< Array< Scalar, 7, 1 > > Group
#define LIE_INHERIT_MATRIX_BASE(r, c)
Map< Vector3 > getR3Element()
LieAlgebraDual(const LieAlgebraDual &g)
internal::traits< Derived >::Group Group
Map< Vector3 > getR3Element()
LieAlgebraBase< Matrix< _Scalar, 6, 1 >, LieAlgebra< Matrix< _Scalar, 6, 1 > > > Base
Base class for all Lie Algebra class. 
LieGroup< Array< Scalar, 7, 1 > > Group
Matrix< Scalar, 6, 6 > Matrix6
Class describing an element of a Lie Group. 
MatrixBase< Derived > Base
Map< const so3Element > getso3Element() const 
internal::traits< LieAlgebra< Matrix< Scalar, 6, 1 > > >::Coefficients Coefficients
Class describing an element of a Lie algebra dual. 
Matrix< Scalar, 3, 1 > Vector3
internal::traits< Derived >::Coefficients Coefficients
PlainObject bracket(const LieAlgebraBase< BaseType, OtherDerived > &a) const 
Map< const Matrix< Scalar, 6, 1 >, Options > Coefficients
LieGroup< Array< Scalar, 7, 1 > > Group
LieAlgebra< BaseType > PlainObject