Main MRPT website > C++ reference
MRPT logo
List of all members | Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Types | Protected Attributes | Private Member Functions | Private Attributes
mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS > Class Template Reference

Detailed Description

template<class KF2KF_POSE_TYPE, class LM_TYPE, class OBS_TYPE, class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
class mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >

The main class for the mrpt-srba: it defines a Relative Bundle-Adjustment (RBA) problem with (optionally, partially known) landmarks, the methods to update it with new observations and to optimize the relative poses with least squares optimizers.

The unknowns to be solved are:

The set of known data used to run the optimization comprises:

See http://www.mrpt.org/srba and the library guide for a list of possible template arguments, code examples, etc.

Template Parameters
KF2KF_POSE_TYPEThe parameterization of keyframe-to-keyframe relative poses (edges, problem unknowns).
LM_TYPEThe parameterization of relative positions of landmarks relative poses (edges).
OBS_TYPEThe type of observations.
RBA_OPTIONSA struct with nested typedefs which can be used to tune and customize the behavior of this class.

Definition at line 60 of file RbaEngine.h.

#include <mrpt/srba/RbaEngine.h>

Classes

struct  ExportGraphSLAM_Params
 
struct  TAllParameters
 The unique struct which hold all the parameters from the different SRBA modules (sensors, optional features, optimizers,...) More...
 
struct  TBFSEntryEdges
 Private aux structure for BFS searches. More...
 
struct  TNewKeyFrameInfo
 Information returned by RbaEngine::define_new_keyframe() More...
 
struct  TNumeric_dh_dAp_params
 
struct  TNumeric_dh_df_params
 
struct  TObsUsed
 Each of the observations used during the optimization. More...
 
struct  TOpenGLRepresentationOptions
 
struct  TOptimizeExtraOutputInfo
 All the information returned by the local area optimizer. More...
 
struct  TOptimizeLocalAreaParams
 Parameters for optimize_local_area() More...
 
struct  TSRBAParameters
 Different parameters for the SRBA methods. More...
 
struct  VisitorOptimizeLocalArea
 Aux visitor struct, used in optimize_local_area() More...
 

Public Member Functions

 RbaEngine ()
 Default constructor. More...
 
void enable_time_profiler (bool enable=true)
 Enable or disables time profiling of all operations (default=enabled), which will be reported upon destruction. More...
 
const k2k_edges_deque_tget_k2k_edges () const
 
const TRelativeLandmarkPosMapget_known_feats () const
 
const TRelativeLandmarkPosMapget_unknown_feats () const
 
const rba_problem_state_tget_rba_state () const
 
rba_problem_state_tget_rba_state ()
 
mrpt::utils::CTimeLoggerget_time_profiler ()
 Access to the time profiler. More...
 
void setVerbosityLevel (int level)
 Changes the verbosity level: 0=None (only critical msgs), 1=verbose, 2=so verbose you'll have to say "Stop!". More...
 
template<class SPARSEBLOCKHESSIAN >
size_t sparse_hessian_update_numeric (SPARSEBLOCKHESSIAN &H) const
 Rebuild the Hessian symbolic information from the internal pointers to blocks of Jacobians. More...
 
void compute_jacobian_dh_dp (typename TSparseBlocksJacobians_dh_dAp::TEntry &jacob, const k2f_edge_t &observation, const k2k_edges_deque_t &k2k_edges, std::vector< const pose_flag_t * > *out_list_of_required_num_poses) const
 ==================================================================== j,i lm_id,base_id h h l obs_frame_id dh_dp = ---------------— = ------------------------------— d+1 cur_id p p d stp.next_node More...
 
void compute_jacobian_dh_df (typename TSparseBlocksJacobians_dh_df::TEntry &jacob, const k2f_edge_t &observation, std::vector< const pose_flag_t * > *out_list_of_required_num_poses) const
 ==================================================================== j,i lm_id,base_id h h l obs_frame_id dh_df = ---------------— = ------------------------------— More...
 
void gl_aux_draw_node (mrpt::opengl::CSetOfObjects &soo, const std::string &label, const float x, const float y) const
 
void compute_minus_gradient (Eigen::VectorXd &minus_grad, const std::vector< typename TSparseBlocksJacobians_dh_dAp::col_t * > &sparse_jacobs_Ap, const std::vector< typename TSparseBlocksJacobians_dh_df::col_t * > &sparse_jacobs_f, const vector_residuals_t &residuals, const std::map< size_t, size_t > &obs_global_idx2residual_idx) const
 
double reprojection_residuals (vector_residuals_t &residuals, const std::vector< TObsUsed > &observations) const
 reprojection_residuals More...
 
Main API methods
void define_new_keyframe (const typename traits_t::new_kf_observations_t &obs, TNewKeyFrameInfo &out_new_kf_info, const bool run_local_optimization=true)
 The most common entry point for SRBA: append a new keyframe (KF) to the map, automatically creates the required edges and optimize the local area around this new KF. More...
 
void optimize_local_area (const TKeyFrameID root_id, const unsigned int win_size, TOptimizeExtraOutputInfo &out_info, const TOptimizeLocalAreaParams &params=TOptimizeLocalAreaParams(), const std::vector< size_t > &observation_indices_to_optimize=std::vector< size_t >())
 Runs least-squares optimization for all the unknowns within a given topological distance to a given KeyFrame. More...
 
