farm-ng-core
sophus::ProductManifold< TSubManifold > Class Template Reference

#include <product_manifold.h>

Public Types

using Self = ProductManifold< TSubManifold... >
 
using Tuple = std::tuple< TSubManifold... >
 
using Scalars = std::tuple< typename TSubManifold::Scalar... >
 
using Scalar = typename std::tuple_element< 0, Scalars >::type
 
using Tangent = Eigen::Vector< Scalar, kDof >
 

Public Member Functions

 ProductManifold ()=default
 
 ProductManifold (ProductManifold const &)=default
 
ProductManifoldoperator= (ProductManifold const &)=default
 
 ProductManifold (TSubManifold const &... manifolds)
 
template<size_t i>
auto & subManifold ()
 
template<size_t i>
auto const & subManifold () const
 
auto oplus (Tangent const &tangent) const -> Self
 
auto ominus (Self const &other) const -> Tangent
 

Static Public Member Functions

template<size_t i, class Derived >
static auto subBlock (Eigen::MatrixBase< Derived > const &mat)
 
static auto tangentExamples () -> std::vector< Tangent >
 
template<size_t kArrayLen>
static std::optional< ProductManifold< TSubManifold... > > average (std::array< ProductManifold< TSubManifold... >, kArrayLen > const &range)
 

Static Public Attributes

static constexpr size_t kNumManifolds = sizeof...(TSubManifold)
 
static constexpr std::array< int, kNumManifoldskManifoldSizes
 
static constexpr std::array< int, kNumManifolds+1 > kManifoldStarts
 
static constexpr size_t kNumParams
 
static constexpr size_t kDof
 

Member Typedef Documentation

◆ Scalar

template<concepts::Manifold... TSubManifold>
using sophus::ProductManifold< TSubManifold >::Scalar = typename std::tuple_element<0, Scalars>::type

◆ Scalars

template<concepts::Manifold... TSubManifold>
using sophus::ProductManifold< TSubManifold >::Scalars = std::tuple<typename TSubManifold::Scalar...>

◆ Self

template<concepts::Manifold... TSubManifold>
using sophus::ProductManifold< TSubManifold >::Self = ProductManifold<TSubManifold...>

◆ Tangent

template<concepts::Manifold... TSubManifold>
using sophus::ProductManifold< TSubManifold >::Tangent = Eigen::Vector<Scalar, kDof>

◆ Tuple

template<concepts::Manifold... TSubManifold>
using sophus::ProductManifold< TSubManifold >::Tuple = std::tuple<TSubManifold...>

Constructor & Destructor Documentation

◆ ProductManifold() [1/3]

template<concepts::Manifold... TSubManifold>
sophus::ProductManifold< TSubManifold >::ProductManifold ( )
default

◆ ProductManifold() [2/3]

template<concepts::Manifold... TSubManifold>
sophus::ProductManifold< TSubManifold >::ProductManifold ( ProductManifold< TSubManifold > const &  )
default

◆ ProductManifold() [3/3]

template<concepts::Manifold... TSubManifold>
sophus::ProductManifold< TSubManifold >::ProductManifold ( TSubManifold const &...  manifolds)
inline

Member Function Documentation

◆ average()

template<concepts::Manifold... TSubManifold>
template<size_t kArrayLen>
static std::optional<ProductManifold<TSubManifold...> > sophus::ProductManifold< TSubManifold >::average ( std::array< ProductManifold< TSubManifold... >, kArrayLen > const &  range)
inlinestatic

◆ ominus()

template<concepts::Manifold... TSubManifold>
auto sophus::ProductManifold< TSubManifold >::ominus ( Self const &  other) const -> Tangent
inline

◆ operator=()

template<concepts::Manifold... TSubManifold>
ProductManifold& sophus::ProductManifold< TSubManifold >::operator= ( ProductManifold< TSubManifold > const &  )
default

◆ oplus()

template<concepts::Manifold... TSubManifold>
auto sophus::ProductManifold< TSubManifold >::oplus ( Tangent const &  tangent) const -> Self
inline

◆ subBlock()

template<concepts::Manifold... TSubManifold>
template<size_t i, class Derived >
static auto sophus::ProductManifold< TSubManifold >::subBlock ( Eigen::MatrixBase< Derived > const &  mat)
inlinestatic

◆ subManifold() [1/2]

template<concepts::Manifold... TSubManifold>
template<size_t i>
auto& sophus::ProductManifold< TSubManifold >::subManifold ( )
inline

◆ subManifold() [2/2]

template<concepts::Manifold... TSubManifold>
template<size_t i>
auto const& sophus::ProductManifold< TSubManifold >::subManifold ( ) const
inline

◆ tangentExamples()

template<concepts::Manifold... TSubManifold>
static auto sophus::ProductManifold< TSubManifold >::tangentExamples ( ) -> std::vector<Tangent>
inlinestatic

Member Data Documentation

◆ kDof

template<concepts::Manifold... TSubManifold>
constexpr size_t sophus::ProductManifold< TSubManifold >::kDof
staticconstexpr
Initial value:
= [](auto const&... sizes) {
size_t sum = 0;
(..., (sum += sizes));
return sum;
}(TSubManifold::kDof...)

◆ kManifoldSizes

template<concepts::Manifold... TSubManifold>
constexpr std::array<int, kNumManifolds> sophus::ProductManifold< TSubManifold >::kManifoldSizes
staticconstexpr
Initial value:
= {
{TSubManifold::kDof...}}

◆ kManifoldStarts

template<concepts::Manifold... TSubManifold>
constexpr std::array<int, kNumManifolds + 1> sophus::ProductManifold< TSubManifold >::kManifoldStarts
staticconstexpr
Initial value:
=
cumulativeSum<0, TSubManifold::kDof...>()

◆ kNumManifolds

template<concepts::Manifold... TSubManifold>
constexpr size_t sophus::ProductManifold< TSubManifold >::kNumManifolds = sizeof...(TSubManifold)
staticconstexpr

◆ kNumParams

template<concepts::Manifold... TSubManifold>
constexpr size_t sophus::ProductManifold< TSubManifold >::kNumParams
staticconstexpr
Initial value:
= [](auto const&... sizes) {
size_t sum = 0;
(..., (sum += sizes));
return sum;
}(TSubManifold::kNumParams...)

The documentation for this class was generated from the following file:
sophus::cumulativeSum
constexpr std::array< int, sizeof...(Ds)> cumulativeSum()
Definition: product_manifold.h:17
farm_ng::sum
auto sum(Expected< A > maybe_left, Expected< A > maybe_right) -> Expected< A >
Definition: expected_test.cpp:98