template struct sophus::LieGroupCeresTestsΒΆ

#include <test_impl.h>

template <template<class, int=0> class TLieGroup>
struct LieGroupCeresTests {
    // typedefs

    using LieGroup = TLieGroup<TScalar> ;
    using LieGroupF64 = LieGroup<double> ;
    using PointF64 = typename LieGroupF64::Point ;
    using Tangentd = typename LieGroupF64::Tangent ;
    using StdVector = std::vector<TScalar, Eigen::aligned_allocator<TScalar>> ;

    // structs

    struct TestGraphFunctor;
    struct TestLieGroupCostFunctor;
    struct TestPointCostFunctor;

    // fields

    static constexpr int kMatrixDim = LieGroupF64::kMatrixDim;
    static constexpr int kNumParameters = LieGroupF64::kNumParameters;
    static constexpr int kDoF = LieGroupF64::kDoF;
    StdVector<LieGroupF64> group_vec;
    StdVector<PointF64> point_vec;

    // construction

    LieGroupCeresTests(
        StdVector<LieGroupF64> const& group_vec,
        StdVector<PointF64> const& point_vec
        );

    // methods

    bool testAll();

    bool testAveraging(
        const size_t num_vertices,
        double const sigma_init,
        double const sigma_observation
        );

    bool test(
        LieGroupF64 const& t_w_targ,
        LieGroupF64 const& t_w_init,
        PointF64 const& point_a_init,
        PointF64 const& point_b
        );

    bool testManifold(
        LieGroupF64 const& x,
        LieGroupF64 const& y
        );

    bool xPlusZeroIsXAt(LieGroupF64 const& x);
    bool xMinusXIsZeroAt(LieGroupF64 const& x);

    bool minusPlusIsIdentityAt(
        LieGroupF64 const& x,
        Tangentd const& delta
        );

    bool plusMinusIsIdentityAt(
        LieGroupF64 const& x,
        LieGroupF64 const& y
        );

    bool minusPlusJacobianIsIdentityAt(LieGroupF64 const& x);
};