void build_opengl_representation (const srba::TKeyFrameID root_keyframe, const TOpenGLRepresentationOptions &options, mrpt::opengl::CSetOfObjectsPtr out_scene, mrpt::opengl::CSetOfObjectsPtr out_root_tree=mrpt::opengl::CSetOfObjectsPtr()) const
 Build an opengl representation of the current state of this RBA problem One of different representations can be generated: those opengl objects passed as NULL smart pointers will not be generated. More...
 
bool save_graph_as_dot (const std::string &targetFileName, const bool all_landmarks=false) const
 Exports all the keyframes (and optionally all landmarks) as a directed graph in DOT (graphviz) format. More...
 
double eval_overall_squared_error () const
 Evaluates the quality of the overall map/landmark estimations, by computing the sum of the squared error contributions for all observations. More...
 
template<class POSE_GRAPH >
void get_global_graphslam_problem (POSE_GRAPH &global_graph, const ExportGraphSLAM_Params &params=ExportGraphSLAM_Params()) const
 Build a graph-slam problem suitable for recovering the (consistent) global pose (vs. More...
 
Extra API methods (for debugging, etc.)
void clear ()
 Reset the entire problem to an empty state (automatically called at construction) More...
 
TKeyFrameID alloc_keyframe ()
 Users normally won't need to call this directly. More...
 
size_t create_kf2kf_edge (const TKeyFrameID new_kf_id, const TPairKeyFrameID &new_edge, const typename traits_t::new_kf_observations_t &obs, const pose_t &init_inv_pose_val=pose_t())
 Users normally won't need to call this directly. More...
 
void create_complete_spanning_tree (const TKeyFrameID root_id, frameid2pose_map_t &span_tree, const size_t max_depth=std::numeric_limits< size_t >::max(), std::vector< bool > *aux_ws=NULL) const
 Creates a numeric spanning tree between a given root keyframe and the entire graph, returning it into a user-supplied data structure Note that this method does NOT use the depth-limited spanning trees which are built incrementally with the graph. More...
 
bool find_path_bfs (const TKeyFrameID src_kf, const TKeyFrameID trg_kf, std::vector< TKeyFrameID > &found_path) const
 An unconstrained breadth-first search (BFS) for the shortest path between two keyframes. More...
 
template<class KF_VISITOR , class FEAT_VISITOR , class K2K_EDGE_VISITOR , class K2F_EDGE_VISITOR >
void bfs_visitor (const TKeyFrameID root_id, const topo_dist_t max_distance, const bool rely_on_prebuilt_spanning_trees, KF_VISITOR &kf_visitor, FEAT_VISITOR &feat_visitor, K2K_EDGE_VISITOR &k2k_edge_visitor, K2F_EDGE_VISITOR &k2f_edge_visitor) const
 Visits all k2k & k2f edges following a BFS starting at a given starting node and up to a given maximum depth. More...
 

Static Public Member Functions

template<class HESS_Ap , class HESS_f , class HESS_Apf , class JACOB_COLUMN_dh_dAp , class JACOB_COLUMN_dh_df >
static void sparse_hessian_build_symbolic (HESS_Ap &HAp, HESS_f &Hf, HESS_Apf &HApf, const std::vector< JACOB_COLUMN_dh_dAp * > &dh_dAp, const std::vector< JACOB_COLUMN_dh_df * > &dh_df)
 Rebuild the Hessian symbolic information from the given Jacobians. More...
 
static void numeric_dh_dAp (const array_pose_t &x, const TNumeric_dh_dAp_params &params, array_obs_t &y)
 Auxiliary method for numeric Jacobian: numerically evaluates the new observation "y" for a small increment "x" in a relative KF-to-KF pose. More...
 
static void numeric_dh_df (const array_landmark_t &x, const TNumeric_dh_df_params &params, array_obs_t &y)
 Auxiliary method for numeric Jacobian: numerically evaluates the new observation "y" for a small increment "x" in a landmark position. More...
 
static void add_edge_ij_to_list_needed_roots (std::set< TKeyFrameID > &lst, const TKeyFrameID i, const TKeyFrameID j)
 
static double huber_kernel (double delta, const double kernel_param)
 pseudo-huber cost function More...
 

Public Attributes

const pose_t aux_null_pose
 A fixed SE(3) pose at the origin (used when we need a pointer or a reference to a "null transformation"). More...
 
Public data fields
TAllParameters parameters
 

Protected Types

typedef std::multimap< size_t, TKeyFrameID, std::greater< size_t > > base_sorted_lst_t
 

Protected Member Functions

(Protected) Sub-algorithms
void make_ordered_list_base_kfs (const typename traits_t::new_kf_observations_t &obs, base_sorted_lst_t &obs_for_each_base_sorted, std::map< TKeyFrameID, size_t > *out_obs_for_each_base=NULL) const
 Make a list of base KFs of my new observations, ordered in descending order by # of shared observations: More...
 
void determine_kf2kf_edges_to_create (const TKeyFrameID new_kf_id, const typename traits_t::new_kf_observations_t &obs, std::vector< TNewEdgeInfo > &new_k2k_edge_ids)
 This method will call edge_creation_policy(), which has predefined algorithms but could be re-defined by the user in a derived class. More...
 
virtual void edge_creation_policy (const TKeyFrameID new_kf_id, const typename traits_t::new_kf_observations_t &obs, std::vector< TNewEdgeInfo > &new_k2k_edge_ids)
 Implements the edge-creation policy, by default depending on "parameters.edge_creation_policy" if the user doesn't re-implement this virtual method. More...
 
void optimize_edges (const std::vector< size_t > &run_k2k_edges, const std::vector< size_t > &run_feat_ids_in, TOptimizeExtraOutputInfo &out_info, const std::vector< size_t > &observation_indices_to_optimize=std::vector< size_t >())
 

Protected Attributes

int m_verbose_level
 0: None (only critical msgs), 1: verbose, 2:even more verbose, 3: even more More...
 

Private Member Functions

size_t add_observation (const TKeyFrameID observing_kf_id, const typename observation_traits_t::observation_t &new_obs, const array_landmark_t *fixed_relative_position=NULL, const array_landmark_t *unknown_relative_position_init_val=NULL)
 Creates a new known/unknown position landmark (upon first LM observation ), and expands Jacobians with new observation. More...
 
void prepare_Jacobians_required_tree_roots (std::set< TKeyFrameID > &kfs_num_spantrees_to_update, const std::vector< typename TSparseBlocksJacobians_dh_dAp::col_t * > &lst_JacobCols_dAp, const std::vector< typename TSparseBlocksJacobians_dh_df::col_t * > &lst_JacobCols_df)
 Prepare the list of all required KF roots whose spanning trees need numeric updates with each optimization iteration. More...
 
size_t recompute_all_Jacobians (std::vector< typename TSparseBlocksJacobians_dh_dAp::col_t * > &lst_JacobCols_dAp, std::vector< typename TSparseBlocksJacobians_dh_df::col_t * > &lst_JacobCols_df, std::vector< const pose_flag_t * > *out_list_of_required_num_poses=NULL)
 Re-evaluate all Jacobians numerically using their symbolic info. More...
 

Private Attributes

rba_problem_state_t rba_state
 All the beef is here. More...
 
std::vector< bool > m_complete_st_ws
 Temporary working space used in create_complete_spanning_tree() More...
 
mrpt::utils::CTimeLogger m_profiler
 Profiler for all SRBA operations Enabled by default, can be disabled with enable_time_profiler(false) More...
 

Templatized typedef's

typedef RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS > rba_engine_t
 
typedef KF2KF_POSE_TYPE kf2kf_pose_type
 
typedef LM_TYPE lm_type
 
typedef OBS_TYPE obs_type
 
typedef RBA_OPTIONS rba_options_type
 
typedef KF2KF_POSE_TYPE::se_traits_t se_traits_t
 The SE(2) or SE(3) traits struct (for Lie algebra log/exp maps, etc.) More...
 
typedef rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE > traits_t
 
typedef jacobian_traits< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE > jacobian_traits_t
 
typedef hessian_traits< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE > hessian_traits_t
 
typedef kf2kf_pose_traits< KF2KF_POSE_TYPE > kf2kf_pose_traits_t
 
typedef landmark_traits< LM_TYPE > landmark_traits_t
 
typedef observation_traits< OBS_TYPE > observation_traits_t
 
typedef sensor_model< LM_TYPE, OBS_TYPE > sensor_model_t
 The sensor model for the specified combination of LM parameterization + observation type. More...
 
typedef KF2KF_POSE_TYPE::pose_t pose_t
 The type of relative poses (e.g. mrpt::poses::CPose3D) More...
 
typedef TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS > rba_problem_state_t
 
typedef rba_problem_state_t::k2f_edge_t k2f_edge_t
 
typedef rba_problem_state_t::k2k_edge_t k2k_edge_t
 
typedef rba_problem_state_t::k2k_edges_deque_t k2k_edges_deque_t
 A list (deque) of KF-to-KF edges (unknown relative poses). More...
 
typedef kf2kf_pose_traits_t::pose_flag_t pose_flag_t
 
typedef kf2kf_pose_traits_t::frameid2pose_map_t frameid2pose_map_t
 
typedef kf2kf_pose_traits_t::TRelativePosesForEachTarget TRelativePosesForEachTarget
 
typedef landmark_traits_t::TRelativeLandmarkPosMap TRelativeLandmarkPosMap
 An index of feature IDs and their relative locations. More...
 
typedef landmark_traits_t::TRelativeLandmarkPos TRelativeLandmarkPos
 One landmark position (relative to its base KF) More...
 
typedef traits_t::keyframe_info keyframe_info
 
typedef traits_t::new_kf_observation_t new_kf_observation_t
 
typedef traits_t::new_kf_observations_t new_kf_observations_t
 
typedef kf2kf_pose_traits_t::array_pose_t array_pose_t
 
typedef landmark_traits_t::array_landmark_t array_landmark_t
 
typedef observation_traits_t::array_obs_t array_obs_t
 
typedef observation_traits_t::residual_t residual_t
 
typedef observation_traits_t::vector_residuals_t vector_residuals_t
 
typedef jacobian_traits< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::TSparseBlocksJacobians_dh_dAp TSparseBlocksJacobians_dh_dAp
 
typedef jacobian_traits< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::TSparseBlocksJacobians_dh_df TSparseBlocksJacobians_dh_df
 
static const size_t REL_POSE_DIMS = KF2KF_POSE_TYPE::REL_POSE_DIMS
 
static const size_t LM_DIMS = LM_TYPE::LM_DIMS
 
static const size_t OBS_DIMS = OBS_TYPE::OBS_DIMS
 

Member Typedef Documentation

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef landmark_traits_t::array_landmark_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::array_landmark_t

Definition at line 104 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef observation_traits_t::array_obs_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::array_obs_t

Definition at line 105 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef kf2kf_pose_traits_t::array_pose_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::array_pose_t

Definition at line 103 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef std::multimap<size_t,TKeyFrameID,std::greater<size_t> > mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::base_sorted_lst_t
protected

Definition at line 475 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef kf2kf_pose_traits_t::frameid2pose_map_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::frameid2pose_map_t

Definition at line 95 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef hessian_traits<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::hessian_traits_t

Definition at line 80 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef jacobian_traits<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::jacobian_traits_t

Definition at line 79 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef rba_problem_state_t::k2f_edge_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::k2f_edge_t

Definition at line 90 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef rba_problem_state_t::k2k_edge_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::k2k_edge_t

Definition at line 91 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef rba_problem_state_t::k2k_edges_deque_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::k2k_edges_deque_t

A list (deque) of KF-to-KF edges (unknown relative poses).

Definition at line 92 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef traits_t::keyframe_info mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::keyframe_info

Definition at line 99 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef kf2kf_pose_traits<KF2KF_POSE_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::kf2kf_pose_traits_t

Definition at line 81 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef KF2KF_POSE_TYPE mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::kf2kf_pose_type

Definition at line 67 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef landmark_traits<LM_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::landmark_traits_t

Definition at line 82 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef LM_TYPE mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::lm_type

Definition at line 68 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef traits_t::new_kf_observation_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::new_kf_observation_t

Definition at line 100 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef traits_t::new_kf_observations_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::new_kf_observations_t

Definition at line 101 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef OBS_TYPE mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::obs_type

Definition at line 69 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef observation_traits<OBS_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::observation_traits_t

Definition at line 83 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef kf2kf_pose_traits_t::pose_flag_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::pose_flag_t

Definition at line 94 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef KF2KF_POSE_TYPE::pose_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::pose_t

The type of relative poses (e.g. mrpt::poses::CPose3D)

Definition at line 87 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef RbaEngine<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE,RBA_OPTIONS> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::rba_engine_t

Definition at line 65 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef RBA_OPTIONS mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::rba_options_type

Definition at line 70 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef TRBA_Problem_state<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE,RBA_OPTIONS> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::rba_problem_state_t

Definition at line 88 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef observation_traits_t::residual_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::residual_t

Definition at line 106 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef KF2KF_POSE_TYPE::se_traits_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::se_traits_t

The SE(2) or SE(3) traits struct (for Lie algebra log/exp maps, etc.)

Definition at line 76 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef sensor_model<LM_TYPE,OBS_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::sensor_model_t

The sensor model for the specified combination of LM parameterization + observation type.

Definition at line 85 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef rba_joint_parameterization_traits_t<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::traits_t

Definition at line 78 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef landmark_traits_t::TRelativeLandmarkPos mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TRelativeLandmarkPos

One landmark position (relative to its base KF)

Definition at line 98 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef landmark_traits_t::TRelativeLandmarkPosMap mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TRelativeLandmarkPosMap

An index of feature IDs and their relative locations.

Definition at line 97 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef kf2kf_pose_traits_t::TRelativePosesForEachTarget mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TRelativePosesForEachTarget

Definition at line 96 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef jacobian_traits<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE>::TSparseBlocksJacobians_dh_dAp mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSparseBlocksJacobians_dh_dAp

Definition at line 109 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef jacobian_traits<KF2KF_POSE_TYPE,LM_TYPE,OBS_TYPE>::TSparseBlocksJacobians_dh_df mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSparseBlocksJacobians_dh_df

Definition at line 110 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
typedef observation_traits_t::vector_residuals_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::vector_residuals_t

Definition at line 107 of file RbaEngine.h.

Constructor & Destructor Documentation

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::RbaEngine ( )

Member Function Documentation

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
static void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::add_edge_ij_to_list_needed_roots ( std::set< TKeyFrameID > &  lst,
const TKeyFrameID  i,
const TKeyFrameID  j 
)
inlinestatic

Definition at line 746 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::add_observation ( const TKeyFrameID  observing_kf_id,
const typename observation_traits_t::observation_t new_obs,
const array_landmark_t fixed_relative_position = NULL,
const array_landmark_t unknown_relative_position_init_val = NULL 
)
private

Creates a new known/unknown position landmark (upon first LM observation ), and expands Jacobians with new observation.

Parameters
[in]new_obsThe basic data on the observed landmark: landmark ID, keyframe from which it's observed and parameters ("z" vector) of the observation itself (e.g. pixel coordinates).
[in]fixed_relative_positionIf not NULL, this is the first observation of a landmark with a fixed, known position. Each such feature can be created only once, next observations MUST have this field set to NULL as with normal ("unfixed") landmarks.
[in]unknown_relative_position_init_valCan be set to not-NULL only upon the first observation of a landmark with an unknown relative position. The feature will be created with this initial value for its relative position wrt the KF (further optimization will refine that value).
Returns
The 0-based index of the new observation
Note
Both fixed_relative_position and unknown_relative_position_init_val CAN'T be set to !=NULL at once.
If new edges had been introduced before this observation, make sure the symbolic spanning trees are up-to-date!
Runs in O(P+log C), with:
  • C=typical amount of KFs which all see the same landmark,
  • P=typical number of kf2kf edges between observing and the base KF of the observed landmark.

Definition at line 17 of file add-observations.h.

References mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::keyframe_info::adjacent_k2f_edges, ASSERT_, ASSERTDEB_, ASSERTMSG_, mrpt::utils::map_as_vector< KEY, VALUE, VECTOR_T >::end(), mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::k2f_edge_t::feat_has_known_rel_pos, mrpt::srba::observation_traits< OBS_TRAITS >::observation_t::feat_id, mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::k2f_edge_t::feat_rel_pos, mrpt::utils::map_as_vector< KEY, VALUE, VECTOR_T >::find(), mrpt::mrpt::format(), mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::k2f_edge_t::is_first_obs_of_unknown, mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::kf_observation_t::kf_id, mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::kf_observation_t::obs, mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::k2f_edge_t::obs, mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::kf_observation_t::obs_arr, mrpt::srba::observation_traits< OBS_TRAITS >::observation_t::obs_data, and OBS_SUPER_VERBOSE.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
TKeyFrameID mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::alloc_keyframe ( )

Users normally won't need to call this directly.

Append an empty new keyframe to the data structures.

Use define_new_keyframe() instead. This method appends an empty new keyframe to the data structures

Returns
The ID of the new KF.
Note
Runs in O(1)
Returns
The ID of the new KF.
Note
Runs in O(1)

Definition at line 19 of file alloc_keyframe.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
template<class KF_VISITOR , class FEAT_VISITOR , class K2K_EDGE_VISITOR , class K2F_EDGE_VISITOR >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::bfs_visitor ( const TKeyFrameID  root_id,
const topo_dist_t  max_distance,
const bool  rely_on_prebuilt_spanning_trees,
KF_VISITOR &  kf_visitor,
FEAT_VISITOR &  feat_visitor,
K2K_EDGE_VISITOR &  k2k_edge_visitor,
K2F_EDGE_VISITOR &  k2f_edge_visitor 
) const
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::build_opengl_representation ( const srba::TKeyFrameID  root_keyframe,
const TOpenGLRepresentationOptions options,
mrpt::opengl::CSetOfObjectsPtr  out_scene,
mrpt::opengl::CSetOfObjectsPtr  out_root_tree = mrpt::opengl::CSetOfObjectsPtr() 
) const

Build an opengl representation of the current state of this RBA problem One of different representations can be generated: those opengl objects passed as NULL smart pointers will not be generated.

Parameters
[out]out_sceneIf not a NULL smart pointer, at return will hold a 3D view of the current KF, neighbor KFs and landmarks.
[out]out_root_treeIf not a NULL smart pointer, at return will hold a schematic 2D view of the current KF and its spanning tree.

Definition at line 24 of file export_opengl.h.

References ASSERT_, mrpt::opengl::stock_objects::CornerXYZSimple(), mrpt::opengl::CSetOfLines::Create(), mrpt::mrpt::format(), mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::from, mrpt::mrpt::utils::keep_max(), mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOpenGLRepresentationOptions::span_tree_max_depth, and mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::to.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::clear ( void  )

Reset the entire problem to an empty state (automatically called at construction)

Definition at line 28 of file rba_problem_common.h.

Referenced by mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::RbaEngine().

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::compute_jacobian_dh_df ( typename TSparseBlocksJacobians_dh_df::TEntry &  jacob,
const k2f_edge_t observation,
std::vector< const pose_flag_t * > *  out_list_of_required_num_poses 
) const
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::compute_jacobian_dh_dp ( typename TSparseBlocksJacobians_dh_dAp::TEntry &  jacob,
const k2f_edge_t observation,
const k2k_edges_deque_t k2k_edges,
std::vector< const pose_flag_t * > *  out_list_of_required_num_poses 
) const

==================================================================== j,i lm_id,base_id h h l obs_frame_id dh_dp = ---------------— = ------------------------------— d+1 cur_id p p d stp.next_node

See tech report: "A tutorial on SE(3) transformation parameterizations and <h1>on-manifold optimization", Jose-Luis Blanco, 2010.

Definition at line 216 of file srba/include/mrpt/srba/impl/jacobians.h.

References ASSERT_, mrpt::math::jacobians::jacob_numeric_estimate(), mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::kf_observation_t::kf_id, mrpt::srba::rba_joint_parameterization_traits_t< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE >::k2f_edge_t::obs, and mrpt::poses::UNINITIALIZED_POSE.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::compute_minus_gradient ( Eigen::VectorXd &  minus_grad,
const std::vector< typename TSparseBlocksJacobians_dh_dAp::col_t * > &  sparse_jacobs_Ap,
const std::vector< typename TSparseBlocksJacobians_dh_df::col_t * > &  sparse_jacobs_f,
const vector_residuals_t residuals,
const std::map< size_t, size_t > &  obs_global_idx2residual_idx 
) const

Definition at line 20 of file compute_minus_gradient.h.

References ASSERT_.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::create_complete_spanning_tree ( const TKeyFrameID  root_id,
frameid2pose_map_t span_tree,
const size_t  max_depth = std::numeric_limits<size_t>::max(),
std::vector< bool > *  aux_ws = NULL 
) const

Creates a numeric spanning tree between a given root keyframe and the entire graph, returning it into a user-supplied data structure Note that this method does NOT use the depth-limited spanning trees which are built incrementally with the graph.

So, it takes an extra cost to call this method. For the other trees, see get_rba_state()

Parameters
[in]root_idThe root keyframe
[out]span_treeThe output with all found relative poses. Its previous contents are cleared.
[in]max_depthDefaults to std::numeric_limits<size_t>::max() for infinity depth, can be set to a maximum desired depth from the root.
[in]aux_wsAuxiliary working space: Set to an uninitialized vector<bool> (it'll automatically initialized) if you want to call this method simultaneously from several threads. Otherwise, setting to NULL will automatically use one working space, reusable between succesive calls.
See also
find_path_bfs

Definition at line 18 of file spantree_create_complete.h.

References ASSERT_, ASSERTDEB_, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TBFSEntryEdges::dist, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TBFSEntryEdges::edge, mrpt::srba::getTheOtherFromPair2(), mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::inv_pose, MRPT_UNUSED_PARAM, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TBFSEntryEdges::prev, and mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::to.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::create_kf2kf_edge ( const TKeyFrameID  new_kf_id,
const TPairKeyFrameID new_edge,
const typename traits_t::new_kf_observations_t obs,
const pose_t init_inv_pose_val = pose_t() 
)

Users normally won't need to call this directly.

Use define_new_keyframe() instead. This method calls: 1) alloc_kf2kf_edge() for creating the data structures 2) spanning_tree.update_symbolic_new_node() for updating the spanning trees.

