SRBA: Sparser Relative Bundle Adjustment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Classes | Public Types | Public Attributes
srba::TRBA_Problem_state< kf2kf_pose_t, landmark_t, obs_t, RBA_OPTIONS >::TSpanningTree Struct Reference

Detailed Description

template<class kf2kf_pose_t, class landmark_t, class obs_t, class RBA_OPTIONS>
struct srba::TRBA_Problem_state< kf2kf_pose_t, landmark_t, obs_t, RBA_OPTIONS >::TSpanningTree

Definition at line 569 of file srba_types.h.

List of all members.

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

Member Typedef Documentation

template<class kf2kf_pose_t, class landmark_t, class obs_t, class RBA_OPTIONS>
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.

template<class kf2kf_pose_t, class landmark_t, class obs_t, class RBA_OPTIONS>
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.


Member Function Documentation

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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

Useful for debugging

Returns:
false on error

Definition at line 71 of file spantree_misc.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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.

Returns:
false on error

Definition at line 122 of file spantree_misc.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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

Returns:
The number of updated poses.

Definition at line 99 of file spantree_update_numeric.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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]

Returns:
The number of updated poses.

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.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
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

Parameters:
[in]max_distanceIs 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.


Member Data Documentation

template<class kf2kf_pose_t, class landmark_t, class obs_t, class RBA_OPTIONS>
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.


The documentation for this struct was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends