Go to the documentation of this file.
22 class Frame :
public std::enable_shared_from_this<Frame> {
32 void init(
const std::vector<std::shared_ptr<ImageSensor>> &sensors,
unsigned long long timestamp);
37 void init(std::shared_ptr<IMU> &imu,
unsigned long long timestamp);
42 void init(
const std::vector<std::shared_ptr<ASensor>> &sensors,
unsigned long long timestamp);
44 std::vector<std::shared_ptr<ImageSensor>>
getSensors()
const {
return _sensors; }
45 std::shared_ptr<IMU>
getIMU()
const {
return _imu; }
46 void setIMU(std::shared_ptr<IMU> &imu, Eigen::Affine3d T_s_f);
60 std::lock_guard<std::mutex> lock(_frame_mtx);
68 std::lock_guard<std::mutex> lock(_frame_mtx);
76 std::lock_guard<std::mutex> lock(_frame_mtx);
77 return _T_f_w.inverse();
80 void addLandmark(std::shared_ptr<ALandmark> ldmk) { _landmarks[ldmk->_label].push_back(ldmk); }
82 for (
auto typed_ldmks : ldmks) {
83 for (
auto l : typed_ldmks.second)
84 _landmarks[typed_ldmks.first].push_back(l);
92 for (
const auto &typeldmk : _landmarks)
93 N += typeldmk.second.size();
113 _inf_T_prior = inf_prior;
115 Eigen::Affine3d
getPrior()
const {
return _T_prior; }
120 void setdTCov(Eigen::MatrixXd dT_cov) { _dT_cov = dT_cov; }
121 Eigen::MatrixXd
getdTCov()
const {
return _dT_cov; }
124 Eigen::Affine3d _T_f_w = Eigen::Affine3d::Identity();
127 unsigned long long _timestamp;
128 std::vector<std::shared_ptr<ImageSensor>> _sensors;
129 std::shared_ptr<IMU> _imu;
132 bool _has_prior =
false;
134 Eigen::Affine3d _T_prior = Eigen::Affine3d::Identity();
135 Vector6d _inf_T_prior = Vector6d::Zero();
136 Eigen::MatrixXd _dT_cov =
137 Eigen::MatrixXd::Identity(6, 6);
139 mutable std::mutex _frame_mtx;
static int _frame_count
Static counter for frame IDs.
Definition: frame.h:26
Eigen::Affine3d getPrior() const
Definition: frame.h:115
void setIMU(std::shared_ptr< IMU > &imu, Eigen::Affine3d T_s_f)
Definition: frame.cpp:56
void setKeyFrame()
Definition: frame.h:100
void setPrior(Eigen::Affine3d T_prior, Vector6d inf_prior)
Definition: frame.h:110
Eigen::Affine3d getFrame2WorldTransform() const
Get the pose of the frame in the world frame.
Definition: frame.h:75
Eigen::Affine3d getWorld2FrameTransform() const
Get the pose of the world wrt to the frame.
Definition: frame.h:67
void cleanSensors()
free all the pointers related to sensors
Definition: frame.h:51
std::shared_ptr< IMU > getIMU() const
Definition: frame.h:45
void setdTCov(Eigen::MatrixXd dT_cov)
Definition: frame.h:120
Vector6d getInfPrior() const
Definition: frame.h:116
void setWorld2FrameTransform(Eigen::Affine3d T_f_w)
Set the pose of the world wrt the frame.
Definition: frame.h:59
bool isKeyFrame() const
Return true if the frame is a keyframe, false otherwise.
Definition: frame.h:106
uint getInMapLandmarksNumber() const
Definition: frame.cpp:64
std::vector< std::shared_ptr< ImageSensor > > getSensors() const
Definition: frame.h:44
void cleanLandmarks()
Definition: frame.cpp:85
uint getLandmarksNumber() const
Definition: frame.h:90
Definition: AFeature2D.h:8
bool hasPrior() const
Definition: frame.h:109
std::unordered_map< std::string, std::vector< std::shared_ptr< isae::ALandmark > > > typed_vec_landmarks
A typed vector of landmarks to handle hetereogeneous landmark sets.
Definition: typedefs.h:30
typed_vec_landmarks getLandmarks() const
Definition: frame.h:87
unsigned long long getTimestamp() const
Definition: frame.h:98
void init(const std::vector< std::shared_ptr< ImageSensor >> &sensors, unsigned long long timestamp)
Initialization of a frame with images.
Eigen::Matrix< double, 6, 1 > Vector6d
A double Eigen vector in 6D.
Definition: typedefs.h:16
void unsetKeyFrame()
Definition: frame.h:101
void addLandmark(std::shared_ptr< ALandmark > ldmk)
Definition: frame.h:80
Eigen::MatrixXd getdTCov() const
Definition: frame.h:121
A Frame class representing a set of sensors and landmarks at a specific timestamp.
Definition: frame.h:22
int _id
Unique ID for the frame, assigned at initialization.
Definition: frame.h:27
void addLandmarks(isae::typed_vec_landmarks ldmks)
Definition: frame.h:81