Note
obs is passed just for fixing missing spanning trees when using the policy of pure linear graph.

Definition at line 15 of file create_kf2kf_edge.h.

References mrpt::srba::ecpLinearGraph.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::define_new_keyframe ( const typename traits_t::new_kf_observations_t obs,
TNewKeyFrameInfo out_new_kf_info,
const bool  run_local_optimization = true 
)

The most common entry point for SRBA: append a new keyframe (KF) to the map, automatically creates the required edges and optimize the local area around this new KF.

Parameters
[in]obsAll the landmark observations gathered from this new KF (with data association already solved).
[out]out_new_kf_infoReturned information about the newly created KF.
[in]run_local_optimizationIf set to true (default), the local map around the new KF will be optimized (i.e. optimize_local_area() will be called automatically).

Definition at line 16 of file define_new_keyframe.h.

References mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TNewKeyFrameInfo::clear(), mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TNewKeyFrameInfo::created_edge_ids, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TNewKeyFrameInfo::kf_id, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TNewKeyFrameInfo::optimize_results, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TNewKeyFrameInfo::optimize_results_stg1, and VERBOSE_LEVEL.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::determine_kf2kf_edges_to_create ( const TKeyFrameID  new_kf_id,
const typename traits_t::new_kf_observations_t obs,
std::vector< TNewEdgeInfo > &  new_k2k_edge_ids 
)
protected

