gtsam
Loading...
Searching...
No Matches
HybridNonlinearFactor.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
27#include <gtsam/nonlinear/Symbol.h>
28
29#include <vector>
30
31namespace gtsam {
32
35 std::pair<NoiseModelFactor::shared_ptr, double>;
36
58class GTSAM_EXPORT HybridNonlinearFactor : public HybridFactor {
59 public:
60 using Base = HybridFactor;
61 using This = HybridNonlinearFactor;
62 using shared_ptr = std::shared_ptr<HybridNonlinearFactor>;
63 using sharedFactor = std::shared_ptr<NoiseModelFactor>;
64
70
71 private:
73 FactorValuePairs factors_;
74
86 const VectorValues& continuousValues) const override {
87 throw std::runtime_error(
88 "HybridNonlinearFactor::errorTree: use errorTree(gtsam::Values) for nonlinear values.");
89 }
90
91public:
94
97
107 const DiscreteKey& discreteKey,
108 const std::vector<NoiseModelFactor::shared_ptr>& factors);
109
119 HybridNonlinearFactor(const DiscreteKey& discreteKey,
120 const std::vector<NonlinearFactorValuePair>& pairs);
121
133
137
145 AlgebraicDecisionTree<Key> errorTree(const Values& continuousValues) const;
146
154 double error(const Values& continuousValues,
155 const DiscreteValues& assignment) const;
156
164 double error(const HybridValues& hybridValues) const override;
165
172 size_t dim() const;
173
175 const FactorValuePairs& factors() const { return factors_; }
176
186 GaussianFactor::shared_ptr linearize(const Values& continuousValues,
187 const DiscreteValues& assignment) const;
188
190 std::shared_ptr<HybridGaussianFactor> linearize(
191 const Values& continuousValues) const;
192
201 HybridNonlinearFactor::shared_ptr prune(
202 const DecisionTreeFactor& discreteProbs) const;
203
212 std::shared_ptr<Factor> restrict(
213 const DiscreteValues& assignment) const override;
214
218
220 void print(const std::string& s = "", const KeyFormatter& keyFormatter =
221 DefaultKeyFormatter) const override;
222
224 bool equals(const HybridFactor& other, double tol = 1e-9) const override;
225
227
228 private:
230 struct ConstructorHelper;
231
232 // Private constructor using ConstructorHelper above.
233 HybridNonlinearFactor(const ConstructorHelper& helper);
234
235#if GTSAM_ENABLE_BOOST_SERIALIZATION
237 friend class boost::serialization::access;
238 template <class Archive>
239 void serialize(Archive& ar, const unsigned int /*version*/) {
240 // Serialize base class
241 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
242 // Serialize derived class members
243 ar& BOOST_SERIALIZATION_NVP(factors_);
244 }
245#endif
246};
247
248// traits
249template <>
250struct traits<HybridNonlinearFactor> : public Testable<HybridNonlinearFactor> {
251};
252
253} // namespace gtsam
A set of GaussianFactors, indexed by a set of discrete keys.
Factor Graph consisting of non-linear factors.
Non-linear factor base classes.
std::pair< Key, size_t > DiscreteKey
Key type for discrete variables.
Definition DiscreteKey.h:38
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
std::pair< NoiseModelFactor::shared_ptr, double > NonlinearFactorValuePair
Alias for a NoiseModelFactor shared pointer and double scalar pair.
Definition HybridNonlinearFactor.h:34
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
Template to create a binary predicate.
Definition Testable.h:112
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
An algebraic decision tree fixes the range of a DecisionTree to double.
Definition AlgebraicDecisionTree.h:41
a decision tree is a function from assignments to values.
Definition DecisionTree.h:62
A discrete probabilistic factor.
Definition DecisionTreeFactor.h:42
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition DiscreteKey.h:41
A map from keys to values.
Definition DiscreteValues.h:34
Base class for truly hybrid probabilistic factors.
Definition HybridFactor.h:51
HybridFactor()=default
Default constructor creates empty factor.
const DiscreteKeys & discreteKeys() const
Return the discrete keys for this factor.
Definition HybridFactor.h:131
Implementation of a discrete-conditioned hybrid factor.
Definition HybridNonlinearFactor.h:58
const FactorValuePairs & factors() const
Getter for NonlinearFactor decision tree.
Definition HybridNonlinearFactor.h:175
size_t dim() const
Get the dimension of the factor (number of rows on linearization).
Definition HybridNonlinearFactor.cpp:125
HybridNonlinearFactor()=default
Default constructor, mainly for serialization.
double error(const Values &continuousValues, const DiscreteValues &assignment) const
Compute error of factor given both continuous and discrete values.
Definition HybridNonlinearFactor.cpp:109
DecisionTree< Key, NonlinearFactorValuePair > FactorValuePairs
typedef for DecisionTree which has Keys as node labels and pairs of NoiseModelFactor & an arbitrary s...
Definition HybridNonlinearFactor.h:69
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:37
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition GaussianFactor.h:42
VectorValues represents a collection of vector-valued variables associated each with a unique integer...
Definition VectorValues.h:73
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65