46 #ifndef BSFM_SLAM_LANDMARK_H
47 #define BSFM_SLAM_LANDMARK_H
51 #include <unordered_map>
56 #include "../geometry/point_3d.h"
57 #include "../geometry/triangulation.h"
58 #include "../util/types.h"
66 typedef std::shared_ptr<Landmark>
Ptr;
67 typedef std::shared_ptr<const Landmark>
ConstPtr;
106 const std::vector<Observation::Ptr>&
Observations()
const;
119 bool retriangulate =
true);
std::shared_ptr< Observation > Ptr
const std::vector< Observation::Ptr > & Observations() const
static LandmarkIndex NextLandmarkIndex()
::bsfm::Descriptor descriptor_
static Landmark::Ptr GetLandmark(LandmarkIndex landmark_index)
bool SeenByAtLeastTwoViews(const std::vector< ViewIndex > &view_indices)
LandmarkIndex landmark_index_
static LandmarkIndex NumExistingLandmarks()
unsigned int LandmarkIndex
static void ResetLandmarks()
const Point3D & Position() const
static Landmark::Ptr Create()
std::vector< Observation::Ptr > observations_
static LandmarkIndex current_landmark_index_
LandmarkIndex Index() const
static std::unordered_map< LandmarkIndex, Landmark::Ptr > landmark_registry_
std::shared_ptr< Landmark > Ptr
std::shared_ptr< View > SourceView() const
static bool IsValidLandmark(LandmarkIndex landmark_index)
const ::bsfm::Descriptor & Descriptor() const
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
bool IncorporateObservation(const Observation::Ptr &observation, bool retriangulate=true)
::Eigen::Matrix< double, Eigen::Dynamic, 1 > Descriptor
void SetDescriptor(const ::bsfm::Descriptor &descriptor)
void SetPosition(const Point3D &position)
std::shared_ptr< const Landmark > ConstPtr