SRBA: Sparser Relative Bundle Adjustment
|
Definition at line 569 of file srba_types.h.
Classes | |
struct | TSpanningTreeSym |
Public Types | |
typedef mrpt::utils::map_as_vector < TKeyFrameID, std::map < TKeyFrameID, TSpanTreeEntry > , std::deque< std::pair < TKeyFrameID, std::map < TKeyFrameID, TSpanTreeEntry > > > > | next_edge_maps_t |
typedef mrpt::utils::map_as_vector < TKeyFrameID, std::map < TKeyFrameID, k2k_edge_vector_t > , std::deque< std::pair < TKeyFrameID, std::map < TKeyFrameID, k2k_edge_vector_t > > > > | all_edges_maps_t |
Public Member Functions | |
Spanning tree main operations | |
void | clear () |
void | update_symbolic_new_node (const TKeyFrameID new_node_id, const TPairKeyFrameID &new_edge, const topo_dist_t max_depth) |
size_t | update_numeric (bool skip_marked_as_uptodate=false) |
size_t | update_numeric (const std::set< TKeyFrameID > &kfs_to_update, bool skip_marked_as_uptodate=false) |
size_t | update_numeric_only_all_from_node (const typename all_edges_maps_t::const_iterator &it, bool skip_marked_as_uptodate=false) |
Spanning tree misc. operations | |
void | dump_as_text (std::string &s) const |
bool | dump_as_text_to_file (const std::string &sFileName) const |
bool | save_as_dot_file (const std::string &sFileName, const std::vector< TKeyFrameID > &kf_roots_to_save=std::vector< TKeyFrameID >()) const |
void | get_stats (size_t &num_nodes_min, size_t &num_nodes_max, double &num_nodes_mean, double &num_nodes_std) const |
Public Attributes | |
const TRBA_Problem_state < kf2kf_pose_t, landmark_t, obs_t, RBA_OPTIONS > * | m_parent |
Data structures | |
struct srba::TRBA_Problem_state::TSpanningTree::TSpanningTreeSym | sym |
kf2kf_pose_traits < kf2kf_pose_t > ::TRelativePosesForEachTarget | num |
typedef mrpt::utils::map_as_vector< TKeyFrameID, std::map<TKeyFrameID, k2k_edge_vector_t>, std::deque<std::pair<TKeyFrameID,std::map<TKeyFrameID, k2k_edge_vector_t > > > > srba::TRBA_Problem_state< kf2kf_pose_t, landmark_t, obs_t, RBA_OPTIONS >::TSpanningTree::all_edges_maps_t |
The definition seems complex but behaves just like: std::map< TKeyFrameID, std::map<TKeyFrameID, k2k_edge_vector_t> >
Definition at line 583 of file srba_types.h.
typedef mrpt::utils::map_as_vector< TKeyFrameID, std::map<TKeyFrameID,TSpanTreeEntry>, std::deque<std::pair<TKeyFrameID,std::map<TKeyFrameID,TSpanTreeEntry> > > > srba::TRBA_Problem_state< kf2kf_pose_t, landmark_t, obs_t, RBA_OPTIONS >::TSpanningTree::next_edge_maps_t |
The definition seems complex but behaves just like: std::map< TKeyFrameID, std::map<TKeyFrameID,TSpanTreeEntry> >
Definition at line 576 of file srba_types.h.
void srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::clear | ( | void | ) |
Empty all sym & num data
Definition at line 19 of file spantree_misc.h.
void srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::dump_as_text | ( | std::string & | s | ) | const |
Useful for debugging
Definition at line 28 of file spantree_misc.h.
bool srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::dump_as_text_to_file | ( | const std::string & | sFileName | ) | const |
void srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::get_stats | ( | size_t & | num_nodes_min, |
size_t & | num_nodes_max, | ||
double & | num_nodes_mean, | ||
double & | num_nodes_std | ||
) | const |
Returns min/max and mean/std stats on the number of nodes found on all the spanning trees. Runs in O(N), N=number of keyframes.
Definition at line 258 of file spantree_misc.h.
bool srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::save_as_dot_file | ( | const std::string & | sFileName, |
const std::vector< TKeyFrameID > & | kf_roots_to_save = std::vector<TKeyFrameID>() |
||
) | const |
Saves all (or a subset of all) the spanning trees If kf_roots_to_save is left empty, all STs are saved. Otherwise, only those with the given roots.
Definition at line 122 of file spantree_misc.h.
size_t srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::update_numeric | ( | bool | skip_marked_as_uptodate = false | ) |
Updates all the numeric SE(3) poses from ALL the sym.all_edges
Definition at line 99 of file spantree_update_numeric.h.
size_t srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::update_numeric | ( | const std::set< TKeyFrameID > & | kfs_to_update, |
bool | skip_marked_as_uptodate = false |
||
) |
idem, for the set of edges that have as "from" node any of the IDs in the passed set.
Definition at line 111 of file spantree_update_numeric.h.
size_t srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::update_numeric_only_all_from_node | ( | const typename all_edges_maps_t::const_iterator & | it, |
bool | skip_marked_as_uptodate = false |
||
) |
Updates all the numeric SE(3) poses from a given entry from sym.all_edges[i]
Updates all the numeric SE(3) poses from a given entry from sym.all_edges[i]
Definition at line 19 of file spantree_update_numeric.h.
void srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSpanningTree::update_symbolic_new_node | ( | const TKeyFrameID | new_node_id, |
const TPairKeyFrameID & | new_edge, | ||
const topo_dist_t | max_depth | ||
) |
Incremental update of spanning trees after the insertion of ONE new node and ONE OR MORE edges
[in] | max_distance | Is the maximum distance at which a neighbor can be so we store the shortest path to it. |
Incremental update of spanning trees after the insertion of ONE new node and ONE OR MORE edges
Definition at line 19 of file spantree_update_symbolic.h.
kf2kf_pose_traits<kf2kf_pose_t>::TRelativePosesForEachTarget srba::TRBA_Problem_state< kf2kf_pose_t, landmark_t, obs_t, RBA_OPTIONS >::TSpanningTree::num |
"Numeric" spanning tree: the SE(3) pose of each node wrt to any other: num[SOURCE] |--> map[TARGET] = CPose3D of TARGET as seen from SOURCE (typ: SOURCE is the observing KF, TARGET is the reference base of the observed landmark)
Numeric poses are valid after calling update_numeric()
NOTE: Both symmetric poses, e.g. (i,j) and also (j,i), are stored for convenience of being able to get references/pointers to them.
Definition at line 620 of file srba_types.h.