34requires (Eigen::Index
dof) {
79 !std::is_convertible_v<typename traits::lie<G>::Scalar,
double> ||
80 requires (
const G & g) {
85 requires (
const G & g) {
106 template<
typename NewScalar>
115 template<
typename NewScalar>
121 template<
typename Derived>
122 static inline PlainObject rplus(
const G & g,
const Eigen::MatrixBase<Derived> & a)
127 template<LieGroup Go = G>
128 static inline Eigen::Matrix<Scalar, Dof, 1>
rminus(
const G & g1,
const Go & g2)
194template<LieGroup G,
typename Arg>
203template<
LieGroup G,
typename Arg,
typename... Args>
221template<LieGroup G,
typename Arg>
246template<LieGroup G,
typename Arg>
257template<LieGroup G,
typename Arg>
266template<LieGroup G,
typename Arg>
275template<LieGroup G,
typename Arg>
284template<LieGroup G,
typename Arg>
293template<LieGroup G,
typename Arg>
304template<LieGroup G,
typename Derived>
313template<LieGroup G, LieGroup Go>
322template<LieGroup G,
typename Derived>
325 return dr_exp<G>(-a);
331template<LieGroup G,
typename Derived>
334 return dr_expinv<G>(-a);
340template<LieGroup G,
typename Derived>
343 return -d2r_exp<G>(-a);
349template<LieGroup G,
typename Derived>
352 return -d2r_expinv<G>(-a);
Class-external Lie group interface defined through the traits::lie trait class.
Tangent< G > lminus(const G &g1, const Go &g2)
Left-minus.
TangentMap< G > Ad(const G &g)
Group adjoint .
PlainObject< G > Random()
Random element in Lie group with static Dof.
TangentMap< G > dl_expinv(const Eigen::MatrixBase< Derived > &a)
Left Jacobian of exponential map inverse.
Hessian< G > d2r_exp(Arg &&a)
Right Hessian of exponential map.
bool isApprox(const G &g, Arg &&a, typename traits::lie< G >::Scalar eps=Eigen::NumTraits< typename traits::lie< G >::Scalar >::dummy_precision())
Check if two group elements are approximately equal.
Tangent< G > log(const G &g)
Group logarithm.
TangentMap< G > dr_exp(Arg &&a)
Right Jacobian of exponential map.
Hessian< G > d2l_exp(const Eigen::MatrixBase< Derived > &a)
Left Hessian of exponential map.
TangentMap< G > dl_exp(const Eigen::MatrixBase< Derived > &a)
Left Jacobian of exponential map.
Hessian< G > d2l_expinv(const Eigen::MatrixBase< Derived > &a)
Left Hessian of exponential map inverse.
PlainObject< G > composition(const G &g, Arg &&a)
Group binary composition.
PlainObject< G > exp(Arg &&a)
Lie algebra exponential.
PlainObject< G > lplus(const G &g, const Eigen::MatrixBase< Derived > &a)
Left-plus.
Hessian< G > d2r_expinv(Arg &&a)
Right Hessian of exponential map inverse.
PlainObject< G > Identity()
Identity in Lie group with static Dof.
TangentMap< G > ad(Arg &&a)
Lie algebra adjoint .
PlainObject< G > inverse(const G &g)
Group inverse.
TangentMap< G > dr_expinv(Arg &&a)
Right Jacobian of exponential map inverse.
PlainObject< M > Default()
Default-initialized Manifold with static dof.
Eigen::Matrix< Scalar< M >, Dof< M >,(Dof< M > > 0 ? Dof< M > *Dof< M > :-1)> Hessian
Matrix of size Dof x Dof*Dof.
Eigen::Vector< Scalar< M >, Dof< M > > Tangent
Tangent as a Dof-length vector.
typename traits::man< M >::Scalar Scalar
Manifold scalar type.
Eigen::Index dof(const M &m)
Manifold degrees of freedom (tangent space dimension)
Tangent< M > rminus(const M &g1, const Mo &g2)
Manifold right-minus.
Eigen::Matrix< Scalar< M >, Dof< M >, Dof< M > > TangentMap
Matrix of size Dof x Dof.
PlainObject< M > rplus(const M &m, const Eigen::MatrixBase< Derived > &a)
Manifold right-plus.
typename traits::man< M >::template CastT< NewScalar > CastT
Cast'ed type.
CastT< NewScalar, M > cast(const M &m)
Cast to different scalar type.
typename traits::man< M >::PlainObject PlainObject
Manifold default type.
Trait class for making a class a LieGroup instance via specialization.
Trait class for making a class a Manifold instance via specialization.