MRPT
1.9.9
|
GraphSLAM algorithms.
Back to list of all libraries | See all modules
This C++ library is part of MRPT and can be installed in Debian-based systems with:
sudo apt install libmrpt-graphslam-dev
See: Using MRPT from your CMake project
Basic graph-SLAM algorithms: See the namespace mrpt::graphslam.
For an introduction to graph-slam maps refer to the summary in https://www.mrpt.org/Graph-SLAM_maps
Classes | |
struct | mrpt::graphslam::apps::TRegistrationDeciderProps |
Properties struct for the Registration Decider classes. More... | |
struct | mrpt::graphslam::apps::TOptimizerProps |
Properties struct for the Optimizer classes. More... | |
struct | mrpt::graphslam::apps::TUserOptionsChecker< GRAPH_t > |
Class containing the declarations of supplementary methods that can be used in application-related code. More... | |
class | mrpt::graphslam::CGraphSlamEngine< GRAPH_T > |
Main file for the GraphSlamEngine. More... | |
class | mrpt::graphslam::deciders::CICPCriteriaERD< GRAPH_T > |
ICP-based Edge Registration. More... | |
class | mrpt::graphslam::deciders::CLoopCloserERD< GRAPH_T > |
Edge Registration Decider scheme specialized in Loop Closing. More... | |
class | mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T > |
Levenberg-Marquardt non-linear graph slam optimization scheme. More... | |
class | mrpt::graphslam::deciders::CEdgeRegistrationDecider< GRAPH_T > |
Interface for implementing edge registration classes. More... | |
class | mrpt::graphslam::optimizers::CGraphSlamOptimizer< GRAPH_t > |
Interface for implementing graphSLAM optimizer classes. More... | |
class | mrpt::graphslam::deciders::CIncrementalNodeRegistrationDecider< GRAPH_T > |
Incremental Node registration decider. More... | |
class | mrpt::graphslam::deciders::CNodeRegistrationDecider< GRAPH_T > |
Interface for implementing node registration classes. More... | |
class | mrpt::graphslam::CRegistrationDeciderOrOptimizer< GRAPH_T > |
Interface for implementing node/edge registration deciders or optimizer classes. More... | |
class | mrpt::graphslam::detail::CEdgeCounter |
Generic class for tracking the total number of edges for different tpes of edges and for storing visualization-related information for each type. More... | |
class | mrpt::graphslam::deciders::CRangeScanOps< GRAPH_T > |
Class for keeping together all the RangeScanner-related functions. More... | |
class | mrpt::graphslam::CWindowManager |
Class acts as a container for storing pointers to mrpt::gui::CDisplayWindow3D, mrpt::graphslam::CWindowObserver instances. More... | |
class | mrpt::graphslam::CWindowObserver |
Monitor events in the visualization window. More... | |
struct | mrpt::graphslam::TSlidingWindow |
Class to monitor the evolution of a statistical quantity. More... | |
struct | mrpt::graphslam::TUncertaintyPath< GRAPH_T > |
Holds the data of an information path. More... | |
class | mrpt::graphslam::deciders::CEmptyNRD< GRAPH_T > |
Empty Node Registration Decider. More... | |
class | mrpt::graphslam::deciders::CFixedIntervalsNRD< GRAPH_T > |
Fixed Intervals Odometry-based Node Registration. More... | |
class | mrpt::graphslam::deciders::CICPCriteriaNRD< GRAPH_T > |
ICP-based Fixed Intervals Node Registration. More... | |
struct | mrpt::graphslam::graphslam_traits< GRAPH_T > |
Auxiliary traits template for use among graph-slam problems to make life easier with these complicated, long data type names. More... | |
struct | mrpt::graphslam::TResultInfoSpaLevMarq |
Output information for mrpt::graphslam::optimize_graph_spa_levmarq() More... | |
Namespaces | |
mrpt::graphslam | |
SLAM methods related to graphs of pose constraints. | |
Functions | |
template<class GRAPH_T , class FEEDBACK_CALLABLE = typename graphslam_traits<GRAPH_T>::TFunctorFeedback> | |
void | mrpt::graphslam::optimize_graph_spa_levmarq (GRAPH_T &graph, TResultInfoSpaLevMarq &out_info, const std::set< mrpt::graphs::TNodeID > *in_nodes_to_optimize=nullptr, const mrpt::system::TParametersDouble &extra_params=mrpt::system::TParametersDouble(), FEEDBACK_CALLABLE functor_feedback=FEEDBACK_CALLABLE()) |
Optimize a graph of pose constraints using the Sparse Pose Adjustment (SPA) sparse representation and a Levenberg-Marquardt optimizer. More... | |
void mrpt::graphslam::optimize_graph_spa_levmarq | ( | GRAPH_T & | graph, |
TResultInfoSpaLevMarq & | out_info, | ||
const std::set< mrpt::graphs::TNodeID > * | in_nodes_to_optimize = nullptr , |
||
const mrpt::system::TParametersDouble & | extra_params = mrpt::system::TParametersDouble() , |
||
FEEDBACK_CALLABLE | functor_feedback = FEEDBACK_CALLABLE() |
||
) |
Optimize a graph of pose constraints using the Sparse Pose Adjustment (SPA) sparse representation and a Levenberg-Marquardt optimizer.
This method works for all types of graphs derived from CNetworkOfPoses (see its reference mrpt::graphs::CNetworkOfPoses for the list). The input data are all the pose constraints in graph (graph.edges), and the gross first estimations of the "global" pose coordinates (in graph.nodes).
Note that these first coordinates can be obtained with mrpt::graphs::CNetworkOfPoses::dijkstra_nodes_estimate().
The method implemented in this file is based on this work:
[in,out] | graph | The input edges and output poses. |
[out] | out_info | Some basic output information on the process. |
[in] | nodes_to_optimize | The list of nodes whose global poses are to be optimized. If nullptr (default), all the node IDs are optimized (but that marked as root in the graph). |
[in] | extra_params | Optional parameters, see below. |
[in] | functor_feedback | Optional: a pointer to a user function can be set here to be called on each LM loop iteration (eg to refresh the current state and error, refresh a GUI, etc.) |
List of optional parameters by name in "extra_params":
GRAPH_T | Normally a mrpt::graphs::CNetworkOfPoses<EDGE_TYPE,MAPS_IMPLEMENTATION>. Users won't have to write this template argument by hand, since the compiler will auto-fit it depending on the type of the graph object. |
Definition at line 79 of file levmarq.h.
References __CURRENT_FUNCTION_NAME__, ASSERTDEB_, ASSERTDEB_ABOVE_, ASSERTDEB_EQUAL_, ASSERTMSG_, mrpt::containers::begin(), mrpt::math::CSparseMatrix::compressFromTriplet(), mrpt::system::CTimeLogger::enter(), mrpt::graphslam::TResultInfoSpaLevMarq::final_total_sq_error, mrpt::containers::find_in_vector(), mrpt::format(), mrpt::math::CSparseMatrix::insert_entry_fast(), mrpt::math::CSparseMatrix::insert_submatrix(), mrpt::keep_max(), mrpt::system::CTimeLogger::leave(), MRPT_END, MRPT_START, mrpt::math::norm(), mrpt::math::norm_inf(), mrpt::graphslam::TResultInfoSpaLevMarq::num_iters, mrpt::math::MatrixVectorBase< Scalar, Derived >::setZero(), mrpt::math::CVectorDynamic< T >::size(), mrpt::square(), mrpt::math::UNINITIALIZED_MATRIX, and verbose.
Referenced by mrpt::graphslam::optimizers::CLevMarqGSO< GRAPH_T >::_optimizeGraph(), mrpt::hmtslam::CHierarchicalMapMHPartition::computeGloballyConsistentNodeCoordinates(), GraphTester< my_graph_t >::test_optimize_compare_known_solution(), and GraphTester< my_graph_t >::test_ring_path().
Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: c7a3bec24 Sun Mar 29 18:33:13 2020 +0200 at dom mar 29 18:50:38 CEST 2020 |