MRPT  1.9.9
mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T > Class Template Reference

Detailed Description

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
class mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >

Levenberg-Marquardt non-linear graph slam optimization scheme.

Description

Current decider optimizes the graph according to the graphslam::optimize_spa_levmarq method. Refer to the latter for more details on the implementation.

.ini Configuration Parameters

The configuration parameters of the current decider class are listed below. These parameters are parsed from an external .ini configuration file from their respective section. If an optional parameter is not found a default value is used instead. If a mandatory/required parameter is not found a runtime error is raised. For a sample configuration file see $mrpt/share/mrpt/config_files/graphslam-engine/laser_odometry.ini (Modify $mrpt according to the path of your mrpt source directory).
  • class_verbosity
  • optimization_on_second_thread
    • Section : OptimizerParameters
    • Default value : FALSE
    • Required : FALSE
    • Description : Specify whether to use a second thread to optimize the graph.
  • LC_min_nodeid_diff
    • Section : GeneralConfiguration
    • Default value : 30
    • Required : FALSE
    • Description : Minimum NodeID difference for an edge to be considered a loop closure.
  • optimization_distance
    • Section : OptimizerParameters
    • Default value : 5
    • Required : FALSE
    • Description : Positions of the nodes within the specified distance from the current graph node are optimized according to the corresponding constraints between them
  • verbose
    • Section : OptimizerParameters
    • Default value : FALSE
    • Required : FALSE
    • Description : Refers to the Levenberg-Marquardt optimization. procedure
  • profiler
    • Section : OptimizerParameters
    • Default value : FALSE
    • Required : FALSE
    • Description : Refers to the Levenberg-Marquardt optimization. procedure
  • max_iterations
    • Section : OptimizerParameters
    • Default value : 100
    • Required : FALSE
    • Description : Refers to the Levenberg-Marquardt optimization. Sets the maximum number of iterations of the optimization scheme.
  • scale_hessian
    • Section : OptimizerParameters
    • Default value : 0.2
    • Required : FALSE
    • Description : Refers to the Levenberg-Marquardt optimization.
  • tau

    • Section : OptimizerParameters
    • Default value : 1e-3
    • Required : FALSE
    • Description : Refers to the Levenberg-Marquardt optimization.
    Note
    For a detailed description of the optimization parameters of the Levenberg-Marquardt scheme, refer to

    http://reference.mrpt.org/devel/group__mrpt__graphslam__grp.html#ga022f4a70be5ec7c432f46374e4bb9d66

    Note
    For a detailed description of the graph visualization parameters refer to

    http://reference.mrpt.org/devel/group__mrpt__opengl__grp.html#ga30efc9f6fcb49801e989d174e0f65a61

Definition at line 118 of file CLevMarqGSO.h.

#include <mrpt/graphslam/GSO/CLevMarqGSO.h>

Inheritance diagram for mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >:
Inheritance graph

Classes

struct  GraphVisualizationParams
 struct for holding the graph visualization-related variables in a compact form More...
 
struct  OptimizationParams
 Struct for holding the optimization-related variables in a compact form. More...
 

Public Types

using constraint_t = typename GRAPH_T::constraint_t
 Handy typedefs. More...
 
using pose_t = typename GRAPH_T::constraint_t::type_value
 type of underlying poses (2D/3D) More...
 
using InfMat = mrpt::math::CMatrixFixedNumeric< double, constraint_t::state_length, constraint_t::state_length >
 
using grandpa = mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >
 
using parent = mrpt::graphslam::optimizers::CGraphSlamOptimizer< GRAPH_T >
 

Public Member Functions

 CLevMarqGSO ()
 
 ~CLevMarqGSO ()
 
bool updateState (mrpt::obs::CActionCollection::Ptr action, mrpt::obs::CSensoryFrame::Ptr observations, mrpt::obs::CObservation::Ptr observation)
 Generic method for fetching the incremental action/observation readings from the calling function. More...
 
