|
g2o
|
Implementation of a linear approximation for 2D pose graph SLAM. More...
#include <solver_slam2d_linear.h>


Public Member Functions | |
| SolverSLAM2DLinear (std::unique_ptr< Solver > solver) | |
| virtual | ~SolverSLAM2DLinear () |
| virtual OptimizationAlgorithm::SolverResult | solve (int iteration, bool online=false) |
Public Member Functions inherited from g2o::OptimizationAlgorithmGaussNewton | |
| OptimizationAlgorithmGaussNewton (std::unique_ptr< Solver > solver) | |
| virtual | ~OptimizationAlgorithmGaussNewton () |
| virtual void | printVerbose (std::ostream &os) const |
Public Member Functions inherited from g2o::OptimizationAlgorithmWithHessian | |
| OptimizationAlgorithmWithHessian (Solver &solver) | |
| virtual | ~OptimizationAlgorithmWithHessian () |
| virtual bool | init (bool online=false) |
| virtual bool | computeMarginals (SparseBlockMatrix< MatrixX > &spinv, const std::vector< std::pair< int, int > > &blockIndices) |
| virtual bool | buildLinearStructure () |
| virtual void | updateLinearSystem () |
| virtual bool | updateStructure (const std::vector< HyperGraph::Vertex * > &vset, const HyperGraph::EdgeSet &edges) |
| Solver & | solver () |
| return the underlying solver used to solve the linear system | |
| virtual void | setWriteDebug (bool writeDebug) |
| virtual bool | writeDebug () const |
Public Member Functions inherited from g2o::OptimizationAlgorithm | |
| OptimizationAlgorithm () | |
| virtual | ~OptimizationAlgorithm () |
| const SparseOptimizer * | optimizer () const |
| return the optimizer operating on | |
| SparseOptimizer * | optimizer () |
| void | setOptimizer (SparseOptimizer *optimizer) |
| const PropertyMap & | properties () const |
| return the properties of the solver | |
| bool | updatePropertiesFromString (const std::string &propString) |
| void | printProperties (std::ostream &os) const |
Protected Member Functions | |
| bool | solveOrientation () |
Additional Inherited Members | |
Protected Attributes inherited from g2o::OptimizationAlgorithmWithHessian | |
| Solver & | _solver |
| Property< bool > * | _writeDebug |
Protected Attributes inherited from g2o::OptimizationAlgorithm | |
| SparseOptimizer * | _optimizer |
| the optimizer the solver is working on | |
| PropertyMap | _properties |
Implementation of a linear approximation for 2D pose graph SLAM.
Needs to operate on the full graph, whereas the nodes connected by odometry are 0 -> 1 -> 2 -> ... Furthermore exactly one node should be the fixed vertex. Within the first iteration the orientation of the nodes is computed. In the subsequent iterations full non-linear GN is carried out. The linear approximation is correct, if the covariance of the constraints is a diagonal matrix.
More or less the solver is an implementation of the approach described by Carlone et al, RSS'11.
Definition at line 49 of file solver_slam2d_linear.h.
|
explicit |
Construct a Solver for solving 2D pose graphs. Within the first iteration the rotations are solved and afterwards standard non-linear Gauss Newton is carried out.
Definition at line 75 of file solver_slam2d_linear.cpp.
|
virtual |
Definition at line 78 of file solver_slam2d_linear.cpp.
|
virtual |
Solve one iteration. The SparseOptimizer running on-top will call this for the given number of iterations.
| iteration | indicates the current iteration |
Reimplemented from g2o::OptimizationAlgorithmGaussNewton.
Definition at line 80 of file solver_slam2d_linear.cpp.
References g2o::OptimizationAlgorithmGaussNewton::solve(), and solveOrientation().
|
protected |
Definition at line 90 of file solver_slam2d_linear.cpp.
References __PRETTY_FUNCTION__, g2o::OptimizationAlgorithm::_optimizer, g2o::SparseOptimizer::activeEdges(), g2o::HyperDijkstra::adjacencyMap(), g2o::SparseBlockMatrix< MatrixType >::block(), g2o::HyperDijkstra::computeTree(), g2o::OptimizableGraph::Vertex::fixed(), G2O_ERROR, g2o::OptimizableGraph::Vertex::hessianIndex(), g2o::SparseOptimizer::indexMapping(), g2o::BaseEdge< D, E >::information(), g2o::LinearSolverEigen< MatrixType >::init(), g2o::BaseEdge< D, E >::measurement(), g2o::normalize_theta(), g2o::BaseVertex< D, T >::setEstimate(), g2o::OptimizableGraph::Vertex::setToOrigin(), g2o::HyperDijkstra::shortestPaths(), g2o::OptimizableGraph::vertex(), g2o::HyperGraph::Edge::vertices(), g2o::HyperGraph::vertices(), and g2o::HyperDijkstra::visitAdjacencyMap().
Referenced by solve().