Program Listing for File Synchronizer.h

Return to documentation for file (include/mola_kernel/utils/Synchronizer.h)

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

#include <mrpt/obs/obs_frwds.h>

#include <map>
#include <memory>
#include <optional>
#include <set>
#include <string>

namespace mola
{
class Synchronizer
{
 public:
  Synchronizer() = default;

  struct Parameters
  {
    Parameters() = default;

    double window_length             = 2.0;
    double synchronization_tolerance = 0.05;
    std::size_t           minimum_observation_count = 2;
    std::set<std::string> expected_observation_labels;
  };

  Parameters parameters;

  using NamedObservationSet = std::map<std::string, std::shared_ptr<mrpt::obs::CObservation>>;

  void add(const std::shared_ptr<mrpt::obs::CObservation>& obs);

  std::optional<NamedObservationSet> getObservationGroup();

  void clear();

 private:
  std::map<double, NamedObservationSet> buffer_;
};

}  // namespace mola