Class LoopClosureHandler

Class Documentation

class loop_closure_handler::LoopClosureHandler

Public Types

typedef std::unordered_map<FrameKeypointIndexPair, vi_map::LandmarkIdSet> KeypointToLandmarksMap
typedef std::vector<std::pair<FrameKeypointIndexPair, vi_map::LandmarkId>> KeypointToLandmarkVector
typedef std::vector<std::pair<vi_map::LandmarkId, vi_map::LandmarkId>> LandmarkToLandmarkVector
typedef std::unordered_map<vi_map::LandmarkId, vi_map::LandmarkId> LandmarkToLandmarkMap
typedef std::pair<Eigen::Vector3d, Eigen::Vector3d> Vector3dPair
typedef Aligned<std::vector, Vector3dPair> MergedLandmark3dPositionVector
typedef vi_map::MissionBaseFrameMap MissionBaseFrameMap

Public Functions

explicit LoopClosureHandler(vi_map::VIMap *map, LandmarkToLandmarkMap *landmark_id_old_to_new)
explicit LoopClosureHandler(summary_map::LocalizationSummaryMap const *summary_map, LandmarkToLandmarkMap *landmark_id_old_to_new)
LoopClosureHandler() = delete
bool handleLoopClosure(const vi_map::LoopClosureConstraint &loop_closure_constraint, bool merge_matching_landmarks, bool add_loopclosure_edges, int *num_inliers, double *inlier_ratio, pose::Transformation *T_G_I_ransac, vi_map::LoopClosureConstraint *inlier_constraints, MergedLandmark3dPositionVector *landmark_pairs_merged, pose_graph::VertexId *vertex_id_closest_to_structure_matches, std::mutex *map_mutex, bool use_random_pnp_seed = true) const
bool handleLoopClosure(const aslam::VisualNFrame &query_vertex_n_frame, const std::vector<vi_map::LandmarkIdList> &query_vertex_landmark_ids, const pose_graph::VertexId &query_vertex_id, const vi_map::VertexKeyPointToStructureMatchList &structure_matches, bool merge_matching_landmarks, bool add_loopclosure_edges, int *num_inliers, double *inlier_ratio, pose::Transformation *T_G_I_ransac, vi_map::VertexKeyPointToStructureMatchList *inlier_structure_matches, MergedLandmark3dPositionVector *landmark_pairs_merged, pose_graph::VertexId *vertex_id_closest_to_structure_matches, std::mutex *map_mutex, bool use_random_pnp_seed = true) const
void updateQueryKeyframeInvalidLandmarkAssociations(const std::vector<int> &inliers, const KeypointToLandmarkVector &query_keypoint_idx_to_landmark_pairs, vi_map::Vertex *query_vertex) const
void mergeLandmarks(const std::vector<int> &inliers, const LandmarkToLandmarkVector &query_landmark_to_map_landmark_pairs, MergedLandmark3dPositionVector *landmark_pairs_actually_merged) const

Friends

friend class LoopClosureHandlerTest