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 
76  public:
79 
81  HybridGaussianFactor() = default;
82 
91  HybridGaussianFactor(const DiscreteKey &discreteKey,
92  const std::vector<GaussianFactor::shared_ptr> &factors);
93 
103  HybridGaussianFactor(const DiscreteKey &discreteKey,
104  const std::vector<GaussianFactorValuePair> &factorPairs);
105 
115  HybridGaussianFactor(const DiscreteKeys &discreteKeys,
116  const FactorValuePairs &factors);
117 
121 
122  bool equals(const HybridFactor &lf, double tol = 1e-9) const override;
123 
124  void print(const std::string &s = "", const KeyFormatter &formatter =
125  DefaultKeyFormatter) const override;
126 
130 
132  sharedFactor operator()(const DiscreteValues &assignment) const;
133 
143 
151  AlgebraicDecisionTree<Key> errorTree(
152  const VectorValues &continuousValues) const override;
153 
158  double error(const HybridValues &values) const override;
159 
161  const Factors &factors() const { return factors_; }
162 
165  GaussianFactorGraphTree &sum, const HybridGaussianFactor &factor) {
166  sum = factor.add(sum);
167  return sum;
168  }
170 
171  protected:
178  GaussianFactorGraphTree asGaussianFactorGraphTree() const;
179 
180  private:
190  static Factors augment(const FactorValuePairs &factors);
191 
193  struct ConstructorHelper;
194 
195  // Private constructor using ConstructorHelper above.
196  HybridGaussianFactor(const ConstructorHelper &helper);
197 
198 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
199 
200  friend class boost::serialization::access;
201  template <class ARCHIVE>
202  void serialize(ARCHIVE &ar, const unsigned int /*version*/) {
203  ar &BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
204  ar &BOOST_SERIALIZATION_NVP(factors_);
205  }
206 #endif
207 };
208 
209 // traits
210 template <>
211 struct traits<HybridGaussianFactor> : public Testable<HybridGaussianFactor> {};
212 
213 } // namespace gtsam
VectorValues
GaussianFactorGraph.h
Linear Factor Graph where all factors are Gaussians.
gtsam::HybridValues
Definition: HybridValues.h:37
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
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:161
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:195
different_sigmas::values
HybridValues values
Definition: testHybridBayesNet.cpp:195
gtsam::Factor
Definition: Factor.h:70
gtsam::DiscreteKeys
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition: DiscreteKey.h:41
HybridValues
gtsam::DefaultKeyFormatter
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition: Key.cpp:30
gtsam::AlgebraicDecisionTree< Key >
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:164
DecisionTree.h
Decision Tree for use in DiscreteFactors.
add
graph add(PriorFactor< Pose2 >(1, priorMean, priorNoise))
DiscreteValues
gtsam::equals
Definition: Testable.h:112
DiscreteKey.h
specialized key for discrete variables
gtsam::DecisionTree< Key, GaussianFactorValuePair >
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
gtsam::DiscreteValues
Definition: DiscreteValues.h:34
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
Author(s):
autogenerated on Fri Oct 4 2024 03:02:13