Template Class Sim2
Defined in File sim2.hpp
Inheritance Relationships
Base Type
public Sophus::Sim2Base< Sim2< Scalar_, Options > >
(Template Class Sim2Base)
Class Documentation
-
template<class Scalar_, int Options>
class Sim2 : public Sophus::Sim2Base<Sim2<Scalar_, Options>> Sim2 using default storage; derived from Sim2Base.
Public Types
Public Functions
- SOPHUS_FUNC Sim2 & operator= (Sim2 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).
- EIGEN_MAKE_ALIGNED_OPERATOR_NEW SOPHUS_FUNC Sim2 ()
Default constructor initializes similarity transform to the identity.
-
template<class OtherDerived>
inline SOPHUS_FUNC Sim2(Sim2Base<OtherDerived> const &other) Copy-like constructor from OtherDerived.
-
template<class OtherDerived, class D>
inline SOPHUS_FUNC Sim2(RxSO2Base<OtherDerived> const &rxso2, Eigen::MatrixBase<D> const &translation) Constructor from RxSO2 and translation vector
-
template<class D>
inline SOPHUS_FUNC Sim2(Vector2<Scalar> const &complex_number, Eigen::MatrixBase<D> const &translation) Constructor from complex number and translation vector.
Precondition: complex number must not be close to zero.
-
inline explicit SOPHUS_FUNC Sim2(Matrix<Scalar, 3, 3> const &T)
Constructor from 3x3 matrix
Precondition: Top-left 2x2 matrix needs to be “scaled-orthogonal” with positive determinant. The last row must be
(0, 0, 1)
.
- inline SOPHUS_FUNC Scalar * data ()
This provides unsafe read/write access to internal data. Sim(2) is represented by a complex number (two parameters) and a 2-vector. When using direct write access, the user needs to take care of that the complex number is not set close to zero.
- inline SOPHUS_FUNC Scalar const * data () const
Const version of data() above.
- inline SOPHUS_FUNC RxSo2Member & rxso2 ()
Accessor of RxSO2
- inline SOPHUS_FUNC RxSo2Member const & rxso2 () const
Mutator of RxSO2
- inline SOPHUS_FUNC TranslationMember & translation ()
Mutator of translation vector
- inline SOPHUS_FUNC TranslationMember const & translation () const
Accessor of translation 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_i at x=0.
- static inline SOPHUS_FUNC Sophus::Matrix< Scalar, num_parameters, DoF > Dx_exp_x (const Tangent &a)
Returns derivative of exp(x) wrt. x.
- static inline SOPHUS_FUNC Sophus::Matrix< Scalar, 2, DoF > Dx_exp_x_times_point_at_0 (Point const &point)
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 Sim2< Scalar > exp (Tangent const &a)
Derivative of Lie bracket with respect to first element.
This function returns
D_a [a, b]
withD_a
being the differential operator with respect toa
,[a, b]
being the lie bracket of the Lie algebra sim(2). SeelieBracket()
below. Group exponentialThis functions takes in an element of tangent space and returns the corresponding element of the group Sim(2).
The first two components of
a
represent the translational partupsilon
in the tangent space of Sim(2), the following two components ofa
represents the rotationtheta
and the final component represents the logarithm of the scaling factorsigma
. To be more specific, this function computesexpmat(hat(a))
withexpmat(.)
being the matrix exponential andhat(.)
the hat-operator of Sim(2), see below.
- static inline SOPHUS_FUNC Transformation generator (int i)
Returns the ith infinitesimal generators of Sim(2).
The infinitesimal generators of Sim(2) are:
| 0 0 1 | G_0 = | 0 0 0 | | 0 0 0 | | 0 0 0 | G_1 = | 0 0 1 | | 0 0 0 | | 0 -1 0 | G_2 = | 1 0 0 | | 0 0 0 | | 1 0 0 | G_3 = | 0 1 0 | | 0 0 0 |
Precondition:
i
must be in [0, 3].
- static inline SOPHUS_FUNC Transformation hat (Tangent const &a)
hat-operator
It takes in the 4-vector representation and returns the corresponding matrix representation of Lie algebra element.
Formally, the hat()-operator of Sim(2) is defined as
hat(.): R^4 -> R^{3x3}, hat(a) = sum_i a_i * G_i
(for i=0,…,6)with
G_i
being the ith infinitesimal generator of Sim(2).The corresponding inverse is the vee()-operator, see below.
- static inline SOPHUS_FUNC Tangent lieBracket (Tangent const &a, Tangent const &b)
Lie bracket
It computes the Lie bracket of Sim(2). To be more specific, it computes
[omega_1, omega_2]_sim2 := vee([hat(omega_1), hat(omega_2)])
with
[A,B] := AB-BA
being the matrix commutator,hat(.)
the hat()-operator andvee(.)
the vee()-operator of Sim(2).
-
template<class UniformRandomBitGenerator>
static inline Sim2 sampleUniform(UniformRandomBitGenerator &generator) Draw uniform sample from Sim(2) manifold.
Translations are drawn component-wise from the range [-1, 1]. The scale factor is drawn uniformly in log2-space from [-1, 1], hence the scale is in [0.5, 2].
- static inline SOPHUS_FUNC Tangent vee (Transformation const &Omega)
vee-operator
It takes the 3x3-matrix representation
Omega
and maps it to the corresponding 4-vector representation of Lie algebra.This is the inverse of the hat()-operator, see above.
Precondition:
Omega
must have the following structure:| d -c a | | c d b | | 0 0 0 |
Public Static Attributes