HybridGaussianFactor.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 
21 #pragma once
22 
29 
30 namespace gtsam {
31 
32 class HybridValues;
33 class DiscreteValues;
34 class VectorValues;
35 
37 using GaussianFactorValuePair = std::pair<GaussianFactor::shared_ptr, double>;
38 
59 class GTSAM_EXPORT HybridGaussianFactor : public HybridFactor {
60  public:
61  using Base = HybridFactor;
63  using shared_ptr = std::shared_ptr<This>;
64 
65  using sharedFactor = std::shared_ptr<GaussianFactor>;
66 
71 
72  private:
75 
82  GaussianFactorGraphTree asGaussianFactorGraphTree() const;
83 
84  public:
87 
89  HybridGaussianFactor() = default;
90 
100  HybridGaussianFactor(const KeyVector &continuousKeys,
101  const DiscreteKey &discreteKey,
102  const std::vector<GaussianFactor::shared_ptr> &factors)
103  : Base(continuousKeys, {discreteKey}), factors_({discreteKey}, factors) {}
104 
115  HybridGaussianFactor(const KeyVector &continuousKeys,
116  const DiscreteKey &discreteKey,
117  const std::vector<GaussianFactorValuePair> &factors)
118  : HybridGaussianFactor(continuousKeys, {discreteKey},
119  FactorValuePairs({discreteKey}, factors)) {}
120 
131  HybridGaussianFactor(const KeyVector &continuousKeys,
132  const DiscreteKeys &discreteKeys,
133  const FactorValuePairs &factors);
134 
138 
139  bool equals(const HybridFactor &lf, double tol = 1e-9) const override;
140 
141  void print(const std::string &s = "", const KeyFormatter &formatter =
142  DefaultKeyFormatter) const override;
143 
147 
149  sharedFactor operator()(const DiscreteValues &assignment) const;
150 
160 
168  AlgebraicDecisionTree<Key> errorTree(
169  const VectorValues &continuousValues) const override;
170 
175  double error(const HybridValues &values) const override;
176 
178  const Factors &factors() const { return factors_; }
179 
182  GaussianFactorGraphTree &sum, const HybridGaussianFactor &factor) {
183  sum = factor.add(sum);
184  return sum;
185  }
187 
188  private:
190  double potentiallyPrunedComponentError(
191  const sharedFactor &gf, const VectorValues &continuousValues) const;
192 
193 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
194 
195  friend class boost::serialization::access;
196  template <class ARCHIVE>
197  void serialize(ARCHIVE &ar, const unsigned int /*version*/) {
198  ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
199  ar &BOOST_SERIALIZATION_NVP(factors_);
200  }
201 #endif
202 };
203 
204 // traits
205 template <>
206 struct traits<HybridGaussianFactor> : public Testable<HybridGaussianFactor> {};
207 
208 } // namespace gtsam
VectorValues
GaussianFactorGraph.h
Linear Factor Graph where all factors are Gaussians.
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam::HybridGaussianFactor::HybridGaussianFactor
HybridGaussianFactor(const KeyVector &continuousKeys, const DiscreteKey &discreteKey, const std::vector< GaussianFactor::shared_ptr > &factors)
Construct a new HybridGaussianFactor on a single discrete key, providing the factors for each mode m ...
Definition: HybridGaussianFactor.h:100
simple_graph::factors
const GaussianFactorGraph factors
Definition: testJacobianFactor.cpp:213
gtsam::HybridGaussianFactor::factors
const Factors & factors() const
Getter for GaussianFactor decision tree.
Definition: HybridGaussianFactor.h:178
gtsam::HybridFactor
Definition: HybridFactor.h:54
gtsam::HybridFactor::shared_ptr
std::shared_ptr< HybridFactor > shared_ptr
shared_ptr to this class
Definition: HybridFactor.h:73
formatter
const KeyFormatter & formatter
Definition: treeTraversal-inst.h:204
gtsam::HybridGaussianFactor::add
GaussianFactorGraphTree add(const GaussianFactorGraphTree &sum) const
Combine the Gaussian Factor Graphs in sum and this while maintaining the original tree structure.
Definition: HybridGaussianFactor.cpp:135
gtsam::Factor
Definition: Factor.h:70
HybridValues
gtsam::KeyVector
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:92
gtsam::DefaultKeyFormatter
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition: Key.cpp:30
AlgebraicDecisionTree.h
Algebraic Decision Trees.
gtsam::print
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:155
HybridFactor.h
gtsam::GaussianFactorValuePair
std::pair< GaussianFactor::shared_ptr, double > GaussianFactorValuePair
Alias for pair of GaussianFactor::shared_pointer and a double value.
Definition: HybridGaussianFactor.h:37
gtsam::VectorValues
Definition: VectorValues.h:74
operator()
internal::enable_if< internal::valid_indexed_view_overload< RowIndices, ColIndices >::value &&internal::traits< typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::ReturnAsIndexedView, typename EIGEN_INDEXED_VIEW_METHOD_TYPE< RowIndices, ColIndices >::type >::type operator()(const RowIndices &rowIndices, const ColIndices &colIndices) EIGEN_INDEXED_VIEW_METHOD_CONST
Definition: IndexedViewMethods.h:73
gtsam::KeyFormatter
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
gtsam::HybridGaussianFactor::operator+=
friend GaussianFactorGraphTree & operator+=(GaussianFactorGraphTree &sum, const HybridGaussianFactor &factor)
Add HybridNonlinearFactor to a Sum, syntactic sugar.
Definition: HybridGaussianFactor.h:181
DecisionTree.h
Decision Tree for use in DiscreteFactors.
add
graph add(PriorFactor< Pose2 >(1, priorMean, priorNoise))
DiscreteValues
DiscreteKey.h
specialized key for discrete variables
gtsam::DecisionTree
a decision tree is a function from assignments to values.
Definition: DecisionTree.h:63
gtsam
traits
Definition: chartTesting.h:28
gtsam::Testable
Definition: Testable.h:152
error
static double error
Definition: testRot3.cpp:37
gtsam::traits
Definition: Group.h:36
gtsam::HybridGaussianFactor::sharedFactor
std::shared_ptr< GaussianFactor > sharedFactor
Definition: HybridGaussianFactor.h:65
leaf::values
leaf::MyValues values
gtsam::HybridGaussianFactor::HybridGaussianFactor
HybridGaussianFactor(const KeyVector &continuousKeys, const DiscreteKey &discreteKey, const std::vector< GaussianFactorValuePair > &factors)
Construct a new HybridGaussianFactor on a single discrete key, including a scalar error value for eac...
Definition: HybridGaussianFactor.h:115
gtsam::DiscreteKey
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38
gtsam::HybridGaussianFactor
Implementation of a discrete-conditioned hybrid factor. Implements a joint discrete-continuous factor...
Definition: HybridGaussianFactor.h:59
gtsam::HybridGaussianFactor::factors_
Factors factors_
Decision tree of Gaussian factors indexed by discrete keys.
Definition: HybridGaussianFactor.h:74
gtsam::tol
const G double tol
Definition: Group.h:79
GaussianFactor.h
A factor with a quadratic error function - a Gaussian.
Base
Definition: test_virtual_functions.cpp:156
gtsam::GaussianFactorGraphTree
DecisionTree< Key, GaussianFactorGraph > GaussianFactorGraphTree
Alias for DecisionTree of GaussianFactorGraphs.
Definition: HybridFactor.h:36


gtsam
Author(s):
autogenerated on Wed Sep 25 2024 03:02:32