gtsam
Loading...
Searching...
No Matches
DCSAM.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
19
20#pragma once
21
32
33#include <map>
34#include <set>
35#include <tuple>
36#include <utility>
37#include <vector>
38
39namespace gtsam {
40
49class GTSAM_EXPORT DCSAM {
50 private:
57
58 // TODO(Varun): Allow for using other continuous and discrete solvers
59
61 ISAM2 isam_;
62
64 Values currContinuous_;
66 DiscreteValues currDiscrete_;
67
68 public:
69 DCSAM();
70
71 explicit DCSAM(const ISAM2Params &isam_params);
72
106 void update(const HybridNonlinearFactorGraph &graph,
107 const HybridValues &initialGuess = HybridValues());
108
113 inline void update(const HybridNonlinearFactorGraph &graph,
114 const DiscreteValues &initialGuessDiscrete) {
115 update(graph, HybridValues(VectorValues(), initialGuessDiscrete));
116 }
117
122 void update();
123
134 HybridValues calculateEstimate() const;
135
137 const VectorValues& getDelta() const;
138
140 double error(const VectorValues& x) const;
141
154 // DCMarginals getMarginals(const NonlinearFactorGraph &graph,
155 // const Values &continuousEst,
156 // const DiscreteFactorGraph &dfg);
157
158 const DiscreteFactorGraph &getDiscreteFactorGraph() const { return dfg_; }
159
160 const NonlinearFactorGraph &getNonlinearFactorGraph() const {
161 return isam_.getFactorsUnsafe();
162 }
163
164 protected:
174 void updateDiscrete(const DiscreteFactorGraph &dfg = DiscreteFactorGraph(),
175 const DiscreteValues &discreteVals = DiscreteValues());
176
188 void updateContinuous(const NonlinearFactorGraph &newFactors,
189 const Values &initialGuess);
190
201 DiscreteValues solveDiscrete() const;
202};
203
204} // namespace gtsam
specialized key for discrete variables
A class for computing marginals in a DiscreteFactorGraph.
Nonlinear hybrid factor graph that uses type erasure.
Factor Graph Base Class.
A class for computing marginals in a NonlinearFactorGraph.
Factor Graph consisting of non-linear factors.
Incremental update functionality (ISAM2) for BayesTree, with fluid relinearization.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
A Discrete Factor Graph is a factor graph where all factors are Discrete, i.e.
Definition DiscreteFactorGraph.h:100
A map from keys to values.
Definition DiscreteValues.h:34
void update(const HybridNonlinearFactorGraph &graph, const DiscreteValues &initialGuessDiscrete)
Inline convenience function to allow "skipping" the initial guess for continuous variables while addi...
Definition DCSAM.h:113
const DiscreteFactorGraph & getDiscreteFactorGraph() const
Used to obtain the marginals from the solver.
Definition DCSAM.h:158
void update(const HybridNonlinearFactorGraph &graph, const HybridValues &initialGuess=HybridValues())
For this solver, runs an iteration of alternating minimization between discrete and continuous variab...
Definition DCSAM.cpp:29
Definition HybridNonlinearFactorGraph.h:34
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
Implementation of the full ISAM2 algorithm for incremental nonlinear optimization.
Definition ISAM2.h:45
const NonlinearFactorGraph & getFactorsUnsafe() const
Access the set of nonlinear factors.
Definition ISAM2.h:304
Definition ISAM2Params.h:199
Definition NonlinearFactorGraph.h:57
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65
The Factor::error simply extracts the.
In nonlinear factors, the error function returns the negative log-likelihood as a non-linear function...