This method will call edge_creation_policy(), which has predefined algorithms but could be re-defined by the user in a derived class.

Determines and creates the new kf2fk edges given the set of new observations:

Definition at line 17 of file determine_kf2kf_edges_to_create.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::edge_creation_policy ( const TKeyFrameID  new_kf_id,
const typename traits_t::new_kf_observations_t obs,
std::vector< TNewEdgeInfo > &  new_k2k_edge_ids 
)
protectedvirtual

Implements the edge-creation policy, by default depending on "parameters.edge_creation_policy" if the user doesn't re-implement this virtual method.

Determines and creates the new kf2fk edges given the set of new observations:

See tutorials for examples of how to implement custom policies.

Definition at line 16 of file edge_creation_policy.h.

References ASSERT_, ASSERTMSG_, mrpt::srba::ecpICRA2013, mrpt::srba::ecpLinearGraph, mrpt::srba::ecpStarGraph, mrpt::mrpt::format(), mrpt::srba::TNewEdgeInfo::has_aprox_init_val, mrpt::srba::TNewEdgeInfo::id, THROW_EXCEPTION, and VERBOSE_LEVEL.

Referenced by mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSRBAParameters::loadFromConfigFile(), and mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TSRBAParameters::saveToConfigFile().

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::enable_time_profiler ( bool  enable = true)
inline

