template<class _Derived>
manif::LieGroupBase struct

Base class for Lie groups. Defines the minimum common API.

Derived classes

template<typename _Derived>
struct BundleBase
The base class of the Bundle group.
template<typename _Derived>
struct BundleBase
The base class of the Bundle group.
template<typename _Derived>
struct BundleBase
The base class of the Bundle group.
template<typename _Derived>
struct RnBase
The base class of the Rn group.
template<typename _Derived>
struct RnBase
The base class of the Rn group.
template<typename _Derived>
struct RnBase
The base class of the Rn group.
template<typename _Derived>
struct SE2Base
The base class of the SE2 group.
template<typename _Derived>
struct SE2Base
The base class of the SE2 group.
template<typename _Derived>
struct SE2Base
The base class of the SE2 group.
template<typename _Derived>
struct SE3Base
The base class of the SE3 group.
template<typename _Derived>
struct SE3Base
The base class of the SE3 group.
template<typename _Derived>
struct SE3Base
The base class of the SE3 group.
template<typename _Derived>
struct SE_2_3Base
The base class of the SE_2_3 group.
template<typename _Derived>
struct SE_2_3Base
The base class of the SE_2_3 group.
template<typename _Derived>
struct SE_2_3Base
The base class of the SE_2_3 group.
template<typename _Derived>
struct SGal3Base
The base class of the SGal3 group.
template<typename _Derived>
struct SGal3Base
The base class of the SGal3 group.
template<typename _Derived>
struct SGal3Base
The base class of the SGal3 group.
template<typename _Derived>
struct SO2Base
The base class of the SO2 group.
template<typename _Derived>
struct SO2Base
The base class of the SO2 group.
template<typename _Derived>
struct SO2Base
The base class of the SO2 group.
template<typename _Derived>
struct SO3Base
The base class of the SO3 group.
template<typename _Derived>
struct SO3Base
The base class of the SO3 group.
template<typename _Derived>
struct SO3Base
The base class of the SO3 group.
template<typename _Derived>
struct BundleBase
The base class of the Bundle group.
template<typename _Derived>
struct RnBase
The base class of the Rn group.
template<typename _Derived>
struct SE2Base
The base class of the SE2 group.
template<typename _Derived>
struct SE3Base
The base class of the SE3 group.
template<typename _Derived>
struct SE_2_3Base
The base class of the SE_2_3 group.
template<typename _Derived>
struct SGal3Base
The base class of the SGal3 group.
template<typename _Derived>
struct SO2Base
The base class of the SO2 group.
template<typename _Derived>
struct SO3Base
The base class of the SO3 group.

Public types

using Scalar = typename internal::traits<_Derived>::Scalar
using LieGroup = typename internal::traits<_Derived>::LieGroup
using DataType = typename internal::traits<_Derived>::DataType
using Tangent = typename internal::traits<_Derived>::Tangent
using Jacobian = typename internal::traits<_Derived>::Jacobian
using Vector = typename internal::traits<_Derived>::Vector
using OptJacobianRef = tl::optional<Eigen::Ref<Jacobian>>
template<typename _Scalar>
using LieGroupTemplate = typename internal::traitscast<LieGroup, _Scalar>::cast

Public static variables

static int Dim constexpr
static int DoF constexpr
static int RepSize constexpr
static const OptJacobianRef _
Helper for skipping an optional parameter.

Public static functions

static auto Identity() -> LieGroup
Static helper to create a Lie group object set at Identity.
static auto Random() -> LieGroup
Static helper to create a random object of the Lie group.

Public functions

