Template Struct SO3Base

Inheritance Relationships

Base Type

Struct Documentation

template<typename _Derived>
struct SO3Base : public manif::LieGroupBase<_Derived>

The base class of the SO3 group.

Note

See Appendix B of the paper.

Public Types

using Rotation = typename internal::traits<_Derived>::Rotation
using Transformation = typename internal::traits<_Derived>::Transformation
using QuaternionDataType = Eigen::Quaternion<Scalar>

Public Functions

template<typename _EigenDerived>
Eigen::Matrix<typename SO3Base<_Derived>::Scalar, 3, 1> act(const Eigen::MatrixBase<_EigenDerived> &v, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, 3, 3>>> J_vout_m, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, 3, 3>>> J_vout_v) const
DataType &coeffs()

Access the underlying data by const reference.

const DataType &coeffs() const

Access the underlying data by const reference.

Protected Functions

MANIF_DEFAULT_CONSTRUCTOR(SO3Base) public Tangent log (OptJacobianRef J_t_m={}) const

Get the inverse of this.

Get the SO3 corresponding Lie algebra element in vector form.

See also

SO3Tangent.

Note

q^-1 = q*. See Eq. (140).

Note

This is the log() map in vector form.

Note

See Eq. (133) & Eq. (144).

Parameters:
  • -optional-[out] J_minv_m Jacobian of the inverse wrt this.

  • -optional-[out] J_t_m Jacobian of the tangent wrt to this.

Returns:

The SO3 tangent of this.

MANIF_DEPRECATED Tangent lift (OptJacobianRef J_t_m={}) const

This function is deprecated. Please considere using log instead.

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

Composition of this and another SO3 element.

Note

Quaternion product.

Note

See Eqs. (141,142).

Parameters:
  • m[in] Another SO3 element.

  • -optional-[out] J_mc_ma Jacobian of the composition wrt this.

  • -optional-[out] J_mc_mb Jacobian of the composition wrt m.

Returns:

The composition of ‘this . m’.

template<typename _EigenDerived>
Eigen::Matrix<Scalar, 3, 1> act(const Eigen::MatrixBase<_EigenDerived> &v, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, 3, 3>>> J_vout_m = {}, tl::optional<Eigen::Ref<Eigen::Matrix<Scalar, 3, 3>>> J_vout_v = {}) const

Rotation action on a 3-vector.

Note

See Eq (136), Eqs. (150,151)

Parameters:
  • v – A 2-vector.

  • -optional-[out] J_vout_m The Jacobian of the new object wrt this.

  • -optional-[out] J_vout_v The Jacobian of the new object wrt input object.

Returns:

The rotated 3-vector.

Jacobian adj() const

Get the adjoint of SO3 at this.

Note

See Eq. (139).

Transformation transform() const

Get the transformation matrix (3D isometry).

Note

T = | R 0 | | 0 1 |

Rotation rotation() const

Get a rotation matrix.

Scalar x() const

Get the x component of the quaternion.

Scalar y() const

Get the y component of the quaternion.

Scalar z() const

Get the z component of the quaternion.

Scalar w() const

Get the w component of the quaternion.

QuaternionDataType quat() const

Get quaternion.

void normalize()

Normalize the underlying quaternion.

void quat(const QuaternionDataType &quaternion)

Set the rotational as a quaternion.

Parameters:

quaternion – a unitary quaternion

template<typename _EigenDerived>
void quat(const Eigen::MatrixBase<_EigenDerived> &quaternion)

Set the rotational as a quaternion.

Parameters:

quaternion – an Eigen::Vector representing a unitary quaternion

inline _Derived &derived() & noexcept
inline const _Derived &derived() const & noexcept