#include <loop_closing.h>
Public Member Functions | |
void | addClusterToQueue (Cluster cluster) |
Add a cluster to the queue of clusters. | |
void | finalize () |
Finalizes the loop closing class. | |
LoopClosing () | |
Class constructor. | |
void | run () |
Starts graph. | |
void | setGraph (Graph *graph) |
Set the graph object. | |
Protected Member Functions | |
bool | checkNewClusterInQueue () |
Check if there are clusters in the queue. | |
bool | closeLoopWithCluster (Cluster candidate) |
Tries to close a loop between two clusters. | |
void | drawLoopClosure (vector< int > cand_kfs, vector< int > cand_matchings, vector< int > inliers, vector< int > definitive_inliers_per_pair, vector< vector< int > > definitive_cluster_pairs, vector< cv::Point2f > matched_query_kp_l, vector< cv::Point2f > matched_cand_kp_l) |
Draw and publish a loop closure image with all the correspondences between current keyframe and all the loop closing keyframes. | |
void | getCandidates (int cluster_id, vector< pair< int, float > > &candidates) |
Get the best candidates to close a loop by hash. | |
void | processNewCluster () |
Processes the new cluster. | |
Cluster | readCluster (int id) |
Read cluster data from file. | |
void | searchByHash () |
Searches a loop closing between current cluster and all other clusters using the hash. | |
void | searchByProximity () |
Searches a loop closing between current cluster and its closest neighbors. | |
Private Attributes | |
Cluster | c_cluster_ |
image_geometry::PinholeCameraModel | camera_model_ |
> Publishes the image with the loop closure matchings | |
vector< pair< int, int > > | cluster_lc_found_ |
> Hash table: stores a hash for every image. This is the unique variable that grows with the robot trajectory | |
list< Cluster > | cluster_queue_ |
> Current cluster to be processed | |
string | execution_dir_ |
> Stores the number of loop closures | |
Graph * | graph_ |
> Directory where images of loop closures will be stored | |
haloc::Hash | hash_ |
> Mutex for the insertion of new clusters | |
vector< pair< int, vector < float > > > | hash_table_ |
> Hash object | |
string | loop_closures_dir_ |
> Execution directory where all image information will be stored | |
mutex | mutex_cluster_queue_ |
> Clusters queue to be inserted into the graph | |
int | num_loop_closures_ |
> Stores all the loop closures (between clusters) found in order to do not repeat them | |
ros::Publisher | pub_lc_matchings_ |
> Publishes the loop closing queue size | |
ros::Publisher | pub_num_keyframes_ |
> Graph pointer | |
ros::Publisher | pub_num_lc_ |
> Publishes the number of keyframes | |
ros::Publisher | pub_queue_ |
> Publishes the number of loop closings |
Definition at line 30 of file loop_closing.h.
Class constructor.
Definition at line 14 of file loop_closing.cpp.
void slam::LoopClosing::addClusterToQueue | ( | Cluster | cluster | ) |
Add a cluster to the queue of clusters.
The | cluster to be inserted |
Definition at line 95 of file loop_closing.cpp.
bool slam::LoopClosing::checkNewClusterInQueue | ( | ) | [protected] |
Check if there are clusters in the queue.
Definition at line 101 of file loop_closing.cpp.
bool slam::LoopClosing::closeLoopWithCluster | ( | Cluster | candidate | ) | [protected] |
Tries to close a loop between two clusters.
Candidate | cluster |
Definition at line 174 of file loop_closing.cpp.
void slam::LoopClosing::drawLoopClosure | ( | vector< int > | cand_kfs, |
vector< int > | cand_matchings, | ||
vector< int > | inliers, | ||
vector< int > | definitive_inliers_per_pair, | ||
vector< vector< int > > | definitive_cluster_pairs, | ||
vector< cv::Point2f > | matched_query_kp_l, | ||
vector< cv::Point2f > | matched_cand_kp_l | ||
) | [protected] |
Draw and publish a loop closure image with all the correspondences between current keyframe and all the loop closing keyframes.
The | loop closing keyframe identifiers |
The | loop closing cluster identifiers |
The | inlier indices |
The | number of inliers for every loop closure cluster pair |
The | cluster pairs vector |
All | matched keypoints of the current keyframe |
All | matched keypoints of the candidate keyframes |
Definition at line 498 of file loop_closing.cpp.
void slam::LoopClosing::finalize | ( | ) |
Finalizes the loop closing class.
Definition at line 631 of file loop_closing.cpp.
void slam::LoopClosing::getCandidates | ( | int | cluster_id, |
vector< pair< int, float > > & | candidates | ||
) | [protected] |
Get the best candidates to close a loop by hash.
Cluster | identifier |
The | list of best candidates |
Definition at line 414 of file loop_closing.cpp.
void slam::LoopClosing::processNewCluster | ( | ) | [protected] |
Processes the new cluster.
Definition at line 107 of file loop_closing.cpp.
Cluster slam::LoopClosing::readCluster | ( | int | id | ) | [protected] |
Read cluster data from file.
Cluster | identifier |
Definition at line 465 of file loop_closing.cpp.
void slam::LoopClosing::run | ( | ) |
Starts graph.
Definition at line 23 of file loop_closing.cpp.
void slam::LoopClosing::searchByHash | ( | ) | [protected] |
Searches a loop closing between current cluster and all other clusters using the hash.
Definition at line 150 of file loop_closing.cpp.
void slam::LoopClosing::searchByProximity | ( | ) | [protected] |
Searches a loop closing between current cluster and its closest neighbors.
Definition at line 133 of file loop_closing.cpp.
void slam::LoopClosing::setGraph | ( | Graph * | graph | ) | [inline] |
Cluster slam::LoopClosing::c_cluster_ [private] |
Definition at line 113 of file loop_closing.h.
> Publishes the image with the loop closure matchings
Definition at line 141 of file loop_closing.h.
vector< pair<int, int > > slam::LoopClosing::cluster_lc_found_ [private] |
> Hash table: stores a hash for every image. This is the unique variable that grows with the robot trajectory
Definition at line 123 of file loop_closing.h.
list<Cluster> slam::LoopClosing::cluster_queue_ [private] |
> Current cluster to be processed
Definition at line 115 of file loop_closing.h.
string slam::LoopClosing::execution_dir_ [private] |
> Stores the number of loop closures
Definition at line 127 of file loop_closing.h.
Graph* slam::LoopClosing::graph_ [private] |
> Directory where images of loop closures will be stored
Definition at line 131 of file loop_closing.h.
haloc::Hash slam::LoopClosing::hash_ [private] |
> Mutex for the insertion of new clusters
Definition at line 119 of file loop_closing.h.
vector< pair<int, vector<float> > > slam::LoopClosing::hash_table_ [private] |
> Hash object
Definition at line 121 of file loop_closing.h.
string slam::LoopClosing::loop_closures_dir_ [private] |
> Execution directory where all image information will be stored
Definition at line 129 of file loop_closing.h.
mutex slam::LoopClosing::mutex_cluster_queue_ [private] |
> Clusters queue to be inserted into the graph
Definition at line 117 of file loop_closing.h.
int slam::LoopClosing::num_loop_closures_ [private] |
> Stores all the loop closures (between clusters) found in order to do not repeat them
Definition at line 125 of file loop_closing.h.
> Publishes the loop closing queue size
Definition at line 139 of file loop_closing.h.
> Graph pointer
Definition at line 133 of file loop_closing.h.
ros::Publisher slam::LoopClosing::pub_num_lc_ [private] |
> Publishes the number of keyframes
Definition at line 135 of file loop_closing.h.
ros::Publisher slam::LoopClosing::pub_queue_ [private] |
> Publishes the number of loop closings
Definition at line 137 of file loop_closing.h.