gtsam  3.2.1
gtsam
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LinearContainerFactor.h
Go to the documentation of this file.
1 
10 #pragma once
11 
13 
14 
15 namespace gtsam {
16 
17  // Forward declarations
18  class JacobianFactor;
19  class HessianFactor;
20 
27 class GTSAM_EXPORT LinearContainerFactor : public NonlinearFactor {
28 protected:
29 
31  boost::optional<Values> linearizationPoint_;
32 
35 
37  LinearContainerFactor(const GaussianFactor::shared_ptr& factor, const boost::optional<Values>& linearizationPoint);
38 
39 public:
40 
42  LinearContainerFactor(const JacobianFactor& factor, const Values& linearizationPoint = Values());
43 
45  LinearContainerFactor(const HessianFactor& factor, const Values& linearizationPoint = Values());
46 
48  LinearContainerFactor(const GaussianFactor::shared_ptr& factor, const Values& linearizationPoint = Values());
49 
50  // Access
51 
52  const GaussianFactor::shared_ptr& factor() const { return factor_; }
53 
54  // Testable
55 
57  void print(const std::string& s = "", const KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter) const;
58 
60  bool equals(const NonlinearFactor& f, double tol = 1e-9) const;
61 
62  // NonlinearFactor
63 
72  double error(const Values& c) const;
73 
75  size_t dim() const;
76 
78  const boost::optional<Values>& linearizationPoint() const { return linearizationPoint_; }
79 
96  GaussianFactor::shared_ptr linearize(const Values& c) const;
97 
101  GaussianFactor::shared_ptr negateToGaussian() const;
102 
106  NonlinearFactor::shared_ptr negateToNonlinear() const;
107 
114  NonlinearFactor::shared_ptr clone() const {
115  return NonlinearFactor::shared_ptr(new LinearContainerFactor(factor_,linearizationPoint_));
116  }
117 
118  // casting syntactic sugar
119 
120  inline bool hasLinearizationPoint() const { return linearizationPoint_.is_initialized(); }
121 
125  bool isJacobian() const;
126  bool isHessian() const;
127 
129  boost::shared_ptr<JacobianFactor> toJacobian() const;
130 
132  boost::shared_ptr<HessianFactor> toHessian() const;
133 
138  static NonlinearFactorGraph convertLinearGraph(const GaussianFactorGraph& linear_graph,
139  const Values& linearizationPoint = Values());
140 
141 protected:
142  void initializeLinearizationPoint(const Values& linearizationPoint);
143 
144 private:
145 
147  friend class boost::serialization::access;
148  template<class ARCHIVE>
149  void serialize(ARCHIVE & ar, const unsigned int version) {
150  ar & boost::serialization::make_nvp("NonlinearFactor",
151  boost::serialization::base_object<Base>(*this));
152  ar & BOOST_SERIALIZATION_NVP(factor_);
153  ar & BOOST_SERIALIZATION_NVP(linearizationPoint_);
154  }
155 
156 }; // \class LinearContainerFactor
157 
158 } // \namespace gtsam
159 
A Gaussian factor using the canonical parameters (information form)
Definition: HessianFactor.h:131
NonlinearFactor::shared_ptr clone() const
Creates a shared_ptr clone of the factor - needs to be specialized to allow for subclasses.
Definition: LinearContainerFactor.h:114
A Gaussian factor in the squared-error form.
Definition: JacobianFactor.h:82
size_t dim(const Vector &v)
dimensionality == size
Definition: Vector.h:90
Factor Graph Constsiting of non-linear factors.
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:75
Dummy version of a generic linear factor to be injected into a nonlinear factor graph.
Definition: LinearContainerFactor.h:27
void print(const Matrix &A, const string &s, ostream &stream)
print a matrix
Definition: Matrix.cpp:183
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:39
Nonlinear factor base class.
Definition: NonlinearFactor.h:54
LinearContainerFactor()
Default constructor - necessary for serialization.
Definition: LinearContainerFactor.h:34
const boost::optional< Values > & linearizationPoint() const
Extract the linearization point used in recalculating error.
Definition: LinearContainerFactor.h:78
boost::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: types.h:62