GTSAM_solver.hpp
Go to the documentation of this file.
1 /*********************************************************************
2 *
3 * Copyright (c) 2017, Saurav Agarwal
4 * All rights reserved.
5 *
6 *********************************************************************/
7 
8 /* Authors: Saurav Agarwal */
9 /* Modified: Steve Macenski */
10 
11 #ifndef KARTO_GTSAMSolver_H
12 #define KARTO_GTSAMSolver_H
13 
14 #include <karto_sdk/Mapper.h>
15 #include <gtsam/slam/PriorFactor.h>
16 #include <gtsam/slam/BetweenFactor.h>
17 #include <gtsam/geometry/Pose2.h>
18 #include <gtsam/nonlinear/LevenbergMarquardtOptimizer.h>
19 #include <gtsam/nonlinear/Marginals.h>
20 
21 namespace solver_plugins
22 {
23 
28 {
29  public:
30 
31  GTSAMSolver();
32 
33  virtual ~GTSAMSolver();
34 
35  public:
36 
41  virtual void Clear();
42 
47  virtual void Compute();
48 
54  virtual const karto::ScanSolver::IdPoseVector& GetCorrections() const;
55 
63 
71 
78  virtual void getGraph(std::vector<Eigen::Vector2d>& nodes); // std::vector<std::pair<Eigen::Vector2d, Eigen::Vector2d> > &edges);
79 
80  virtual void ModifyNode(const int& unique_id, const Eigen::Vector3d& pose); // change a node's pose
81 
82  private:
83 
85  gtsam::NonlinearFactorGraph graph_;
86  gtsam::Values initialGuess_;
87  std::vector<Eigen::Vector2d> graphNodes_;
88 };
89 
90 } // end namespace
91 
92 #endif // KARTO_GTSAMSolver_H
93 
virtual std::unordered_map< int, Eigen::Vector3d > * getGraph()
Definition: Mapper.h:1026
virtual void Clear()
Clear the vector of corrections.
virtual void ModifyNode(const int &unique_id, const Eigen::Vector3d &pose)
Wrapper for G2O to interface with Open Karto.
std::vector< Eigen::Vector2d > graphNodes_
karto::ScanSolver::IdPoseVector corrections_
virtual void AddConstraint(karto::Edge< karto::LocalizedRangeScan > *pEdge)
Add an edge constraint to pose-graph.
std::vector< std::pair< kt_int32s, Pose2 > > IdPoseVector
Definition: Mapper.h:953
virtual const karto::ScanSolver::IdPoseVector & GetCorrections() const
Get the vector of corrections.
gtsam::NonlinearFactorGraph graph_
virtual void Compute()
Solve the SLAM back-end.
virtual void AddNode(karto::Vertex< karto::LocalizedRangeScan > *pVertex)
Add a node to pose-graph.


slam_toolbox
Author(s): Steve Macenski
autogenerated on Mon Feb 28 2022 23:46:48