auto operator=(const LieGroupBase& m) -> _Derived&
Assignment operator.
template<typename _DerivedOther>
auto operator=(const LieGroupBase<_DerivedOther>& m) -> _Derived&
Assignment operator.
template<typename _EigenDerived>
auto operator=(const Eigen::MatrixBase<_EigenDerived>& data) -> _Derived&
Assignment operator given Eigen object.
auto coeffs() -> DataType&
Access the underlying data by const reference.
auto coeffs() const -> const DataType&
Access the underlying data by const reference.
auto data() -> Scalar*
Access the underlying data by pointer.
auto data() const -> const Scalar*
Access the underlying data by const pointer.
template<class _NewScalar>
auto cast() const -> LieGroupTemplate<_NewScalar>
Cast the LieGroup object to a copy of a different scalar type.
auto setIdentity() -> _Derived&
Set the LieGroup object this to Identity.
auto setRandom() -> _Derived&
Set the LieGroup object this to a random value.
auto inverse(OptJacobianRef J_m_t = {}) const -> LieGroup
Get the inverse of the LieGroup object this.
auto log(OptJacobianRef J_t_m = {}) const -> Tangent
Get the corresponding Lie algebra element in vector form.
auto lift(OptJacobianRef J_t_m = {}) const -> MANIF_DEPRECATED Tangent
This function is deprecated. Please considere using log instead.
template<typename _DerivedOther>
auto compose(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_mc_ma = {}, OptJacobianRef J_mc_mb = {}) const -> LieGroup
Composition of this and another element of the same Lie group.
template<typename _EigenDerived>
auto act(const Eigen::MatrixBase<_EigenDerived>& v, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, Dim, DoF>>> J_vout_m = {}, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, Dim, Dim>>> J_vout_v = {}) const -> Vector
Get the action of the Lie group object on a point.
auto adj() const -> Jacobian
Get the Adjoint of the Lie group element this.
template<typename _DerivedOther>
auto rplus(const TangentBase<_DerivedOther>& t, OptJacobianRef J_mout_m = {}, OptJacobianRef J_mout_t = {}) const -> LieGroup
Right oplus operation of the Lie group.
template<typename _DerivedOther>
auto lplus(const TangentBase<_DerivedOther>& t, OptJacobianRef J_mout_m = {}, OptJacobianRef J_mout_t = {}) const -> LieGroup
Left oplus operation of the Lie group.
template<typename _DerivedOther>
auto plus(const TangentBase<_DerivedOther>& t, OptJacobianRef J_mout_m = {}, OptJacobianRef J_mout_t = {}) const -> LieGroup
An alias for the right oplus operation.
template<typename _DerivedOther>
auto rminus(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_t_ma = {}, OptJacobianRef J_t_mb = {}) const -> Tangent
Right ominus operation of the Lie group.
template<typename _DerivedOther>
auto lminus(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_t_ma = {}, OptJacobianRef J_t_mb = {}) const -> Tangent
Left ominus operation of the Lie group.
template<typename _DerivedOther>
auto minus(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_t_ma = {}, OptJacobianRef J_t_mb = {}) const -> Tangent
An alias for the right ominus operation.
template<typename _DerivedOther>
auto between(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_mc_ma = {}, OptJacobianRef J_mc_mb = {}) const -> LieGroup
template<typename _DerivedOther>
auto isApprox(const LieGroupBase<_DerivedOther>& m, const Scalar eps = Constants<Scalar>::eps) const -> bool
Evaluate whether this and m are 'close'.
template<typename _DerivedOther>
auto operator==(const LieGroupBase<_DerivedOther>& m) const -> bool
Equality operator.
template<typename _DerivedOther>
auto operator+(const TangentBase<_DerivedOther>& t) const -> LieGroup
Right oplus operator.
template<typename _DerivedOther>
auto operator+=(const TangentBase<_DerivedOther>& t) -> _Derived&
Right in-place oplus operator.
template<typename _DerivedOther>
auto operator-(const LieGroupBase<_DerivedOther>& m) const -> Tangent
Right ominus operator.
template<typename _DerivedOther>
auto operator*(const LieGroupBase<_DerivedOther>& m) const -> LieGroup
Lie group composition operator.
template<typename _DerivedOther>
auto operator*=(const LieGroupBase<_DerivedOther>& m) -> _Derived&
Lie group in-place composition operator.
auto operator[](const unsigned int i) -> auto
Access the ith coeffs.
auto operator[](const unsigned int i) -> auto
Access the ith coeffs.
auto size() const -> unsigned int constexpr
The size of the underlying vector.
template<class _NewScalar>
auto cast() const -> LieGroupBase<_Derived>::template LieGroupTemplate<_NewScalar>

Protected functions

auto derived() & -> _Derived& noexcept
auto derived() const & -> const _Derived& noexcept

Function documentation

template<class _Derived>
_Derived& manif::LieGroupBase<_Derived>::operator=(const LieGroupBase& m)

Assignment operator.

Returns A reference to this.

template<class _Derived> template<typename _DerivedOther>
_Derived& manif::LieGroupBase<_Derived>::operator=(const LieGroupBase<_DerivedOther>& m)

Assignment operator.

Returns A reference to this.

template<class _Derived> template<typename _EigenDerived>
_Derived& manif::LieGroupBase<_Derived>::operator=(const Eigen::MatrixBase<_EigenDerived>& data)

Assignment operator given Eigen object.

Returns A reference to this.

template<class _Derived>
_Derived& manif::LieGroupBase<_Derived>::setIdentity()

Set the LieGroup object this to Identity.

Returns A reference to this.

template<class _Derived>
_Derived& manif::LieGroupBase<_Derived>::setRandom()

Set the LieGroup object this to a random value.

Returns A reference to this.

template<class _Derived>
LieGroup manif::LieGroupBase<_Derived>::inverse(OptJacobianRef J_m_t = {}) const

