gtsam
Loading...
Searching...
No Matches
gtsam::so3::DexpFunctor Struct Reference

Detailed Description

Functor that implements Exponential map and its derivatives Math extends Ethan theme of elegant I + aW + bWW expressions.

See https://www.ethaneade.org/lie.pdf expmap (82) and left Jacobian (83).

Inheritance diagram for gtsam::so3::DexpFunctor:

Public Member Functions

 DexpFunctor (const Vector3 &omega)
 Constructor with element of Lie algebra so(3).
 DexpFunctor (const Vector3 &omega, double nearZeroThresholdSq, double nearPiThresholdSq)
 Constructor with custom thresholds (advanced).
Kernel Rodrigues () const &
Kernel Jacobian () const &
InvJKernel InvJacobian () const &
Kernel Gamma () const &
Matrix3 rightJacobian () const
Matrix3 leftJacobian () const
Vector3 tangentExpmap (const Vector3 &v, OptionalJacobian< 6, 6 > H={}) const
 Apply the SO(3) left Jacobian to a tangent vector and optionally compute the complete right-trivialized Jacobian of the lifted [omega; v] exponential.
Vector3 tangentExpmap (const Vector3 &v, const Matrix3 &rotation, OptionalJacobian< 6, 6 > H={}) const
 Apply the lifted exponential using a rotation matrix already evaluated from this functor's omega.
double C () const
double D () const
double E () const
double dA () const
double dB () const
double dC () const
double dE () const
Public Member Functions inherited from gtsam::so3::ExpmapFunctor
 ExpmapFunctor (const Vector3 &omega)
 Constructor with element of Lie algebra so(3).
 ExpmapFunctor (double nearZeroThresholdSq, const Vector3 &axis)
 Constructor with threshold (advanced).
 ExpmapFunctor (const Vector3 &axis, double angle)
 Constructor with axis-angle.
Matrix3 expmap () const
 Rodrigues formula.

Public Attributes

Vector3 omega
 The rotation vector.
bool nearPi {false}
 Flag indicating if theta is near pi.
Public Attributes inherited from gtsam::so3::ExpmapFunctor
double theta2
 The squared norm of the rotation vector (θ²).
double theta
 The norm of the rotation vector (θ).
Matrix3 W
 The skew-symmetric matrix Ω for the rotation vector.
Matrix3 WW
 The square of the skew-symmetric matrix (Ω²).
bool nearZero {false}
 Flag indicating if theta is near zero.
double A
double B

Protected Attributes

std::optional< double > C_
std::optional< double > D_
std::optional< double > E_
 C, D and E lazily computed.
std::optional< double > dA_
std::optional< double > dB_
std::optional< double > dC_
std::optional< double > dE_
 lazy c(θ)′/θ

Additional Inherited Members

Protected Member Functions inherited from gtsam::so3::ExpmapFunctor
void init (double nearZeroThresholdSq)

Member Function Documentation

◆ tangentExpmap() [1/2]

Vector3 gtsam::so3::DexpFunctor::tangentExpmap ( const Vector3 & v,
const Matrix3 & rotation,
OptionalJacobian< 6, 6 > H = {} ) const

Apply the lifted exponential using a rotation matrix already evaluated from this functor's omega.

This avoids recomputing Expmap when the caller needs both the group value and the complete tangent Jacobian.

◆ tangentExpmap() [2/2]

Vector3 gtsam::so3::DexpFunctor::tangentExpmap ( const Vector3 & v,
OptionalJacobian< 6, 6 > H = {} ) const

Apply the SO(3) left Jacobian to a tangent vector and optionally compute the complete right-trivialized Jacobian of the lifted [omega; v] exponential.

This is the shared exponential kernel for both SE(3) and TSO(3), whose translational/algebra component is J_l(omega) * v.


The documentation for this struct was generated from the following files:
  • /tmp/gtsam-4.3.0-doxygen.rsXPUS/source/gtsam/geometry/SO3.h
  • /tmp/gtsam-4.3.0-doxygen.rsXPUS/source/gtsam/geometry/SO3.cpp