Enable or disables time profiling of all operations (default=enabled), which will be reported upon destruction.

Definition at line 436 of file RbaEngine.h.

References mrpt::utils::CTimeLogger::enable(), and mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::m_profiler.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
double mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::eval_overall_squared_error ( ) const

Evaluates the quality of the overall map/landmark estimations, by computing the sum of the squared error contributions for all observations.

For this, this method may have to compute very long shortest paths between distant keyframes if no loop-closure edges exist in order to evaluate the best approximation of relative coordinates between observing KFs and features' reference KFs.

The worst-case time consumed by this method is O(M*log(N) + N^2 + N E), N=# of KFs, E=# of edges, M=# of observations.

Definition at line 15 of file eval_overall_error.h.

References ASSERT_, ASSERTDEB_, mrpt::utils::map_as_vector< KEY, VALUE, VECTOR_T >::end(), mrpt::utils::map_as_vector< KEY, VALUE, VECTOR_T >::find(), and mrpt::poses::UNINITIALIZED_POSE.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
bool mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::find_path_bfs ( const TKeyFrameID  src_kf,
const TKeyFrameID  trg_kf,
std::vector< TKeyFrameID > &  found_path 
) const
inline

An unconstrained breadth-first search (BFS) for the shortest path between two keyframes.

Note that this method does NOT use the depth-limited spanning trees which are built incrementally with the graph. So, it takes the extra cost of really running a BFS algorithm. For the other precomputed trees, see get_rba_state() Edge direction is ignored during the search, i.e. as if we had an undirected graph of Keyframes. If both source and target KF coincide, an empty path is returned.

