Template Class Cartesian

Inheritance Relationships

Base Type

Class Documentation

template<class Scalar_, int M, int Options>
class Cartesian : public Sophus::CartesianBase<Cartesian<Scalar_, M, Options>, M>

Cartesian using default storage; derived from CartesianBase.

Public Types

using Scalar = Scalar_
using Transformation = typename Base::Transformation
using Point = typename Base::Point
using HomogeneousPoint = typename Base::HomogeneousPoint
using Tangent = typename Base::Tangent
using ParamsMember = Sophus::Vector<Scalar, M, Options>

Public Functions

SOPHUS_FUNC Cartesian & operator= (Cartesian const &other)=default

Define copy-assignment operator explicitly. The definition of implicit copy assignment operator is deprecated in presence of a user-declared copy constructor (-Wdeprecated-copy in clang >= 13).

inline EIGEN_MAKE_ALIGNED_OPERATOR_NEW SOPHUS_FUNC Cartesian ()

Default constructor initializes to zero vector.

SOPHUS_FUNC Cartesian(Cartesian const &other) = default

Copy constructor

template<class OtherDerived>
inline SOPHUS_FUNC Cartesian(CartesianBase<OtherDerived, M> const &other)

Copy-like constructor from OtherDerived.

template<class D>
inline explicit SOPHUS_FUNC Cartesian(Eigen::MatrixBase<D> const &m)

Accepts either M-vector or (M+1)x(M+1) matrices.

inline SOPHUS_FUNC Scalar * data ()

This provides unsafe read/write access to internal data.

inline SOPHUS_FUNC Scalar const  * data () const

Const version of data() above.

inline SOPHUS_FUNC ParamsMember & params ()

Mutator of params vector

inline SOPHUS_FUNC ParamsMember const  & params () const

Accessor of params vector

Public Static Functions

static inline SOPHUS_FUNC Sophus::Matrix< Scalar, num_parameters, DoF > Dx_exp_x_at_0 ()

Returns derivative of exp(x) wrt. x.

static inline SOPHUS_FUNC Sophus::Matrix< Scalar, num_parameters, DoF > Dx_exp_x (Tangent const &)

Returns derivative of exp(x) wrt. x_i at x=0.

static inline SOPHUS_FUNC Sophus::Matrix< Scalar, Dim, DoF > Dx_exp_x_times_point_at_0 (Point const &)

Returns derivative of exp(x) * p wrt. x_i at x=0.

static inline SOPHUS_FUNC Transformation Dxi_exp_x_matrix_at_0 (int i)

Returns derivative of exp(x).matrix() wrt. x_i at x=0.

static inline SOPHUS_FUNC Transformation generator (int i)

Returns the ith infinitesimal generators of Cartesian(M).

The infinitesimal generators for e.g. the 3-dimensional case:

      |  0  0  0  1 |
G_0 = |  0  0  0  0 |
      |  0  0  0  0 |
      |  0  0  0  0 |

      |  0  0  0  0 |
G_1 = |  0  0  0  1 |
      |  0  0  0  0 |
      |  0  0  0  0 |

      |  0  0  0  0 |
G_2 = |  0  0  0  0 |
      |  0  0  0  1 |
      |  0  0  0  0 |

Precondition: i must be in [0, M-1].

static inline SOPHUS_FUNC Cartesian< Scalar, M > exp (Tangent const &a)

Group exponential

For Euclidean vector space, just the identity. Or to be more precise it just constructs the (M+1xM+1) homogeneous matrix representation

static inline SOPHUS_FUNC Transformation hat (Tangent const &a)

hat-operator

Formally, the hat()-operator of Cartesian(M) is defined as

hat(.): R^M -> R^{M+1xM+1}, hat(a) = sum_i a_i * G_i (for i=0,…,M-1)

with G_i being the ith infinitesimal generator of Cartesian(M).

The corresponding inverse is the vee()-operator, see below.

static inline SOPHUS_FUNC Tangent lieBracket (Tangent const &, Tangent const &)

Lie bracket

Always 0 for commutative groups.

template<class UniformRandomBitGenerator>
static inline Cartesian sampleUniform(UniformRandomBitGenerator &generator)

Draws uniform samples in the range [-1, 1] per coordinates.

static inline SOPHUS_FUNC Tangent vee (Transformation const &m)

vee-operator

This is the inverse of the hat()-operator, see above.

Public Static Attributes

static constexpr int DoF = Base::DoF
static constexpr int num_parameters = Base::num_parameters
static constexpr int N = Base::N
static constexpr int Dim = Base::Dim

Protected Attributes

ParamsMember params_