gtsam  3.2.1
gtsam
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GaussianFactor.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 // \callgraph
20 
21 #pragma once
22 
23 #include <gtsam/base/Matrix.h>
24 #include <gtsam/inference/Factor.h>
25 
26 namespace gtsam {
27 
28  // Forward declarations
29  class VectorValues;
30 
35  class GTSAM_EXPORT GaussianFactor : public Factor
36  {
37  public:
38  typedef GaussianFactor This;
39  typedef boost::shared_ptr<This> shared_ptr;
40  typedef Factor Base;
41 
44 
47  template<typename CONTAINER>
48  GaussianFactor(const CONTAINER& keys) : Base(keys) {}
49 
51  virtual ~GaussianFactor() {}
52 
53  // Implementing Testable interface
54  virtual void print(const std::string& s = "",
55  const KeyFormatter& formatter = DefaultKeyFormatter) const = 0;
56 
58  virtual bool equals(const GaussianFactor& lf, double tol = 1e-9) const = 0;
59 
61  virtual double error(const VectorValues& c) const = 0;
64  virtual DenseIndex getDim(const_iterator variable) const = 0;
65 
73  virtual Matrix augmentedJacobian() const = 0;
74 
82  virtual std::pair<Matrix,Vector> jacobian() const = 0;
83 
92  virtual Matrix augmentedInformation() const = 0;
93 
97  virtual Matrix information() const = 0;
98 
100  virtual VectorValues hessianDiagonal() const = 0;
101 
103  virtual void hessianDiagonal(double* d) const = 0;
104 
106  virtual std::map<Key,Matrix> hessianBlockDiagonal() const = 0;
107 
109  virtual GaussianFactor::shared_ptr clone() const = 0;
110 
112  virtual bool empty() const = 0;
113 
119  virtual GaussianFactor::shared_ptr negate() const = 0;
120 
122  virtual void multiplyHessianAdd(double alpha, const VectorValues& x, VectorValues& y) const = 0;
123 
125  virtual void multiplyHessianAdd(double alpha, const double* x, double* y, std::vector<size_t> keys) const = 0;
126 
128  virtual void multiplyHessianAdd(double alpha, const double* x, double* y) const = 0;
129 
131  virtual VectorValues gradientAtZero() const = 0;
132 
134  virtual void gradientAtZero(double* d) const = 0;
135 
136  private:
138  friend class boost::serialization::access;
139  template<class ARCHIVE>
140  void serialize(ARCHIVE & ar, const unsigned int version) {
141  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
142  }
143 
144  }; // GaussianFactor
145 
146 } // namespace gtsam
virtual ~GaussianFactor()
Destructor.
Definition: GaussianFactor.h:51
This is the base class for all factor types.
Definition: Factor.h:51
GaussianFactor This
This class.
Definition: GaussianFactor.h:38
void print(const Matrix &A, const string &s, ostream &stream)
print a matrix
Definition: Matrix.cpp:183
The base class for all factors.
GaussianFactor(const CONTAINER &keys)
Construct from container of keys.
Definition: GaussianFactor.h:48
Template to create a binary predicate.
Definition: Testable.h:102
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:74
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:39
typedef and functions to augment Eigen's MatrixXd
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:89
Factor Base
Our base class.
Definition: GaussianFactor.h:40
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
GaussianFactor()
Default constructor creates empty factor.
Definition: GaussianFactor.h:43
An abstract virtual base class for JacobianFactor and HessianFactor.
Definition: GaussianFactor.h:35