Returns
true if a path was found.
Note
Worst-case computational complexity is that of a BFS over the entire graph: O(V+E), V=number of nodes, E=number of edges.
See also
create_complete_spanning_tree

Definition at line 338 of file RbaEngine.h.

References mrpt::srba::TRBA_Problem_state< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::find_path_bfs(), and mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::rba_state.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
template<class POSE_GRAPH >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_global_graphslam_problem ( POSE_GRAPH &  global_graph,
const ExportGraphSLAM_Params params = ExportGraphSLAM_Params() 
) const

Build a graph-slam problem suitable for recovering the (consistent) global pose (vs.

Exports all the keyframes and landmarks as a directed graph in DOT (graphviz) format.

relative ones as are handled in SRBA) of each keyframe.

Note
This version of the method doesn't account for the covariances of relative pose estimations in RBA.
See also
mrpt::graphslam (for methods capable of optimizing the output graph of pose constraints)
Parameters
[out]global_graphPrevious contents will be erased. The output global graph will be returned here, initialized with poses from a Dijkstra/Spanning-tree from the first KF.
Template Parameters
POSE_GRAPHMust be an instance of mrpt::graphs::CNetworkOfPoses<>, e.g. CNetworkOfPoses2D (for 2D poses) or CNetworkOfPoses3D (for 3D).
Note
This method is NOT O(1)

