Typedef Sophus::IsMappable

Typedef Documentation

template<class T>
using Sophus::IsMappable = IsSpecialized<Eigen::internal::traits<std::decay_t<T>>>

Type trait used to distinguish mappable vector types from scalars

We use this class to distinguish Sophus::Vector<Scalar, N> from Scalar types in LieGroup<T>::Tangent

Primary use is mapping LieGroup::Tangent over raw data, with 2 options:

  • LieGroup::Tangent is “scalar” (for SO2), then we just dereference pointer

  • LieGroup::Tangent is Sophus::Vector<…>, then we need to use Eigen::Map

Specialization of Eigen::internal::traits<T> for T is crucial for for constructing Eigen::Map<T>, thus we use that property for distinguishing between those two options. At this moment there seem to be no option to check this using only “external” API of Eigen