Go to the documentation of this file.
43 SLAMCore(std::shared_ptr<isae::SLAMParameters> slam_param);
48 virtual bool init() = 0;
107 std::shared_ptr<ImageSensor> &sensor1,
124 std::shared_ptr<ImageSensor> &sensor1,
137 void predictFeature(std::vector<std::shared_ptr<AFeature>> features,
138 std::shared_ptr<ImageSensor> sensor,
139 std::vector<std::shared_ptr<AFeature>> &features_init,
166 bool predict(std::shared_ptr<Frame> &f);
254 bool init()
override;
267 bool init()
override;
282 std::shared_ptr<IMU> _last_IMU;
293 bool init()
override;
303 std::shared_ptr<IMU> _last_IMU;
314 bool init()
override;
328 bool init()
override;
353 const Eigen::Affine3d T_cam0_cam0p,
365 bool predict(std::shared_ptr<Frame> &f);
370 _matches_in_time_cam1_lmk;
std::vector< std::vector< float > > _timings_kfrate_be
Definition: slamCore.h:243
bool frontEndStep() override
Front End: detection, tracking, pose estimation and landmark triangulation.
Definition: slamBiMono.cpp:59
SLAMNonOverlappingFov(std::shared_ptr< SLAMParameters > slam_param)
Definition: slamCore.h:326
SLAMBiMono(std::shared_ptr< SLAMParameters > slam_param)
Definition: slamCore.h:252
void predictFeature(std::vector< std::shared_ptr< AFeature >> features, std::shared_ptr< ImageSensor > sensor, std::vector< std::shared_ptr< AFeature >> &features_init, vec_match previous_matches)
Predicts the position of a set of features on a given sensor.
Definition: slamCore.cpp:241
bool isDegenerativeMotion(Eigen::Affine3d T_cam0_cam0p, Eigen::Affine3d T_cam0_cam1, typed_vec_match matches)
To check if the scale can't be recovered.
Definition: slamNonOverlappingFov.cpp:634
std::shared_ptr< Mesh3D > _mesh_to_display
Definition: slamCore.h:83
double _max_movement_parallax
Max parallax until a KF is voted.
Definition: slamCore.h:208
float _avg_wdw_opt_t
Definition: slamCore.h:232
float _avg_marg_t
Definition: slamCore.h:231
double _min_movement_parallax
Under this parallax, no motion is considered.
Definition: slamCore.h:209
void cleanFeatures(std::shared_ptr< Frame > &f)
Clean all the features that are outliers or are linked to outlier landmark.
Definition: slamCore.cpp:67
A SLAM class for non overlapping FoV setups.
Definition: slamCore.h:322
bool init() override
Initialization step : create the first 3D landmarks and keyframe(s)
Definition: slamBiMono.cpp:7
bool init() override
Initialization step : create the first 3D landmarks and keyframe(s)
Definition: slamBiMonoVIO.cpp:7
float _avg_lmk_init_t
Definition: slamCore.h:226
bool init() override
Initialization step : create the first 3D landmarks and keyframe(s)
Definition: slamMonoVIO.cpp:5
bool init() override
Initialization step : create the first 3D landmarks and keyframe(s)
Definition: slamNonOverlappingFov.cpp:18
std::mutex _map_mutex
Definition: slamCore.h:215
std::shared_ptr< isae::LocalMap > _local_map_to_display
Definition: slamCore.h:81
virtual bool frontEndStep()=0
Front End: detection, tracking, pose estimation and landmark triangulation.
int scaleEstimationRANSAC(const Eigen::Affine3d T_cam0_cam1, const Eigen::Affine3d T_cam0_cam0p, typed_vec_match matches_cam1, double &lambda)
To compute the scale using a single point in a RANSAC fashion.
Definition: slamNonOverlappingFov.cpp:423
float _avg_clean_t
Definition: slamCore.h:230
std::unordered_map< std::string, vec_match > typed_vec_match
An unordered map to link match vector with their type.
Definition: typedefs.h:26
float _avg_frame_opt_t
Definition: slamCore.h:229
uint matchFeatures(std::shared_ptr< ImageSensor > &sensor0, std::shared_ptr< ImageSensor > &sensor1, typed_vec_match &matches, typed_vec_match &matches_lmk, typed_vec_features features_to_track)
Predicts the position of the features and matches all the features between sensors.
Definition: slamCore.cpp:285
std::shared_ptr< isae::GlobalMap > _global_map
Current global map.
Definition: slamCore.h:206
bool predict(std::shared_ptr< Frame > &f)
Prediction that takes into account both camera motions.
Definition: slamNonOverlappingFov.cpp:588
SLAMBiMonoVIO(std::shared_ptr< SLAMParameters > slam_param)
Definition: slamCore.h:265
bool frontEndStep() override
Front End: detection, tracking, pose estimation and landmark triangulation.
Definition: slamNonOverlappingFov.cpp:175
std::unordered_map< std::string, std::vector< std::shared_ptr< isae::AFeature > > > typed_vec_features
A typed vector of features to handle hetereogeneous feature sets.
Definition: typedefs.h:28
float _avg_resur_lmk
Definition: slamCore.h:238
float _avg_matches_frame
Definition: slamCore.h:237
float _avg_match_time_t
Definition: slamCore.h:224
float _avg_filter_t
Definition: slamCore.h:225
typed_vec_match _matches_in_time
Typed vector of the matches between the last KF and _frame.
Definition: slamCore.h:199
std::shared_ptr< isae::LocalMap > _local_map
Current local map.
Definition: slamCore.h:205
float _avg_match_frame_t
Definition: slamCore.h:223
typed_vec_features detectFeatures(std::shared_ptr< ImageSensor > &sensor)
Detect all types of features for a given sensor with bucketting.
Definition: slamCore.cpp:184
double _min_lmk_number
Under this number of landmark in _frame a KF is voted.
Definition: slamCore.h:210
bool frontEndStep() override
Front End: detection, tracking, pose estimation and landmark triangulation.
Definition: slamBiMonoVIO.cpp:314
void outlierRemoval()
To remove outliers on both cameras.
Definition: slamNonOverlappingFov.cpp:355
void initLandmarks(std::shared_ptr< Frame > &f)
Initialize all the landmarks of the current frame using _matches_in_time and _matches_in_frame.
Definition: slamCore.cpp:96
float _removed_lmk
Definition: slamCore.h:233
int _successive_fails
Number of successive failure to trigger reinitialization.
Definition: slamCore.h:76
std::shared_ptr< Mesher > _mesher
Mesher of the SLAM.
Definition: slamCore.h:207
float _avg_predict_t
Definition: slamCore.h:228
double _parallax
Parallax between the last KF and _frame.
Definition: slamCore.h:211
The core abstract class of the SLAM system. It handles front-end, back-end and initialization.
Definition: slamCore.h:40
std::shared_ptr< Frame > _frame_to_display
Definition: slamCore.h:80
void IMUprofiling()
For profiling at IMU rate.
Definition: slamBiMonoVIO.cpp:616
uint trackFeatures(std::shared_ptr< ImageSensor > &sensor0, std::shared_ptr< ImageSensor > &sensor1, typed_vec_match &matches, typed_vec_match &matches_lmk, typed_vec_features features_to_track)
Predicts the position of the features and tracks all the features.
Definition: slamCore.cpp:315
virtual bool backEndStep()=0
brief description Back End: marginalization, local map optimization
float _avg_detect_t
Definition: slamCore.h:221
std::vector< feature_pair > vec_match
A vector of feature pairs i.e. matches.
Definition: typedefs.h:24
bool init() override
Initialization step : create the first 3D landmarks and keyframe(s)
Definition: slamMono.cpp:5
std::vector< std::vector< float > > _timings_frate
Definition: slamCore.h:241
typed_vec_match _matches_in_frame_lmk
Typed vector of the matches with landmarks between the sensors of _frame.
Definition: slamCore.h:202
A SLAM class for bi-monocular setups.
Definition: slamCore.h:249
SLAMMono(std::shared_ptr< SLAMParameters > slam_param)
Definition: slamCore.h:312
typed_vec_match epipolarFiltering(std::shared_ptr< ImageSensor > &cam0, std::shared_ptr< ImageSensor > &cam1, typed_vec_match matches)
Filters the matches between two sensors (with consistent pose estimates) using epipolar plane check.
Definition: slamCore.cpp:201
void runFullOdom()
Thread for the backend.
Definition: slamCore.cpp:607
uint _nkeyframes
Definition: slamCore.h:220
std::shared_ptr< isae::SLAMParameters > _slam_param
Definition: slamCore.h:79
bool backEndStep() override
brief description Back End: marginalization, local map optimization
Definition: slamMono.cpp:272
Definition: AFeature2D.h:8
bool backEndStep() override
brief description Back End: marginalization, local map optimization
Definition: slamBiMono.cpp:239
std::shared_ptr< Frame > getLastKF()
Definition: slamCore.h:188
bool frontEndStep() override
Front End: detection, tracking, pose estimation and landmark triangulation.
Definition: slamMonoVIO.cpp:386
typed_vec_match _matches_in_time_lmk
Typed vector of the matches with landmarks between the last KF and _frame.
Definition: slamCore.h:200
void profiling()
A function to monitor the SLAM behaviour.
Definition: slamCore.cpp:450
bool backEndStep() override
brief description Back End: marginalization, local map optimization
Definition: slamMonoVIO.cpp:587
SLAMMonoVIO(std::shared_ptr< SLAMParameters > slam_param)
Definition: slamCore.h:291
float _avg_processing_t
Definition: slamCore.h:222
bool frontEndStep() override
Front End: detection, tracking, pose estimation and landmark triangulation.
Definition: slamMono.cpp:115
void runBackEnd()
Thread for the backend.
Definition: slamCore.cpp:598
SLAMNonOverlappingFov()
Definition: slamCore.h:325
bool step_init()
Initialization steps with bi-monocular only for IMU initialization.
Definition: slamBiMonoVIO.cpp:122
void runFrontEnd()
Thread for the frontend.
Definition: slamCore.cpp:584
float _avg_lmk_resur_t
Definition: slamCore.h:227
A SLAM class for monocular + IMU setups.
Definition: slamCore.h:288
A SLAM class for monocular setups.
Definition: slamCore.h:309
bool backEndStep() override
brief description Back End: marginalization, local map optimization
Definition: slamBiMonoVIO.cpp:547
float _avg_matches_time
Definition: slamCore.h:236
std::shared_ptr< Frame > _frame
Current frame.
Definition: slamCore.h:196
bool step_init()
Initialization steps with bi-monocular only for IMU initialization.
Definition: slamMonoVIO.cpp:209
Eigen::Matrix< double, 6, 1 > Vector6d
A double Eigen vector in 6D.
Definition: typedefs.h:16
bool predict(std::shared_ptr< Frame > &f)
Estimates the pose of a given frame.
Definition: slamCore.cpp:413
void initLandmarks(std::shared_ptr< Frame > &f)
To init landmarks on both cameras.
Definition: slamNonOverlappingFov.cpp:519
typed_vec_match _matches_in_frame
Typed vector of the matches between the sensors of _frame.
Definition: slamCore.h:201
uint _nframes
Definition: slamCore.h:219
A SLAM class for bi-monocular + IMU setups.
Definition: slamCore.h:262
bool backEndStep() override
brief description Back End: marginalization, local map optimization
Definition: slamNonOverlappingFov.cpp:317
bool _is_init
Flag for initialization.
Definition: slamCore.h:75
virtual bool init()=0
Initialization step : create the first 3D landmarks and keyframe(s)
bool shouldInsertKeyframe(std::shared_ptr< Frame > &f)
Determines if the frame in argument is a KF.
Definition: slamCore.cpp:351
float _removed_feat
Definition: slamCore.h:234
std::vector< std::vector< float > > _timings_kfrate_fe
Definition: slamCore.h:242
float _lmk_inmap
Definition: slamCore.h:235
Vector6d _6d_velocity
Current Velocity as a Twist vector.
Definition: slamCore.h:212
void outlierRemoval()
Remove all the outlier features of _frame.
Definition: slamCore.cpp:43
std::shared_ptr< isae::GlobalMap > _global_map_to_display
Definition: slamCore.h:82
uint recoverFeatureFromMapLandmarks(std::shared_ptr< isae::AMap > localmap, std::shared_ptr< Frame > &f)
Performs landmark resurection.
Definition: slamCore.cpp:230
void updateLandmarks(typed_vec_match matches_lmk)
Definition: slamCore.cpp:85
SLAMCore()
Definition: slamCore.h:42
std::shared_ptr< Frame > _frame_to_optim
For communication between front-end and back-end.
Definition: slamCore.h:216