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 
20 #pragma once
21 
27 #include <gtsam/nonlinear/Symbol.h>
28 
29 #include <algorithm>
30 #include <cmath>
31 #include <limits>
32 #include <vector>
33 
34 namespace gtsam {
35 
37 using NonlinearFactorValuePair = std::pair<NonlinearFactor::shared_ptr, double>;
38 
60 class GTSAM_EXPORT HybridNonlinearFactor : public HybridFactor {
61  public:
62  using Base = HybridFactor;
64  using shared_ptr = std::shared_ptr<HybridNonlinearFactor>;
65  using sharedFactor = std::shared_ptr<NonlinearFactor>;
66 
72 
73  private:
76 
79  const VectorValues& continuousValues) const override {
80  throw std::runtime_error(
81  "HybridNonlinearFactor::error does not take VectorValues.");
82  }
83 
84  public:
86  HybridNonlinearFactor() = default;
87 
98  const KeyVector& continuousKeys, const DiscreteKey& discreteKey,
99  const std::vector<NonlinearFactor::shared_ptr>& factors);
100 
111  HybridNonlinearFactor(const KeyVector& continuousKeys,
112  const DiscreteKey& discreteKey,
113  const std::vector<NonlinearFactorValuePair>& pairs);
114 
125  HybridNonlinearFactor(const KeyVector& continuousKeys,
126  const DiscreteKeys& discreteKeys,
127  const FactorValuePairs& factors);
136  AlgebraicDecisionTree<Key> errorTree(const Values& continuousValues) const;
137 
145  double error(const Values& continuousValues,
146  const DiscreteValues& discreteValues) const;
147 
154  double error(const HybridValues& values) const override;
155 
161  size_t dim() const;
162 
165 
167  void print(const std::string& s = "", const KeyFormatter& keyFormatter =
168  DefaultKeyFormatter) const override;
169 
171  bool equals(const HybridFactor& other, double tol = 1e-9) const override;
172 
174 
177  GaussianFactor::shared_ptr linearize(
178  const Values& continuousValues,
179  const DiscreteValues& discreteValues) const;
180 
182  std::shared_ptr<HybridGaussianFactor> linearize(
183  const Values& continuousValues) const;
184 };
185 
186 // traits
187 template <>
188 struct traits<HybridNonlinearFactor> : public Testable<HybridNonlinearFactor> {
189 };
190 
191 } // namespace gtsam
gtsam::HybridValues
Definition: HybridValues.h:37
gtsam::NonlinearFactorValuePair
std::pair< NonlinearFactor::shared_ptr, double > NonlinearFactorValuePair
Alias for a NonlinearFactor shared pointer and double scalar pair.
Definition: HybridNonlinearFactor.h:37
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
gtsam::HybridNonlinearFactor::sharedFactor
std::shared_ptr< NonlinearFactor > sharedFactor
Definition: HybridNonlinearFactor.h:65
simple_graph::factors
const GaussianFactorGraph factors
Definition: testJacobianFactor.cpp:213
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
Symbol.h
Symbol.h was moved to inference directory, this header was retained for compatibility.
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
gtsam::KeyVector
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:92
HybridGaussianFactor.h
A set of GaussianFactors, indexed by a set of discrete keys.
gtsam::DefaultKeyFormatter
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition: Key.cpp:30
gtsam::AlgebraicDecisionTree< Key >
gtsam::print
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:155
gtsam::VectorValues
Definition: VectorValues.h:74
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::GaussianFactor::shared_ptr
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
gtsam::equals
Definition: Testable.h:112
NonlinearFactor.h
Non-linear factor base classes.
gtsam::DecisionTree< Key, NonlinearFactorValuePair >
gtsam
traits
Definition: chartTesting.h:28
gtsam::Testable
Definition: Testable.h:152
DiscreteValues.h
error
static double error
Definition: testRot3.cpp:37
gtsam::traits
Definition: Group.h:36
NonlinearFactorGraph.h
Factor Graph consisting of non-linear factors.
gtsam::DiscreteValues
Definition: DiscreteValues.h:34
leaf::values
leaf::MyValues values
gtsam::Values
Definition: Values.h:65
gtsam::DiscreteKey
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38
gtsam::tol
const G double tol
Definition: Group.h:79
gtsam::HybridNonlinearFactor::factors_
FactorValuePairs factors_
Decision tree of nonlinear factors indexed by discrete keys.
Definition: HybridNonlinearFactor.h:75
gtsam::HybridNonlinearFactor::errorTree
AlgebraicDecisionTree< Key > errorTree(const VectorValues &continuousValues) const override
HybridFactor method implementation. Should not be used.
Definition: HybridNonlinearFactor.h:78
HybridValues.h
gtsam::HybridNonlinearFactor
Implementation of a discrete-conditioned hybrid factor.
Definition: HybridNonlinearFactor.h:60
pybind_wrapper_test_script.other
other
Definition: pybind_wrapper_test_script.py:42


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