Definition at line 17 of file get_global_graphslam_problem.h.

References mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::from, mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::inv_pose, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::ExportGraphSLAM_Params::root_kf_id, and mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::to.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const k2k_edges_deque_t& mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_k2k_edges ( ) const
inline
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const TRelativeLandmarkPosMap& mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_known_feats ( ) const
inline
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const rba_problem_state_t& mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_rba_state ( ) const
inline
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
rba_problem_state_t& mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_rba_state ( )
inline
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
mrpt::utils::CTimeLogger& mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_time_profiler ( )
inline

Access to the time profiler.

Definition at line 447 of file RbaEngine.h.

References mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::m_profiler.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const TRelativeLandmarkPosMap& mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_unknown_feats ( ) const
inline
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::gl_aux_draw_node ( mrpt::opengl::CSetOfObjects soo,
const std::string &  label,
const float  x,
const float  y 
) const
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
static double mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::huber_kernel ( double  delta,
const double  kernel_param 
)
inlinestatic

pseudo-huber cost function

Definition at line 781 of file RbaEngine.h.

References nanoflann::abs(), and mrpt::mrpt::utils::square().

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::make_ordered_list_base_kfs ( const typename traits_t::new_kf_observations_t obs,
base_sorted_lst_t obs_for_each_base_sorted,
std::map< TKeyFrameID, size_t > *  out_obs_for_each_base = NULL 
) const
protected

Make a list of base KFs of my new observations, ordered in descending order by # of shared observations:

(Aux method) Make a list of base KFs of my new observations, ordered in descending order by # of shared observations:

Definition at line 256 of file edge_creation_policy.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::numeric_dh_dAp ( const array_pose_t x,
const TNumeric_dh_dAp_params params,
array_obs_t y 
)
static
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::numeric_dh_df ( const array_landmark_t x,
const TNumeric_dh_df_params params,
array_obs_t y 
)
static
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::optimize_edges ( const std::vector< size_t > &  run_k2k_edges,
const std::vector< size_t > &  run_feat_ids_in,
TOptimizeExtraOutputInfo out_info,
const std::vector< size_t > &  observation_indices_to_optimize = std::vector<size_t>() 
)
protected
Parameters
observation_indices_to_optimizeIndices wrt rba_state.all_observations. An empty vector means use ALL the observations involving the selected unknowns.
See also
optimize_local_area

Definition at line 44 of file optimize_edges.h.

References ASSERT_, ASSERT_ABOVEEQ_, ASSERTDEB_, ASSERTMSG_, mrpt::srba::crpLandmarksApprox, mrpt::srba::crpNone, DETAILED_PROFILING_ENTER, DETAILED_PROFILING_LEAVE, mrpt::utils::map_as_vector< KEY, VALUE, VECTOR_T >::end(), mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::extra_results, mrpt::utils::map_as_vector< KEY, VALUE, VECTOR_T >::find(), mrpt::mrpt::format(), mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getAsDense(), mrpt::math::MatrixBlockSparseCols< Scalar, NROWS, NCOLS, INFO, HAS_REMAP, INDEX_REMAP_MAP_IMPL >::getCol(), mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::HAp_condition_number, mrpt::mrpt::utils::keep_max(), mrpt::math::MATRIX_FORMAT_INT, mrpt::math::norm_inf(), mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::num_jacobians, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::num_kf2kf_edges_optimized, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::num_kf2lm_edges_optimized, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::num_observations, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::num_span_tree_numeric_updates, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::num_total_scalar_optimized, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::obs_rmse, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::optimized_k2k_edge_indices, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::optimized_landmark_indices, mrpt::system::pause(), mrpt::system::sprintf_container(), mrpt::math::sum(), mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::total_sqr_error_final, mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::TOptimizeExtraOutputInfo::total_sqr_error_init, mrpt::poses::UNINITIALIZED_POSE, and VERBOSE_LEVEL.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::optimize_local_area ( const TKeyFrameID  root_id,
const unsigned int  win_size,
TOptimizeExtraOutputInfo out_info,
const TOptimizeLocalAreaParams params = TOptimizeLocalAreaParams(),
const std::vector< size_t > &  observation_indices_to_optimize = std::vector<size_t>() 
)

Runs least-squares optimization for all the unknowns within a given topological distance to a given KeyFrame.

Parameters
[in]observation_indices_to_optimizeIndices wrt rba_state.all_observations. An empty vector means use ALL the observations involving the selected unknowns.
Note
Extra options are available in parameters
See also
define_new_keyframe, add_observation, optimize_edges

Definition at line 15 of file optimize_local_area.h.

References mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::VisitorOptimizeLocalArea::k2k_edges_to_optimize, and mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::VisitorOptimizeLocalArea::lm_IDs_to_optimize.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::prepare_Jacobians_required_tree_roots ( std::set< TKeyFrameID > &  kfs_num_spantrees_to_update,
const std::vector< typename TSparseBlocksJacobians_dh_dAp::col_t * > &  lst_JacobCols_dAp,
const std::vector< typename TSparseBlocksJacobians_dh_df::col_t * > &  lst_JacobCols_df 
)
private
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::recompute_all_Jacobians ( std::vector< typename TSparseBlocksJacobians_dh_dAp::col_t * > &  lst_JacobCols_dAp,
std::vector< typename TSparseBlocksJacobians_dh_df::col_t * > &  lst_JacobCols_df,
std::vector< const pose_flag_t * > *  out_list_of_required_num_poses = NULL 
)
private

Re-evaluate all Jacobians numerically using their symbolic info.

Return overall number of block Jacobians

Definition at line 1123 of file srba/include/mrpt/srba/impl/jacobians.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
double mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::reprojection_residuals ( vector_residuals_t residuals,
const std::vector< TObsUsed > &  observations 
) const
inline

reprojection_residuals

Definition at line 16 of file reprojection_residuals.h.

References ASSERT_, ASSERTDEB_, and mrpt::poses::UNINITIALIZED_POSE.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
bool mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::save_graph_as_dot ( const std::string &  targetFileName,
const bool  all_landmarks = false 
) const

Exports all the keyframes (and optionally all landmarks) as a directed graph in DOT (graphviz) format.

Exports all the keyframes and landmarks as a directed graph in DOT (graphviz) format.

Returns
false on any error writing to target file

Definition at line 16 of file export_dot.h.

References mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::from, and mrpt::srba::kf2kf_pose_traits< POSE_TRAITS >::k2k_edge_t::to.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::setVerbosityLevel ( int  level)
inline

Changes the verbosity level: 0=None (only critical msgs), 1=verbose, 2=so verbose you'll have to say "Stop!".

Definition at line 450 of file RbaEngine.h.

References mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::m_verbose_level.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
template<class HESS_Ap , class HESS_f , class HESS_Apf , class JACOB_COLUMN_dh_dAp , class JACOB_COLUMN_dh_df >
void mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::sparse_hessian_build_symbolic ( HESS_Ap &  HAp,
HESS_f &  Hf,
HESS_Apf &  HApf,
const std::vector< JACOB_COLUMN_dh_dAp * > &  dh_dAp,
const std::vector< JACOB_COLUMN_dh_df * > &  dh_df 
)
static

Rebuild the Hessian symbolic information from the given Jacobians.

Rebuild the Hessian symbolic information from the given Jacobians Example of the expected template types:

Parameters
[out]HOutput hessian (must be empty at input)
  • HESS_Apf: MatrixBlockSparseCols<double,6,3,THessianSymbolicInfo<double,2,6,3>, false >
  • JACOB_COLUMN_dh_dAp: TSparseBlocksJacobians_dh_dAp::col_t = MatrixBlockSparseCols<double,2,6,TJacobianSymbolicInfo_dh_dAp, false>::col_t

Definition at line 22 of file sparse_hessian_build_symbolic.h.

References ASSERT_, ASSERTMSG_, and mrpt::mrpt::format().

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS >
template<class SPARSEBLOCKHESSIAN >
size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::sparse_hessian_update_numeric ( SPARSEBLOCKHESSIAN &  H) const

Rebuild the Hessian symbolic information from the internal pointers to blocks of Jacobians.

Only the upper triangle is filled-in (all what is needed for Cholesky) for square Hessians, in whole for rectangular ones (it depends on the symbolic decomposition, done elsewhere).

Template Parameters
SPARSEBLOCKHESSIANcan be: TSparseBlocksHessian_6x6, TSparseBlocksHessian_3x3 or TSparseBlocksHessian_6x3
Returns
The number of Jacobian multiplications skipped due to its observation being marked as "invalid"

Definition at line 22 of file sparse_hessian_update_numeric.h.

Member Data Documentation

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const pose_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::aux_null_pose

A fixed SE(3) pose at the origin (used when we need a pointer or a reference to a "null transformation").

Definition at line 685 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::LM_DIMS = LM_TYPE::LM_DIMS
static

Definition at line 73 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
std::vector<bool> mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::m_complete_st_ws
mutableprivate

Temporary working space used in create_complete_spanning_tree()

Definition at line 593 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
mrpt::utils::CTimeLogger mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::m_profiler
mutableprivate

Profiler for all SRBA operations Enabled by default, can be disabled with enable_time_profiler(false)

Definition at line 598 of file RbaEngine.h.

Referenced by mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::enable_time_profiler(), and mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::get_time_profiler().

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
int mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::m_verbose_level
protected

0: None (only critical msgs), 1: verbose, 2:even more verbose, 3: even more

Definition at line 473 of file RbaEngine.h.

Referenced by mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::setVerbosityLevel().

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::OBS_DIMS = OBS_TYPE::OBS_DIMS
static

Definition at line 74 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
TAllParameters mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::parameters

Definition at line 430 of file RbaEngine.h.

template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
rba_problem_state_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::rba_state
private
template<class KF2KF_POSE_TYPE , class LM_TYPE , class OBS_TYPE , class RBA_OPTIONS = RBA_OPTIONS_DEFAULT>
const size_t mrpt::srba::RbaEngine< KF2KF_POSE_TYPE, LM_TYPE, OBS_TYPE, RBA_OPTIONS >::REL_POSE_DIMS = KF2KF_POSE_TYPE::REL_POSE_DIMS
static

Definition at line 72 of file RbaEngine.h.




Page generated by Doxygen 1.8.9.1 for MRPT 1.3.0 SVN: at Sun Sep 13 03:55:12 UTC 2015