SaDVIO
adataprovider.h
Go to the documentation of this file.
1 #ifndef AIMAGEPROVIDER_H
2 #define AIMAGEPROVIDER_H
3 
4 #include <fstream>
5 #include <iostream>
6 #include <queue>
7 
8 #include <Eigen/Core>
9 #include <opencv2/calib3d.hpp>
10 #include <opencv2/core.hpp>
11 #include <opencv2/core/eigen.hpp>
12 
18 
19 namespace isae {
20 
27  public:
28  ADataProvider(std::string path, Config slam_config);
29 
33  std::shared_ptr<Frame> next();
34 
35  std::vector<std::shared_ptr<cam_config>> getCamConfigs() { return _cam_configs; };
36  std::shared_ptr<imu_config> getIMUConfig() { return _imu_config; }
37  int getNCam() { return _ncam; };
38 
42  std::vector<std::shared_ptr<ImageSensor>> createImageSensors(const std::vector<cv::Mat> &imgs,
43  const std::vector<cv::Mat> &masks = {});
44 
48  std::shared_ptr<IMU> createImuSensor(const Eigen::Vector3d &acc, const Eigen::Vector3d &gyr);
49 
53  void addFrameToTheQueue(std::vector<std::shared_ptr<ASensor>> sensors, double time);
54 
55  void addFrameToTheQueue(std::shared_ptr<Frame> frame);
56 
57  protected:
58  void loadSensorsConfiguration(const std::string &path);
59  void loadCamConfig(YAML::Node cam_node);
60  void loadIMUConfig(YAML::Node imu_node);
61 
62  std::shared_ptr<imu_config> _imu_config;
63  std::vector<std::shared_ptr<cam_config>> _cam_configs;
64  int _ncam;
65  std::queue<std::shared_ptr<Frame>> _frame_queue;
67  int _nframes;
68 };
69 
76 class EUROCGrabber {
77  public:
78  EUROCGrabber(std::string folder_path, std::shared_ptr<ADataProvider> prov)
79  : _folder_path(folder_path), _prov(prov) {}
80 
84  void load_filenames();
85 
89  bool addNextFrame();
90 
94  void addAllFrames() {
95  bool not_over = true;
96  while (not_over) {
97  not_over = addNextFrame();
98  }
99  }
100 
101  private:
102  double _time_tolerance = 0.0025;
103  std::string _folder_path;
104  std::queue<std::string> _cam0_filename_queue, _cam1_filename_queue;
105  std::queue<double> _cam0_timestamp_queue, _cam1_timestamp_queue,
106  _imu_timestamp_queue;
107  std::queue<std::shared_ptr<IMU>> _imu_queue;
108 
109  std::shared_ptr<ADataProvider> _prov;
110 };
111 
112 } // namespace isae
113 
114 #endif // AIMAGEPROVIDER_H
isae::ADataProvider::_nframes
int _nframes
Frame counter.
Definition: adataprovider.h:67
DoubleSphere.h
isae::EUROCGrabber
EUROCGrabber class for loading and processing frames from raw data in the EUROC format.
Definition: adataprovider.h:76
isae::ADataProvider::_frame_queue
std::queue< std::shared_ptr< Frame > > _frame_queue
Queue of frames to be processed.
Definition: adataprovider.h:65
isae::EUROCGrabber::load_filenames
void load_filenames()
Load filenames and timestamps from .csv files.
Definition: adataprovider.cpp:270
isae::ADataProvider::_ncam
int _ncam
Number of Image Sensors.
Definition: adataprovider.h:64
isae::Config
This structure contains the configuration parameters located in the config file.
Definition: slamParameters.h:65
isae::EUROCGrabber::EUROCGrabber
EUROCGrabber(std::string folder_path, std::shared_ptr< ADataProvider > prov)
Definition: adataprovider.h:78
isae::ADataProvider::addFrameToTheQueue
void addFrameToTheQueue(std::vector< std::shared_ptr< ASensor >> sensors, double time)
Create a frame from sensors and timestamp and add it to the queue.
Definition: adataprovider.cpp:258
isae::EUROCGrabber::addAllFrames
void addAllFrames()
Add all frames from the queue of the data provider until no more frames are available.
Definition: adataprovider.h:94
isae::ADataProvider::getIMUConfig
std::shared_ptr< imu_config > getIMUConfig()
Definition: adataprovider.h:36
isae::ADataProvider
ADataProvider class for managing data from various sensors.
Definition: adataprovider.h:26
Fisheye.h
isae::ADataProvider::_imu_config
std::shared_ptr< imu_config > _imu_config
IMU configuration.
Definition: adataprovider.h:62
isae::ADataProvider::getNCam
int getNCam()
Definition: adataprovider.h:37
slamParameters.h
isae::ADataProvider::loadIMUConfig
void loadIMUConfig(YAML::Node imu_node)
Definition: adataprovider.cpp:60
isae::ADataProvider::createImuSensor
std::shared_ptr< IMU > createImuSensor(const Eigen::Vector3d &acc, const Eigen::Vector3d &gyr)
From raw IMU measurements to an IMU sensor object.
Definition: adataprovider.cpp:253
isae::ADataProvider::ADataProvider
ADataProvider(std::string path, Config slam_config)
Definition: adataprovider.cpp:7
IMU.h
isae::ADataProvider::loadSensorsConfiguration
void loadSensorsConfiguration(const std::string &path)
Definition: adataprovider.cpp:28
isae::ADataProvider::loadCamConfig
void loadCamConfig(YAML::Node cam_node)
Definition: adataprovider.cpp:81
isae
Definition: AFeature2D.h:8
isae::ADataProvider::createImageSensors
std::vector< std::shared_ptr< ImageSensor > > createImageSensors(const std::vector< cv::Mat > &imgs, const std::vector< cv::Mat > &masks={})
From raw image to sensor objects.
Definition: adataprovider.cpp:177
Camera.h
isae::ADataProvider::_slam_config
Config _slam_config
SLAM configuration.
Definition: adataprovider.h:66
isae::ADataProvider::next
std::shared_ptr< Frame > next()
Return the next frame from the queue.
Definition: adataprovider.cpp:14
isae::EUROCGrabber::addNextFrame
bool addNextFrame()
Add the frame that comes next in the queue of the data provider.
Definition: adataprovider.cpp:374
isae::ADataProvider::getCamConfigs
std::vector< std::shared_ptr< cam_config > > getCamConfigs()
Definition: adataprovider.h:35
isae::ADataProvider::_cam_configs
std::vector< std::shared_ptr< cam_config > > _cam_configs
Vector of camera configurations.
Definition: adataprovider.h:63