-
template<template<typename LieGroup, typename...Args> class Container, typename LieGroup, typename... Args>
auto average_biinvariant(const Container<LieGroup, Args...>& points,
typename LieGroup::Scalar eps = Constants<typename LieGroup::Scalar>::eps,
int max_iterations = 20) -> LieGroup
- Compute an average point on Lie groups given a list of 'close' points.
-
template<template<typename LieGroup, typename...Args> class Container, typename LieGroup, typename... Args>
auto average(const Container<LieGroup, Args...>& points,
typename LieGroup::Scalar eps = Constants<typename LieGroup::Scalar>::eps,
int max_iterations = 20) -> LieGroup
-
template<template<typename LieGroup, typename...Args> class Container, typename LieGroup, typename... Args>
auto average_frechet_left(const Container<LieGroup, Args...>& points,
typename LieGroup::Scalar eps = Constants<typename LieGroup::Scalar>::eps,
int max_iterations = 20) -> LieGroup
-
template<template<typename LieGroup, typename...Args> class Container, typename LieGroup, typename... Args>
auto average_frechet_right(const Container<LieGroup, Args...>& points,
typename LieGroup::Scalar eps = Constants<typename LieGroup::Scalar>::eps,
int max_iterations = 20) -> LieGroup
-
template<typename LieGroup>
auto computeBezierCurve(const std::vector<LieGroup>& control_points,
const unsigned int degree,
const unsigned int k_interp) -> std::vector<typename LieGroup::LieGroup>
- Curve fitting using the DeCasteljau algorithm on Lie groups.
-
template<typename LieGroup>
auto decasteljau(const std::vector<LieGroup>& trajectory,
const unsigned int degree,
const unsigned int k_interp,
const bool closed_curve = false) -> std::vector<typename LieGroup::LieGroup>
- Curve fitting using the DeCasteljau algorithm on Lie groups.
-
template<typename T>
auto binomial_coefficient(const T n,
const T k) -> T constexpr
- Constexpr function to compute binomial coefficient.
-
template<typename T>
auto ipow(const T base,
const int exp,
T carry = 1) -> T constexpr
- Constexpr function to compute power.
-
template<typename T>
auto polynomialBernstein(const T n,
const T i,
const T t) -> T constexpr
- Constexpr function to compute the Bernstein polynomial.
-
template<typename T>
auto smoothing_phi(const T t,
const std::size_t degree) -> T
-
template<typename _Derived, typename _Scalar>
static auto interpolate_slerp(const LieGroupBase<_Derived>& ma,
const LieGroupBase<_Derived>& mb,
const _Scalar t) -> LieGroupBase<_Derived>::LieGroup
- Slerp interpolation. @detail Interpolate a point mc between ma and mb at t in [0,1]. mc=ma if t=0 mc=mb if t=1.
-
template<typename _Derived, typename _Scalar>
static auto interpolate_cubic(const LieGroupBase<_Derived>& ma,
const LieGroupBase<_Derived>& mb,
const _Scalar t,
const typename LieGroupBase<_Derived>::Tangent& ta = LieGroupBase<_Derived>::Tangent::Zero(),
const typename LieGroupBase<_Derived>::Tangent& tb = LieGroupBase<_Derived>::Tangent::Zero()) -> LieGroupBase<_Derived>::LieGroup
- Cubic interpolation. @detail Interpolate a point mc between ma and mb at t in [0,1]. mc=ma if t=0 mc=mb if t=1.
-
template<typename _Derived, typename _Scalar>
static auto interpolate_smooth(const LieGroupBase<_Derived>& ma,
const LieGroupBase<_Derived>& mb,
const _Scalar t,
const unsigned int m,
const typename LieGroupBase<_Derived>::Tangent& ta = LieGroupBase<_Derived>::Tangent::Zero(),
const typename LieGroupBase<_Derived>::Tangent& tb = LieGroupBase<_Derived>::Tangent::Zero()) -> LieGroupBase<_Derived>::LieGroup
- Smooth interpolation. @detail Interpolate a point mc between ma and mb at t in [0,1]. mc=ma if t=0 mc=mb if t=1.
-
template<typename _Derived, typename _Scalar>
auto interpolate(const LieGroupBase<_Derived>& ma,
const LieGroupBase<_Derived>& mb,
const _Scalar t,
const INTERP_METHOD method = INTERP_METHOD::SLERP,
const typename LieGroupBase<_Derived>::Tangent& ta = LieGroupBase<_Derived>::Tangent::Zero(),
const typename LieGroupBase<_Derived>::Tangent& tb = LieGroupBase<_Derived>::Tangent::Zero()) -> LieGroupBase<_Derived>::LieGroup
- A helper function for interpolation.
-
template<typename Ad, typename Derived>
auto autodiffLocalParameterizationJacobian(const manif::LieGroupBase<Derived>& _state) -> Eigen::Matrix<typename Derived::Scalar, Derived::RepSize, Derived::DoF>
-
template<typename _LieGroup>
auto make_local_parameterization_autodiff() -> std::shared_ptr<ceres::AutoDiffLocalParameterization<CeresLocalParameterizationFunctor<_LieGroup>, _LieGroup::RepSize, _LieGroup::DoF>>
- Helper function to create a Ceres autodiff local parameterization wrapper.
-
template<typename _LieGroup, typename... Args>
auto make_objective_autodiff(Args && ... args) -> std::shared_ptr<ceres::AutoDiffCostFunction<CeresObjectiveFunctor<_LieGroup>, 1, _LieGroup::RepSize>>
- Helper function to create a Ceres autodiff objective wrapper.
-
template<typename _LieGroup, typename... Args>
auto make_constraint_autodiff(Args && ... args) -> std::shared_ptr<ceres::AutoDiffCostFunction<CeresConstraintFunctor<_LieGroup>, _LieGroup::DoF, _LieGroup::RepSize, _LieGroup::RepSize>>
- Helper function to create a Ceres autodiff constraint wrapper.
-
template<typename _Derived>
auto coeffs(const LieGroupBase<_Derived>& lie_group) -> const _Derived::DataType&
-
template<typename _Derived>
auto coeffs(const TangentBase<_Derived>& tangent) -> const _Derived::DataType&
-
template<typename _Derived>
auto data(const LieGroupBase<_Derived>& lie_group) -> const _Derived::Scalar*
-
template<typename _Derived>
auto data(LieGroupBase<_Derived>& lie_group) -> _Derived::Scalar*
-
template<typename _Derived>
auto data(const TangentBase<_Derived>& tangent) -> const _Derived::Scalar*
-
template<typename _Derived>
auto data(TangentBase<_Derived>& tangent) -> _Derived::Scalar*
-
template<typename _Derived>
void identity(LieGroupBase<_Derived>& lie_group)
-
template<typename _LieGroup>
auto Identity() -> _LieGroup
-
template<typename _Derived>
void zero(TangentBase<_Derived>& tangent)
-
template<typename _Tangent>
auto Zero() -> _Tangent
-
template<typename _Derived>
void random(LieGroupBase<_Derived>& lie_group)
-
template<typename _Type>
auto Random() -> _Type
-
template<typename _Derived>
void random(TangentBase<_Derived>& tangent)
-
template<typename _Derived>
auto inverse(const LieGroupBase<_Derived>& lie_group,
typename _Derived::OpJacobianRef J_minv_m = {}) -> _Derived::LieGroup
-
template<typename _DerivedMan, typename _DerivedTan>
auto rplus(const LieGroupBase<_DerivedMan>& lie_group,
const TangentBase<_DerivedTan>& tangent,
typename _DerivedMan::OpJacobianRef J_mout_m = {},
typename _DerivedMan::OpJacobianRef J_mout_t = {}) -> _DerivedMan::LieGroup
-
template<typename _DerivedMan, typename _DerivedTan>
auto lplus(const LieGroupBase<_DerivedMan>& lie_group,
const TangentBase<_DerivedTan>& tangent,
typename _DerivedMan::OpJacobianRef J_mout_m = {},
typename _DerivedMan::OpJacobianRef J_mout_t = {}) -> _DerivedMan::LieGroup
-
template<typename _DerivedMan, typename _DerivedTan>
auto plus(const LieGroupBase<_DerivedMan>& lie_group,
const TangentBase<_DerivedTan>& tangent,
typename _DerivedMan::OpJacobianRef J_mout_m = {},
typename _DerivedMan::OpJacobianRef J_mout_t = {}) -> _DerivedMan::LieGroup
-
template<typename _Derived0, typename _Derived1>
auto rminus(const LieGroupBase<_Derived0>& lie_group_lhs,
const LieGroupBase<_Derived1>& lie_group_rhs,
typename _Derived0::OptJacobianRef J_t_ma = {},
typename _Derived0::OptJacobianRef J_t_mb = {}) -> _Derived0::Tangent
-
template<typename _Derived0, typename _Derived1>
auto lminus(const LieGroupBase<_Derived0>& lie_group_lhs,
const LieGroupBase<_Derived1>& lie_group_rhs,
typename _Derived0::OptJacobianRef J_t_ma = {},
typename _Derived0::OptJacobianRef J_t_mb = {}) -> _Derived0::Tangent
-
template<typename _Derived0, typename _Derived1>
auto minus(const LieGroupBase<_Derived0>& lie_group_lhs,
const LieGroupBase<_Derived1>& lie_group_rhs,
typename _Derived0::OptJacobianRef J_t_ma = {},
typename _Derived0::OptJacobianRef J_t_mb = {}) -> _Derived0::Tangent
-
template<typename _Derived>
auto lift(const LieGroupBase<_Derived>& lie_group,
typename _Derived::OptJacobianRef J_l_m = {}) -> MANIF_DEPRECATED _Derived::Tangent
-
template<typename _Derived>
auto log(const LieGroupBase<_Derived>& lie_group,
typename _Derived::OptJacobianRef J_l_m = {}) -> _Derived::Tangent
-
template<typename _Derived>
auto retract(const TangentBase<_Derived>& tangent,
typename _Derived::OptJacobianRef J_r_t = {}) -> MANIF_DEPRECATED _Derived::LieGroup
-
template<typename _Derived>
auto exp(const TangentBase<_Derived>& tangent,
typename _Derived::OptJacobianRef J_e_t = {}) -> _Derived::LieGroup
-
template<typename _Derived0, typename _Derived1>
auto compose(const LieGroupBase<_Derived0>& lie_group_lhs,
const LieGroupBase<_Derived1>& lie_group_rhs,
typename _Derived0::OptJacobianRef J_mc_ma = {},
typename _Derived0::OptJacobianRef J_mc_mb = {}) -> _Derived0::LieGroup
-
template<typename _Derived0, typename _Derived1>
auto between(const LieGroupBase<_Derived0>& lie_group_lhs,
const LieGroupBase<_Derived1>& lie_group_rhs,
typename _Derived0::OptJacobianRef J_mc_ma = {},
typename _Derived0::OptJacobianRef J_mc_mb = {}) -> _Derived0::LieGroup
-
template<typename _Derived>
auto act(const LieGroupBase<_Derived>& lie_group,
typename _Derived::Vector v,
typename _Derived::OptJacobianRef J_vout_m = {},
typename _Derived::OptJacobianRef J_vout_v = {}) -> _Derived::Vector
-
template<typename _Scalar>
auto skew(const _Scalar v) -> std::enable_if<std::is_arithmetic<_Scalar>::value||internal::is_ad<_Scalar>::value, Eigen::Matrix<_Scalar, 2, 2>>::type
- Return a 2x2 skew matrix given a scalar.
-
template<typename _Derived>
auto skew(const Eigen::MatrixBase<_Derived>& v) -> std::enable_if<(internal::is_base_of_v<Eigen::MatrixBase<_Derived>, _Derived>) && _Derived::RowsAtCompileTime==3), Eigen::Matrix<typename _Derived::Scalar, 3, 3>>::type
- Return a 3x3 skew matrix given 3-vector.
-
template<typename _Derived>
auto skew(const Eigen::MatrixBase<_Derived>& v) -> std::enable_if<(internal::is_base_of_v<Eigen::MatrixBase<_Derived>, _Derived>) && _Derived::RowsAtCompileTime==Eigen::Dynamic), Eigen::Matrix<typename _Derived::Scalar, Eigen::Dynamic, Eigen::Dynamic>>::type
- Return either a 2x2 or a 3x3 skew matrix given a scalar or a 3-vector.
-
template<typename Scalar>
auto randPointInBall(Scalar radius) -> Eigen::Matrix<Scalar, 3, 1>
-
template<typename Scalar>
auto randQuat() -> Eigen::Quaternion<Scalar>
-
template<typename _Stream, typename _Derived>
auto operator<<(_Stream& s,
const manif::LieGroupBase<_Derived>& m) -> _Stream&
-
MANIF_EXTRA_TANGENT_TYPEDEF(SE2Tangent)
-
MANIF_EXTRA_TANGENT_TYPEDEF(SE3Tangent)
-
MANIF_EXTRA_TANGENT_TYPEDEF(SE_2_3Tangent)
-
MANIF_EXTRA_TANGENT_TYPEDEF(SGal3Tangent)
-
MANIF_EXTRA_TANGENT_TYPEDEF(SO2Tangent)
-
MANIF_EXTRA_TANGENT_TYPEDEF(SO3Tangent)
-
template<typename _Derived, typename _DerivedOther>
auto operator+(const TangentBase<_Derived>& ta,
const TangentBase<_DerivedOther>& tb) -> TangentBase<_Derived>::Tangent
-
template<typename _Derived, typename _DerivedOther>
auto operator-(const TangentBase<_Derived>& ta,
const TangentBase<_DerivedOther>& tb) -> TangentBase<_Derived>::Tangent
-
template<typename _Derived, typename _EigenDerived>
auto operator+(const TangentBase<_Derived>& t,
const Eigen::MatrixBase<_EigenDerived>& v) -> TangentBase<_Derived>::Tangent
-
template<typename _Derived, typename _EigenDerived>
auto operator-(const TangentBase<_Derived>& t,
const Eigen::MatrixBase<_EigenDerived>& v) -> TangentBase<_Derived>::Tangent
-
template<typename _EigenDerived, typename _Derived>
auto operator+(const Eigen::MatrixBase<_EigenDerived>& v,
const TangentBase<_Derived>& t) -> auto
-
template<typename _EigenDerived, typename _Derived>
auto operator-(const Eigen::MatrixBase<_EigenDerived>& v,
const TangentBase<_Derived>& t) -> auto
-
template<typename _Derived>
auto operator*(const TangentBase<_Derived>& t,
const typename _Derived::Scalar scalar) -> TangentBase<_Derived>::Tangent
-
template<typename _Derived>
auto operator*(const typename _Derived::Scalar scalar,
const TangentBase<_Derived>& t) -> TangentBase<_Derived>::Tangent
-
template<typename _Derived>
auto operator/(const TangentBase<_Derived>& t,
const typename _Derived::Scalar scalar) -> TangentBase<_Derived>::Tangent
-
template<class _DerivedOther>
auto operator*(const typename TangentBase<_DerivedOther>::Jacobian& J,
const TangentBase<_DerivedOther>& t) -> TangentBase<_DerivedOther>::Tangent
-
template<typename _Derived, typename _DerivedOther>
auto operator==(const TangentBase<_Derived>& ta,
const TangentBase<_DerivedOther>& tb) -> bool
-
template<typename _Derived, typename _EigenDerived>
auto operator==(const TangentBase<_Derived>& t,
const Eigen::MatrixBase<_EigenDerived>& v) -> bool
-
template<typename _Stream, typename _Derived>
auto operator<<(_Stream& s,
const manif::TangentBase<_Derived>& m) -> _Stream&
-
template<typename T>
auto pi2pi(T angle) -> T
- Wrap an angle in -pi,pi.
-
template<typename T>
auto toRad(const T deg) -> T constexpr
- Conversion to radians.
-
template<typename T>
auto toDeg(const T rad) -> T constexpr
- Conversion to degrees.
-
template<typename T>
auto approxSqrtInv(const T x) -> T constexpr
- Degree 2 polynomial approximation of 1/sqrt(x) (reciprocal sqrt).