Program Listing for File RawDataSourceBase.h
↰ Return to documentation for file (include/mola_kernel/interfaces/RawDataSourceBase.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/Yaml.h>
#include <mola_kernel/interfaces/ExecutableBase.h>
#include <mola_kernel/interfaces/RawDataConsumer.h>
#include <mrpt/core/WorkerThreadsPool.h>
#include <mrpt/core/initializer.h>
#include <mrpt/core/pimpl.h>
#include <mrpt/io/CFileGZOutputStream.h>
#include <mrpt/obs/CObservation.h>
namespace mola
{
using timestep_t = std::size_t;
class RawDataSourceBase : public mola::ExecutableBase
{
DEFINE_VIRTUAL_MRPT_OBJECT(RawDataSourceBase)
public:
RawDataSourceBase();
virtual ~RawDataSourceBase();
void attachToDataConsumer(RawDataConsumer& rdc);
void initialize(const Yaml& cfg) override final;
protected:
virtual void initialize_rds(const Yaml& cfg) = 0;
public:
protected:
void sendObservationsToFrontEnds(const CObservation::Ptr& obs);
virtual void prepareObservationBeforeFrontEnds(
const CObservation::Ptr& obs) const;
void onDatasetPlaybackEnds();
private:
std::vector<RawDataConsumer*> rdc_;
mrpt::io::CFileGZOutputStream export_to_rawlog_out_;
mrpt::WorkerThreadsPool worker_pool_export_rawlog_{
1, mrpt::WorkerThreadsPool::POLICY_FIFO, "worker_pool_export_rawlog"};
mrpt::WorkerThreadsPool gui_updater_threadpool_{
1 /* 1 thread */, mrpt::WorkerThreadsPool::POLICY_FIFO,
"gui_updater_threadpool"};
struct SensorViewerImpl;
std::map<std::string, mrpt::pimpl<SensorViewerImpl>> sensor_preview_gui_;
bool force_load_lazy_load_ = false;
bool quit_mola_app_on_dataset_end_ = false;
};
} // namespace mola