void initializeVisuals ()
 Initialize visual objects in CDisplayWindow (e.g. More...
 
void updateVisuals ()
 Update the relevant visual features in CDisplayWindow. More...
 
void notifyOfWindowEvents (const std::map< std::string, bool > &events_occurred)
 Get a list of the window events that happened since the last call. More...
 
void loadParams (const std::string &source_fname)
 Load the necessary for the decider/optimizer configuration parameters. More...
 
void printParams () const
 Print the problem parameters - relevant to the decider/optimizer to the screen in a unified/compact way. More...
 
void getDescriptiveReport (std::string *report_str) const
 Fill the provided string with a detailed report of the decider/optimizer state. More...
 
bool justFullyOptimizedGraph () const
 Used by the caller to query for possible full graph optimization on the latest optimizer run. More...
 
virtual void setWindowManagerPtr (mrpt::graphslam::CWindowManager *win_manager)
 Fetch a CWindowManager pointer. More...
 
virtual void setCriticalSectionPtr (std::mutex *graph_section)
 Fetch a std::mutex for locking the GRAPH_T resource. More...
 
virtual void setGraphPtr (GRAPH_T *graph)
 Fetch the graph on which the decider/optimizer will work on. More...
 
virtual void initializeLoggers (const std::string &name)
 Initialize the COutputLogger, CTimeLogger instances given the name of the decider/optimizer at hand. More...
 
virtual void setClassName (const std::string &name)
 
bool isMultiRobotSlamClass ()
 
std::string getClassName () const
 

Static Public Member Functions

static std::array< mrpt::system::TConsoleColor, NUMBER_OF_VERBOSITY_LEVELS > & logging_levels_to_colors ()
 Map from VerbosityLevels to their corresponding mrpt::system::TConsoleColor. More...
 
static std::array< std::string, NUMBER_OF_VERBOSITY_LEVELS > & logging_levels_to_names ()
 Map from VerbosityLevels to their corresponding names. More...
 

Public Attributes

OptimizationParams opt_params
 Parameters relevant to the optimizatio nfo the graph. More...
 
GraphVisualizationParams viz_params
 Parameters relevant to the visualization of the graph. More...
 

Protected Types

enum  FullOptimizationPolicy { FOP_IGNORE_LC = 0, FOP_USE_LC, FOP_TOTAL_NUM }
 Enumeration that defines the behaviors towards using or ignoring a newly added loop closure to fully optimize the graph. More...
 

Protected Member Functions

void _optimizeGraph (bool is_full_update=false)
 Optimize the given graph. More...
 
void optimizeGraph ()
 Wrapper around _optimizeGraph which first locks the section and then calls the _optimizeGraph method. More...
 
bool checkForLoopClosures ()
 Check if a loop closure edge was added in the graph. More...
 
bool checkForFullOptimization ()
 Decide whether to issue a full graph optimization. More...
 
void initGraphVisualization ()
 Initialize objects relateed to the Graph Visualization. More...
 
void updateGraphVisualization ()
 Called internally for updating the visualization scene for the graph building procedure. More...
 
void toggleGraphVisualization ()
 Toggle the graph visualization on and off. More...
 
void fitGraphInView ()
 Set the camera parameters of the CDisplayWindow3D so that the whole graph is viewed in the window. More...
 
void updateOptDistanceVisualization ()
 Update the position of the disk indicating the distance in which Levenberg-Marquardt graph optimization is executed. More...
 
void toggleOptDistanceVisualization ()
 toggle the optimization distance object on and off More...
 
void getNearbyNodesOf (std::set< mrpt::graphs::TNodeID > *nodes_set, const mrpt::graphs::TNodeID &cur_nodeID, double distance)
 Get a list of the nodeIDs whose position is within a certain distance to the specified nodeID. More...
 
virtual void assertVisualsVars ()
 Handy function for making all the visuals assertions in a compact manner. More...
 
void initOptDistanceVisualization ()
 Initialize the Disk/Sphere used for visualizing the optimization distance. More...
 
mrpt::opengl::CRenderizable::Ptr initOptDistanceVisualizationInternal (const mrpt::poses::CPose2D &p_unused)
 Setup the corresponding Disk/Sphere instance. More...
 
mrpt::opengl::CRenderizable::Ptr initOptDistanceVisualizationInternal (const mrpt::poses::CPose3D &p_unused)
 

Static Protected Member Functions

static void levMarqFeedback (const GRAPH_T &graph, const size_t iter, const size_t max_iter, const double cur_sq_error)
 Feedback of the Levenberg-Marquardt graph optimization procedure. More...
 

Protected Attributes

bool m_first_time_call
 
bool m_has_read_config
 
bool registered_new_node
 
bool m_autozoom_active
 
size_t m_last_total_num_of_nodes
 
std::thread m_thread_optimize
 
FullOptimizationPolicy m_optimization_policy
 Should I fully optimize the graph on loop closure? More...
 
bool m_just_fully_optimized_graph
 Indicates whether a full graph optimization was just issued. More...
 
size_t m_min_nodes_for_optimization
 Minimum number of nodes before we try optimizing the graph. More...
 
GRAPH_T * m_graph
 Pointer to the graph that is under construction. More...
 
std::mutex * m_graph_section
 
mrpt::system::CTimeLogger m_time_logger
 Time logger instance. More...
 
std::string m_class_name
 Name of the class instance. More...
 
bool is_mr_slam_class
 Boolean indicating if the current class can be used in multi-robot SLAM operations. More...
 
VerbosityLevel m_min_verbosity_level
 Provided messages with VerbosityLevel smaller than this value shall be ignored. More...
 
Smart Full-Optimization Command

Instead of issuing a full optimization every time a loop closure is detected, ignore current loop closure when enough consecutive loop closures have already been utilised.

This avoids the added computational cost that is needed for optimizing the graph without reducing the accuracy of the overall operation

size_t m_max_used_consec_lcs
 Number of maximum cosecutive loop closures that are allowed to be issued. More...
 
size_t m_curr_used_consec_lcs
 Number of consecutive loop closures that are currently registered. More...
 
size_t m_max_ignored_consec_lcs
 Number of consecutive loop closures to ignore after m_max_used_consec_lcs have already been issued. More...
 
size_t m_curr_ignored_consec_lcs
 Consecutive Loop Closures that have currently been ignored. More...
 
Visuals-related variables methods
mrpt::graphslam::CWindowManagerm_win_manager
 Pointer to the CWindowManager object used to store visuals-related instances. More...
 
mrpt::gui::CDisplayWindow3Dm_win
 Window to use. More...
 
mrpt::graphslam::CWindowObserverm_win_observer
 CWindowObserver object for monitoring various visual-oriented events. More...
 
bool m_initialized_visuals
 

Static Protected Attributes

static const std::string header_sep
 Separator string to be used in debugging messages. More...
 
static const std::string report_sep
 

Logging methods

bool logging_enable_console_output
 [Default=true] Set it to false in case you don't want the logged messages to be dumped to the output automatically. More...
 
bool logging_enable_keep_record
 [Default=false] Enables storing all messages into an internal list. More...
 
void logStr (const VerbosityLevel level, const std::string &msg_str) const
 Main method to add the specified message string to the logger. More...
 
void logFmt (const VerbosityLevel level, const char *fmt,...) const MRPT_printf_format_check(3
 Alternative logging method, which mimics the printf behavior. More...
 
void void logCond (const VerbosityLevel level, bool cond, const std::string &msg_str) const
 Log the given message only if the condition is satisfied. More...
 
void setLoggerName (const std::string &name)
 Set the name of the COutputLogger instance. More...
 
std::string getLoggerName () const
 Return the name of the COutputLogger instance. More...
 
void setMinLoggingLevel (const VerbosityLevel level)
 Set the minimum logging level for which the incoming logs are going to be taken into account. More...
 
void setVerbosityLevel (const VerbosityLevel level)
 alias of setMinLoggingLevel() More...
 
VerbosityLevel getMinLoggingLevel () const
 
bool isLoggingLevelVisible (VerbosityLevel level) const
 
void getLogAsString (std::string &log_contents) const
 Fill the provided string with the contents of the logger's history in std::string representation. More...
 
std::string getLogAsString () const
 Get the history of COutputLogger instance in a string representation. More...
 
void writeLogToFile (const std::string *fname_in=NULL) const
 Write the contents of the COutputLogger instance to an external file. More...
 
void dumpLogToConsole () const
 Dump the current contents of the COutputLogger instance in the terminal window. More...
 
std::string getLoggerLastMsg () const
 Return the last Tmsg instance registered in the logger history. More...
 
void getLoggerLastMsg (std::string &msg_str) const
 Fill inputtted string with the contents of the last message in history. More...
 
void loggerReset ()
 Reset the contents of the logger instance. More...
 
void logRegisterCallback (output_logger_callback_t userFunc)
 
bool logDeregisterCallback (output_logger_callback_t userFunc)
 

Member Typedef Documentation

◆ constraint_t

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
using mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::constraint_t = typename GRAPH_T::constraint_t

Handy typedefs.

Definition at line 126 of file CLevMarqGSO.h.

◆ grandpa

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
using mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::grandpa = mrpt::graphslam::CRegistrationDeciderOrOptimizer<GRAPH_T>

Definition at line 131 of file CLevMarqGSO.h.

◆ InfMat

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
using mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::InfMat = mrpt::math::CMatrixFixedNumeric< double, constraint_t::state_length, constraint_t::state_length>

Definition at line 130 of file CLevMarqGSO.h.

◆ parent

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
using mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::parent = mrpt::graphslam::optimizers::CGraphSlamOptimizer<GRAPH_T>

Definition at line 132 of file CLevMarqGSO.h.

◆ pose_t

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
using mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::pose_t = typename GRAPH_T::constraint_t::type_value

type of underlying poses (2D/3D)

Definition at line 128 of file CLevMarqGSO.h.

Member Enumeration Documentation

◆ FullOptimizationPolicy

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
enum mrpt::graphslam::optimizers::CLevMarqGSO::FullOptimizationPolicy
protected

Enumeration that defines the behaviors towards using or ignoring a newly added loop closure to fully optimize the graph.

Enumerator
FOP_IGNORE_LC 
FOP_USE_LC 
FOP_TOTAL_NUM 

Definition at line 346 of file CLevMarqGSO.h.

Constructor & Destructor Documentation

◆ CLevMarqGSO()

◆ ~CLevMarqGSO()

template<class GRAPH_T >
mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::~CLevMarqGSO ( )

Definition at line 36 of file CLevMarqGSO_impl.h.

Member Function Documentation

◆ _optimizeGraph()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::_optimizeGraph ( bool  is_full_update = false)
protected

Optimize the given graph.

Wrapper around the graphslam::optimize_spa_levmarq method

See also
optimize_spa_levmarq, optimizeGraph
Parameters
[in]full_updateImpose that method optimizes the whole graph

Definition at line 419 of file CLevMarqGSO_impl.h.

References mrpt::system::LVL_DEBUG, MRPT_END, MRPT_START, MRPT_UNUSED_PARAM, mrpt::graphslam::optimize_graph_spa_levmarq(), mrpt::system::CTicTac::Tac(), and mrpt::system::CTicTac::Tic().

◆ assertVisualsVars()

template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::assertVisualsVars ( )
protectedvirtualinherited

Handy function for making all the visuals assertions in a compact manner.

Definition at line 95 of file CRegistrationDeciderOrOptimizer_impl.h.

◆ checkForFullOptimization()

template<class GRAPH_T >
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::checkForFullOptimization ( )
protected

Decide whether to issue a full graph optimization.

In case N consecutive full optimizations have been issued, skip some of the next as they slow down the overall execution and they don't reduce the overall error

Returns
True for issuing a full graph optimization, False otherwise

Definition at line 535 of file CLevMarqGSO_impl.h.

References MRPT_LOG_DEBUG_STREAM, and MRPT_LOG_WARN_STREAM.

◆ checkForLoopClosures()

template<class GRAPH_T >
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::checkForLoopClosures ( )
protected

Check if a loop closure edge was added in the graph.

Match the previously registered edges in the graph with the current. If there is a node difference in any new edge greater than LC_min_nodeid_diff (see .ini parameter) then new constraint is considered a Loop Closure

Returns
True if any of the newly added edges is considered a loop closure

Definition at line 490 of file CLevMarqGSO_impl.h.

References mrpt::system::LVL_DEBUG, MRPT_END, and MRPT_START.

◆ dumpLogToConsole()

void COutputLogger::dumpLogToConsole ( ) const
inherited

Dump the current contents of the COutputLogger instance in the terminal window.

See also
writeToFile

Definition at line 190 of file COutputLogger.cpp.

◆ fitGraphInView()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::fitGraphInView ( )
inlineprotected

Set the camera parameters of the CDisplayWindow3D so that the whole graph is viewed in the window.

Warning
Method assumes that the COpenGLinstance is not locked prior to this call, so make sure you have issued CDisplayWindow3D::unlockAccess3DScene() before calling this method.

Definition at line 249 of file CLevMarqGSO_impl.h.

References ASSERTDEBMSG_, MRPT_END, and MRPT_START.

◆ getClassName()

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::getClassName ( ) const
inlineinherited

Definition at line 137 of file CRegistrationDeciderOrOptimizer.h.

◆ getDescriptiveReport()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::getDescriptiveReport ( std::string report_str) const
virtual

Fill the provided string with a detailed report of the decider/optimizer state.

Report should include (part of) the following:

  • Timing of important methods
  • Properties fo class at the current time
  • Logging of commands until current time

Reimplemented from mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >.

Definition at line 696 of file CLevMarqGSO_impl.h.

References MRPT_END, and MRPT_START.

◆ getLogAsString() [1/2]

void COutputLogger::getLogAsString ( std::string log_contents) const
inherited

Fill the provided string with the contents of the logger's history in std::string representation.

Definition at line 154 of file COutputLogger.cpp.

◆ getLogAsString() [2/2]

std::string COutputLogger::getLogAsString ( ) const
inherited

Get the history of COutputLogger instance in a string representation.

Definition at line 159 of file COutputLogger.cpp.

Referenced by mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::getDescriptiveReport().

◆ getLoggerLastMsg() [1/2]

std::string COutputLogger::getLoggerLastMsg ( ) const
inherited

Return the last Tmsg instance registered in the logger history.

Definition at line 195 of file COutputLogger.cpp.

References mrpt::system::COutputLogger::TMsg::getAsString().

◆ getLoggerLastMsg() [2/2]

void COutputLogger::getLoggerLastMsg ( std::string msg_str) const
inherited

Fill inputtted string with the contents of the last message in history.

Definition at line 201 of file COutputLogger.cpp.

◆ getLoggerName()

std::string COutputLogger::getLoggerName ( ) const
inherited

Return the name of the COutputLogger instance.

See also
setLoggerName

Definition at line 143 of file COutputLogger.cpp.

◆ getMinLoggingLevel()

VerbosityLevel mrpt::system::COutputLogger::getMinLoggingLevel ( ) const
inlineinherited

◆ getNearbyNodesOf()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::getNearbyNodesOf ( std::set< mrpt::graphs::TNodeID > *  nodes_set,
const mrpt::graphs::TNodeID cur_nodeID,
double  distance 
)
protected

Get a list of the nodeIDs whose position is within a certain distance to the specified nodeID.

Definition at line 628 of file CLevMarqGSO_impl.h.

References mrpt::math::distance(), MRPT_END, and MRPT_START.

◆ initGraphVisualization()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::initGraphVisualization ( )
inlineprotected

Initialize objects relateed to the Graph Visualization.

Definition at line 161 of file CLevMarqGSO_impl.h.

References ASSERTDEBMSG_, MRPT_END, and MRPT_START.

◆ initializeLoggers()

template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::initializeLoggers ( const std::string name)
virtualinherited

◆ initializeVisuals()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::initializeVisuals ( )
virtual

Initialize visual objects in CDisplayWindow (e.g.

add an object to scene).

Exceptions
std::exceptionIf the method is called without having first provided a CDisplayWindow3D* to the class instance
See also
setWindowManagerPtr, updateVisuals

Reimplemented from mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >.

Definition at line 84 of file CLevMarqGSO_impl.h.

References ASSERTDEB_, MRPT_END, and MRPT_START.

◆ initOptDistanceVisualization()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::initOptDistanceVisualization ( )
protected

Initialize the Disk/Sphere used for visualizing the optimization distance.

Definition at line 288 of file CLevMarqGSO_impl.h.

References MRPT_END, and MRPT_START.

◆ initOptDistanceVisualizationInternal() [1/2]

template<class GRAPH_T >
mrpt::opengl::CRenderizable::Ptr mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::initOptDistanceVisualizationInternal ( const mrpt::poses::CPose2D p_unused)
protected

Setup the corresponding Disk/Sphere instance.

Method overloads are used to overcome the C++ specialization restrictions

Returns
Disk/Sphere instance for 2D/3D SLAM respectively

Definition at line 330 of file CLevMarqGSO_impl.h.

◆ initOptDistanceVisualizationInternal() [2/2]

template<class GRAPH_T >
mrpt::opengl::CRenderizable::Ptr mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::initOptDistanceVisualizationInternal ( const mrpt::poses::CPose3D p_unused)
protected

Definition at line 345 of file CLevMarqGSO_impl.h.

◆ isLoggingLevelVisible()

bool mrpt::system::COutputLogger::isLoggingLevelVisible ( VerbosityLevel  level) const
inlineinherited

◆ isMultiRobotSlamClass()

template<class GRAPH_T >
bool mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::isMultiRobotSlamClass ( )
inherited

Definition at line 144 of file CRegistrationDeciderOrOptimizer_impl.h.

◆ justFullyOptimizedGraph()

template<class GRAPH_T >
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::justFullyOptimizedGraph ( ) const
virtual

Used by the caller to query for possible full graph optimization on the latest optimizer run.

Reimplemented from mrpt::graphslam::optimizers::CGraphSlamOptimizer< GRAPH_T >.

Definition at line 615 of file CLevMarqGSO_impl.h.

◆ levMarqFeedback()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::levMarqFeedback ( const GRAPH_T &  graph,
const size_t  iter,
const size_t  max_iter,
const double  cur_sq_error 
)
staticprotected

Feedback of the Levenberg-Marquardt graph optimization procedure.

Definition at line 621 of file CLevMarqGSO_impl.h.

◆ loadParams()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::loadParams ( const std::string source_fname)
virtual

Load the necessary for the decider/optimizer configuration parameters.

Reimplemented from mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >.

Definition at line 665 of file CLevMarqGSO_impl.h.

References MRPT_END, MRPT_LOG_DEBUG, and MRPT_START.

◆ logCond()

void COutputLogger::logCond ( const VerbosityLevel  level,
bool  cond,
const std::string msg_str 
) const
inherited

Log the given message only if the condition is satisfied.

See also
log, logFmt

Definition at line 131 of file COutputLogger.cpp.

◆ logDeregisterCallback()

bool COutputLogger::logDeregisterCallback ( output_logger_callback_t  userFunc)
inherited
Returns
true if an entry was found and deleted.

Definition at line 290 of file COutputLogger.cpp.

References getAddress(), and mrpt::system::COutputLogger::m_listCallbacks.

◆ logFmt()

◆ loggerReset()

void COutputLogger::loggerReset ( )
inherited

Reset the contents of the logger instance.

Called upon construction.

Definition at line 206 of file COutputLogger.cpp.

References mrpt::system::LVL_INFO.

◆ logging_levels_to_colors()

std::array< mrpt::system::TConsoleColor, NUMBER_OF_VERBOSITY_LEVELS > & COutputLogger::logging_levels_to_colors ( )
staticinherited

Map from VerbosityLevels to their corresponding mrpt::system::TConsoleColor.

Handy for coloring the input based on the verbosity of the message

Definition at line 47 of file COutputLogger.cpp.

References logging_levels_to_colors.

Referenced by mrpt::system::COutputLogger::TMsg::dumpToConsole().

◆ logging_levels_to_names()

std::array< std::string, NUMBER_OF_VERBOSITY_LEVELS > & COutputLogger::logging_levels_to_names ( )
staticinherited

Map from VerbosityLevels to their corresponding names.

Handy for printing the current message VerbosityLevel along with the actual content

Definition at line 60 of file COutputLogger.cpp.

References logging_levels_to_names.

Referenced by mrpt::system::COutputLogger::TMsg::getAsString().

◆ logRegisterCallback()

void COutputLogger::logRegisterCallback ( output_logger_callback_t  userFunc)
inherited

Definition at line 277 of file COutputLogger.cpp.

References mrpt::system::COutputLogger::m_listCallbacks.

◆ logStr()

◆ notifyOfWindowEvents()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::notifyOfWindowEvents ( const std::map< std::string, bool > &  events_occurred)
virtual

Get a list of the window events that happened since the last call.

Reimplemented from mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >.

Definition at line 113 of file CLevMarqGSO_impl.h.

References MRPT_END, MRPT_LOG_DEBUG_STREAM, and MRPT_START.

◆ optimizeGraph()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::optimizeGraph ( )
protectedvirtual

Wrapper around _optimizeGraph which first locks the section and then calls the _optimizeGraph method.

Used in multithreaded optimization

See also
_optimizeGraph()

Implements mrpt::graphslam::optimizers::CGraphSlamOptimizer< GRAPH_T >.

Definition at line 398 of file CLevMarqGSO_impl.h.

References mrpt::system::LVL_DEBUG, MRPT_END, MRPT_LOG_DEBUG_STREAM, and MRPT_START.

Referenced by mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateState().

◆ printParams()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::printParams ( ) const
virtual

Print the problem parameters - relevant to the decider/optimizer to the screen in a unified/compact way.

Reimplemented from mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >.

Definition at line 657 of file CLevMarqGSO_impl.h.

◆ setClassName()

template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setClassName ( const std::string name)
virtualinherited

Definition at line 56 of file CRegistrationDeciderOrOptimizer_impl.h.

◆ setCriticalSectionPtr()

template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setCriticalSectionPtr ( std::mutex *  graph_section)
virtualinherited

Fetch a std::mutex for locking the GRAPH_T resource.

Handy for realising multithreading in the derived classes.

Warning
Beware that prior to the decider/optimizer public method call, the CCriticalSection will already be locked from CGraphSlamEngine_t instance, but this isn't effective in multithreaded implementations where the decider/optimizer itself has to lock the function at which the extra thread runs.

Definition at line 79 of file CRegistrationDeciderOrOptimizer_impl.h.

◆ setGraphPtr()

template<class GRAPH_T>
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setGraphPtr ( GRAPH_T *  graph)
virtualinherited

Fetch the graph on which the decider/optimizer will work on.

Definition at line 137 of file CRegistrationDeciderOrOptimizer_impl.h.

◆ setLoggerName()

◆ setMinLoggingLevel()

void COutputLogger::setMinLoggingLevel ( const VerbosityLevel  level)
inherited

Set the minimum logging level for which the incoming logs are going to be taken into account.

String messages with specified VerbosityLevel smaller than the min, will not be outputted to the screen and neither will a record of them be stored in by the COutputLogger instance

Definition at line 144 of file COutputLogger.cpp.

Referenced by mrpt::maps::CRandomFieldGridMap2D::enableVerbose(), mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::execute(), mrpt::hwdrivers::CHokuyoURG::initialize(), and mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::loadParams().

◆ setVerbosityLevel()

◆ setWindowManagerPtr()

template<class GRAPH_T >
void mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::setWindowManagerPtr ( mrpt::graphslam::CWindowManager win_manager)
virtualinherited

Fetch a CWindowManager pointer.

CWindowManager instance should contain a CDisplayWindow3D* and, optionally, a CWindowObserver pointer so that interaction with the window is possible

Definition at line 65 of file CRegistrationDeciderOrOptimizer_impl.h.

◆ toggleGraphVisualization()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::toggleGraphVisualization ( )
protected

Toggle the graph visualization on and off.

Definition at line 232 of file CLevMarqGSO_impl.h.

References MRPT_END, and MRPT_START.

◆ toggleOptDistanceVisualization()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::toggleOptDistanceVisualization ( )
protected

toggle the optimization distance object on and off

Definition at line 381 of file CLevMarqGSO_impl.h.

References MRPT_END, and MRPT_START.

◆ updateGraphVisualization()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateGraphVisualization ( )
inlineprotected

Called internally for updating the visualization scene for the graph building procedure.

Definition at line 181 of file CLevMarqGSO_impl.h.

References ASSERTDEBMSG_, mrpt::system::LVL_DEBUG, MRPT_END, and MRPT_START.

◆ updateOptDistanceVisualization()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateOptDistanceVisualization ( )
inlineprotected

Update the position of the disk indicating the distance in which Levenberg-Marquardt graph optimization is executed.

Definition at line 362 of file CLevMarqGSO_impl.h.

References ASSERTDEBMSG_, MRPT_END, and MRPT_START.

◆ updateState()

template<class GRAPH_T >
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateState ( mrpt::obs::CActionCollection::Ptr  action,
mrpt::obs::CSensoryFrame::Ptr  observations,
mrpt::obs::CObservation::Ptr  observation 
)
virtual

Generic method for fetching the incremental action/observation readings from the calling function.

Implementations of this interface should use (part of) the specified parameters and call the optimizeGraph function if the decision is to optimize the provided graph

Returns
True if the optimization procedure was executed.

Implements mrpt::graphslam::optimizers::CGraphSlamOptimizer< GRAPH_T >.

Definition at line 45 of file CLevMarqGSO_impl.h.

References MRPT_END, MRPT_LOG_DEBUG, MRPT_START, and mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::optimizeGraph().

◆ updateVisuals()

template<class GRAPH_T >
void mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::updateVisuals ( )
virtual

Update the relevant visual features in CDisplayWindow.

Exceptions
std::exceptionIf the method is called without having first provided a CDisplayWindow3D* to the class instance
See also
setWindowManagerPtr, initializeVisuals

Reimplemented from mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >.

Definition at line 97 of file CLevMarqGSO_impl.h.

References MRPT_END, and MRPT_START.

◆ writeLogToFile()

void COutputLogger::writeLogToFile ( const std::string fname_in = NULL) const
inherited

Write the contents of the COutputLogger instance to an external file.

Upon call to this method, COutputLogger dumps the contents of all the logged commands so far to the specified external file. By default the filename is set to ${LOGGERNAME}.log except if the fname parameter is provided

See also
dumpToConsole, getAsString

Definition at line 165 of file COutputLogger.cpp.

References ASSERTMSG_, and mrpt::format().

Member Data Documentation

◆ header_sep

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
const std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::header_sep
staticprotectedinherited
Initial value:
=
std::string(80, '-')

Separator string to be used in debugging messages.

Definition at line 173 of file CRegistrationDeciderOrOptimizer.h.

Referenced by mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T >::getDescriptiveReport().

◆ is_mr_slam_class

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::is_mr_slam_class
protectedinherited

Boolean indicating if the current class can be used in multi-robot SLAM operations.

Definition at line 169 of file CRegistrationDeciderOrOptimizer.h.

◆ logging_enable_console_output

bool mrpt::system::COutputLogger::logging_enable_console_output
inherited

[Default=true] Set it to false in case you don't want the logged messages to be dumped to the output automatically.

Definition at line 239 of file system/COutputLogger.h.

◆ logging_enable_keep_record

bool mrpt::system::COutputLogger::logging_enable_keep_record
inherited

[Default=false] Enables storing all messages into an internal list.

See also
writeLogToFile, getLogAsString

Definition at line 242 of file system/COutputLogger.h.

◆ m_autozoom_active

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_autozoom_active
protected

Definition at line 334 of file CLevMarqGSO.h.

◆ m_class_name

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_class_name
protectedinherited

Name of the class instance.

Definition at line 165 of file CRegistrationDeciderOrOptimizer.h.

Referenced by mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_t >::getClassName().

◆ m_curr_ignored_consec_lcs

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_curr_ignored_consec_lcs
protected

Consecutive Loop Closures that have currently been ignored.

See also
m_max_ignored_consec_lcs

Definition at line 386 of file CLevMarqGSO.h.

◆ m_curr_used_consec_lcs

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_curr_used_consec_lcs
protected

Number of consecutive loop closures that are currently registered.

See also
m_max_used_consec_lcs

Definition at line 375 of file CLevMarqGSO.h.

◆ m_first_time_call

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_first_time_call
protected

Definition at line 331 of file CLevMarqGSO.h.

◆ m_graph

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
GRAPH_T* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph
protectedinherited

Pointer to the graph that is under construction.

Definition at line 144 of file CRegistrationDeciderOrOptimizer.h.

◆ m_graph_section

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::mutex* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_graph_section
protectedinherited

Definition at line 145 of file CRegistrationDeciderOrOptimizer.h.

◆ m_has_read_config

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_has_read_config
protected

Definition at line 332 of file CLevMarqGSO.h.

◆ m_initialized_visuals

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_initialized_visuals
protectedinherited

Definition at line 159 of file CRegistrationDeciderOrOptimizer.h.

◆ m_just_fully_optimized_graph

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_just_fully_optimized_graph
protected

Indicates whether a full graph optimization was just issued.

Definition at line 392 of file CLevMarqGSO.h.

◆ m_last_total_num_of_nodes

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_last_total_num_of_nodes
protected

Definition at line 338 of file CLevMarqGSO.h.

◆ m_max_ignored_consec_lcs

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_max_ignored_consec_lcs
protected

Number of consecutive loop closures to ignore after m_max_used_consec_lcs have already been issued.

See also
m_curr_ignored_consec_lcs, m_max_used_consec_lcs

Definition at line 381 of file CLevMarqGSO.h.

◆ m_max_used_consec_lcs

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_max_used_consec_lcs
protected

Number of maximum cosecutive loop closures that are allowed to be issued.

See also
m_curr_used_consec_lcs, m_max_ignored_consec_lcs

Definition at line 370 of file CLevMarqGSO.h.

◆ m_min_nodes_for_optimization

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
size_t mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_min_nodes_for_optimization
protected

Minimum number of nodes before we try optimizing the graph.

Definition at line 395 of file CLevMarqGSO.h.

◆ m_min_verbosity_level

VerbosityLevel mrpt::system::COutputLogger::m_min_verbosity_level
protectedinherited

Provided messages with VerbosityLevel smaller than this value shall be ignored.

Definition at line 252 of file system/COutputLogger.h.

Referenced by mrpt::system::COutputLogger::getMinLoggingLevel(), and mrpt::system::COutputLogger::isLoggingLevelVisible().

◆ m_optimization_policy

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
FullOptimizationPolicy mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_optimization_policy
protected

Should I fully optimize the graph on loop closure?

Definition at line 354 of file CLevMarqGSO.h.

◆ m_thread_optimize

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
std::thread mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::m_thread_optimize
protected

Definition at line 341 of file CLevMarqGSO.h.

◆ m_time_logger

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::system::CTimeLogger mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_time_logger
protectedinherited

◆ m_win

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::gui::CDisplayWindow3D* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win
protectedinherited

Window to use.

Definition at line 155 of file CRegistrationDeciderOrOptimizer.h.

◆ m_win_manager

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::graphslam::CWindowManager* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win_manager
protectedinherited

Pointer to the CWindowManager object used to store visuals-related instances.

Definition at line 153 of file CRegistrationDeciderOrOptimizer.h.

◆ m_win_observer

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
mrpt::graphslam::CWindowObserver* mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::m_win_observer
protectedinherited

CWindowObserver object for monitoring various visual-oriented events.

Definition at line 158 of file CRegistrationDeciderOrOptimizer.h.

◆ opt_params

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
OptimizationParams mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::opt_params

Parameters relevant to the optimizatio nfo the graph.

Definition at line 220 of file CLevMarqGSO.h.

◆ registered_new_node

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
bool mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::registered_new_node
protected

Definition at line 333 of file CLevMarqGSO.h.

◆ report_sep

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
const std::string mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T >::report_sep
staticprotectedinherited

◆ viz_params

template<class GRAPH_T = typename mrpt::graphs::CNetworkOfPoses2DInf>
GraphVisualizationParams mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::viz_params

Parameters relevant to the visualization of the graph.

Definition at line 222 of file CLevMarqGSO.h.




Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020