Get the inverse of the LieGroup object this.

Returns The Inverse of this.

template<class _Derived>
Tangent manif::LieGroupBase<_Derived>::log(OptJacobianRef J_t_m = {}) const

Get the corresponding Lie algebra element in vector form.

Returns The tangent element in vector form.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::compose(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_mc_ma = {}, OptJacobianRef J_mc_mb = {}) const

Composition of this and another element of the same Lie group.

Parameters
in Another element of the same Lie group.
J_mc_ma
J_mc_mb
Returns The composition of 'this . m'.

template<class _Derived> template<typename _EigenDerived>
Vector manif::LieGroupBase<_Derived>::act(const Eigen::MatrixBase<_EigenDerived>& v, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, Dim, DoF>>> J_vout_m = {}, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, Dim, Dim>>> J_vout_v = {}) const

Get the action of the Lie group object on a point.

Parameters
in A point.
J_vout_m
J_vout_v
Returns A point acted upon by the object.

template<class _Derived>
Jacobian manif::LieGroupBase<_Derived>::adj() const

Get the Adjoint of the Lie group element this.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::rplus(const TangentBase<_DerivedOther>& t, OptJacobianRef J_mout_m = {}, OptJacobianRef J_mout_t = {}) const

Right oplus operation of the Lie group.

Parameters
in An element of the tangent of the Lie group.
J_mout_m
J_mout_t
Returns An element of the Lie group.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::lplus(const TangentBase<_DerivedOther>& t, OptJacobianRef J_mout_m = {}, OptJacobianRef J_mout_t = {}) const

Left oplus operation of the Lie group.

Parameters
in An element of the tangent of the Lie group.
J_mout_m
J_mout_t
Returns An element of the Lie group.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::plus(const TangentBase<_DerivedOther>& t, OptJacobianRef J_mout_m = {}, OptJacobianRef J_mout_t = {}) const

An alias for the right oplus operation.

template<class _Derived> template<typename _DerivedOther>
Tangent manif::LieGroupBase<_Derived>::rminus(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_t_ma = {}, OptJacobianRef J_t_mb = {}) const

Right ominus operation of the Lie group.

Parameters
in Another element of the same Lie group.
J_t_ma
J_t_mb
Returns An element of the tangent space of the Lie group.

template<class _Derived> template<typename _DerivedOther>
Tangent manif::LieGroupBase<_Derived>::lminus(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_t_ma = {}, OptJacobianRef J_t_mb = {}) const

Left ominus operation of the Lie group.

Parameters
in Another element of the same Lie group.
J_t_ma
J_t_mb
Returns An element of the tangent space of the Lie group.

template<class _Derived> template<typename _DerivedOther>
Tangent manif::LieGroupBase<_Derived>::minus(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_t_ma = {}, OptJacobianRef J_t_mb = {}) const

An alias for the right ominus operation.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::between(const LieGroupBase<_DerivedOther>& m, OptJacobianRef J_mc_ma = {}, OptJacobianRef J_mc_mb = {}) const

Parameters
in [description]
J_mc_ma
J_mc_mb
Returns [description]

template<class _Derived> template<typename _DerivedOther>
bool manif::LieGroupBase<_Derived>::isApprox(const LieGroupBase<_DerivedOther>& m, const Scalar eps = Constants<Scalar>::eps) const

Evaluate whether this and m are 'close'.

Parameters
in An element of the same Lie Group.
eps in Threshold for equality comparison.
Returns true if the Lie group element m is 'close' to this, false otherwise.

template<class _Derived> template<typename _DerivedOther>
bool manif::LieGroupBase<_Derived>::operator==(const LieGroupBase<_DerivedOther>& m) const

Equality operator.

Returns true if the Lie group element m is 'close' to this, false otherwise.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::operator+(const TangentBase<_DerivedOther>& t) const

Right oplus operator.

template<class _Derived> template<typename _DerivedOther>
_Derived& manif::LieGroupBase<_Derived>::operator+=(const TangentBase<_DerivedOther>& t)

Right in-place oplus operator.

template<class _Derived> template<typename _DerivedOther>
Tangent manif::LieGroupBase<_Derived>::operator-(const LieGroupBase<_DerivedOther>& m) const

Right ominus operator.

template<class _Derived> template<typename _DerivedOther>
LieGroup manif::LieGroupBase<_Derived>::operator*(const LieGroupBase<_DerivedOther>& m) const

Lie group composition operator.

template<class _Derived> template<typename _DerivedOther>
_Derived& manif::LieGroupBase<_Derived>::operator*=(const LieGroupBase<_DerivedOther>& m)

Lie group in-place composition operator.