treeoptimizer2.hh
Go to the documentation of this file.
1 /**********************************************************************
2  *
3  * This source code is part of the Tree-based Network Optimizer (TORO)
4  *
5  * TORO Copyright (c) 2007 Giorgio Grisetti, Cyrill Stachniss,
6  * Slawomir Grzonka, and Wolfram Burgard
7  *
8  * TORO is licences under the Common Creative License,
9  * Attribution-NonCommercial-ShareAlike 3.0
10  *
11  * You are free:
12  * - to Share - to copy, distribute and transmit the work
13  * - to Remix - to adapt the work
14  *
15  * Under the following conditions:
16  *
17  * - Attribution. You must attribute the work in the manner specified
18  * by the author or licensor (but not in any way that suggests that
19  * they endorse you or your use of the work).
20  *
21  * - Noncommercial. You may not use this work for commercial purposes.
22  *
23  * - Share Alike. If you alter, transform, or build upon this work,
24  * you may distribute the resulting work only under the same or
25  * similar license to this one.
26  *
27  * Any of the above conditions can be waived if you get permission
28  * from the copyright holder. Nothing in this license impairs or
29  * restricts the author's moral rights.
30  *
31  * TORO is distributed in the hope that it will be useful,
32  * but WITHOUT ANY WARRANTY; without even the implied
33  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
34  * PURPOSE.
35  **********************************************************************/
36 
44 #ifndef _TREEOPTIMIZER2_HH_
45 #define _TREEOPTIMIZER2_HH_
46 
47 #include "posegraph2.hh"
48 
49 namespace AISNavigation {
50 
53  typedef std::vector<Pose> PoseVector;
54 
57 
59  virtual ~TreeOptimizer2();
60 
63 
66 
69 
71  void iterate(TreePoseGraph2::EdgeSet* eset=0);
72 
74  double error() const;
75 
76 protected:
78  void computePreconditioner();
79 
81  void propagateErrors();
82 
85  void updatePoseChain(Vertex* v, Vertex* top);
86 
89  Pose getPose(Vertex*v, Vertex* top);
90 
92  double error(const Edge* e) const;
93 
95  int iteration;
96 
98  double gamma[3];
99 
102  PoseVector M;
103 
104 };
105 
106 }; //namespace AISNavigation
107 #endif
void iterate(TreePoseGraph2::EdgeSet *eset=0)
Class that contains the core optimization algorithm.
GLM_FUNC_DECL genType e()
std::vector< Pose > PoseVector
Defines the graph of 2D poses, with specific functionalities such as loading, saving, merging constraints, and etc.
void updatePoseChain(Vertex *v, Vertex *top)
Pose getPose(Vertex *v, Vertex *top)
The class (struct) that contains 2D graph related functions such as loading, saving, merging, etc.
Definition: posegraph2.hh:57
2D Point (x,y) with orientation (theta)
std::multiset< Edge *, EVComparator< Edge * > > EdgeSet
Definition: posegraph.hh:123


rtabmap
Author(s): Mathieu Labbe
autogenerated on Wed Jun 5 2019 22:43:40