5 #ifndef __pinocchio_lie_group_generic_hpp__
6 #define __pinocchio_lie_group_generic_hpp__
8 #include "pinocchio/multibody/liegroup/liegroup-base.hpp"
9 #include "pinocchio/multibody/liegroup/liegroup-variant-visitors.hpp"
13 template<
typename LieGroupCollection>
14 struct LieGroupGenericTpl;
16 template<
typename LieGroupCollection>
19 typedef typename LieGroupCollection::Scalar Scalar;
22 Options = LieGroupCollection::Options,
28 template<
typename LieGroupCollection>
31 , LieGroupCollection::LieGroupVariant
33 typedef typename LieGroupCollection::LieGroupVariant Base;
34 typedef typename LieGroupCollection::LieGroupVariant LieGroupVariant;
36 typedef typename LieGroupCollection::Scalar Scalar;
39 Options = LieGroupCollection::Options
42 template<
typename LieGroupDerived>
44 : Base(lg_base.derived())
48 template<
typename LieGroup>
57 const LieGroupVariant & toVariant()
const
59 return static_cast<const LieGroupVariant &
>(*this);
62 LieGroupVariant & toVariant()
64 return static_cast<LieGroupVariant &
>(*this);
69 return boost::apply_visitor(
70 visitor::LieGroupEqual<Scalar, Options>(), toVariant(), other.toVariant());
75 return ::pinocchio::nq(*
this);
79 return ::pinocchio::nv(*
this);
84 return isEqual_impl(other);
89 return this->isDifferent_impl(other);
92 std::string name()
const
94 return LieGroupNameVisitor::run(*
this);
Main pinocchio namespace.
Common traits structure to fully define base classes for CRTP.