Program Listing for File FactorBase.h

Return to documentation for file (include/mola_kernel/factors/FactorBase.h)

/* -------------------------------------------------------------------------
 *   A Modular Optimization framework for Localization and mApping  (MOLA)
 * Copyright (C) 2018-2024 Jose Luis Blanco, University of Almeria
 * See LICENSE for license information.
 * ------------------------------------------------------------------------- */
#pragma once

#include <mola_kernel/id.h>
#include <mrpt/serialization/CSerializable.h>

namespace mola
{
enum class Robust : uint8_t
{
    REGULAR_L2 = 0 ,
    HUBER ,
    CAUCHY,  //
    TUKEY,  //
    WELSH,  //
    GEMANMCCLURE  //
};

class FactorBase : public mrpt::serialization::CSerializable
{
    DEFINE_VIRTUAL_SERIALIZABLE(FactorBase)

   public:
    FactorBase() = default;
    virtual ~FactorBase();

    virtual std::size_t edge_count() const = 0;
    virtual mola::id_t edge_indices(const std::size_t i) const = 0;

    mola::fid_t my_id_{mola::INVALID_FID};

    mola::Robust robust_type_{mola::Robust::REGULAR_L2};

    double robust_param_{1.0};

   protected:
    // Derived classes mus call these methods to serialize the common data in
    // this base class:
    void baseSerializeTo(mrpt::serialization::CArchive& out) const;
    void baseSerializeFrom(mrpt::serialization::CArchive& in);
};

}  // namespace mola