32 class SymmetricBlockMatrix;
50 template<
typename CONTAINER>
60 const std::string& s =
"",
61 const KeyFormatter& formatter = DefaultKeyFormatter)
const override = 0;
88 virtual std::pair<Matrix,Vector>
jacobian()
const = 0;
151 template <
typename CONTAINER>
153 return std::find(keys.begin(), keys.end(), key) - keys.begin();
158 friend class boost::serialization::access;
159 template<
class ARCHIVE>
160 void serialize(ARCHIVE & ar,
const unsigned int ) {
161 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(
Base);
typedef and functions to augment Eigen's MatrixXd
Concept check for values that can be used in unit tests.
The base class for all factors.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:75
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:112
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:69
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
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Definition: SymmetricBlockMatrix.h:52
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
This is the base class for all factor types.
Definition: Factor.h:56
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:68
An abstract virtual base class for JacobianFactor and HessianFactor.
Definition: GaussianFactor.h:39
virtual DenseIndex getDim(const_iterator variable) const =0
0.5*(A*x-b)'D(A*x-b)
virtual std::map< Key, Matrix > hessianBlockDiagonal() const =0
Return the block diagonal of the Hessian for this factor.
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
virtual std::pair< Matrix, Vector > jacobian() const =0
Return the dense Jacobian and right-hand-side , with the noise models baked into A and b.
virtual Vector gradient(Key key, const VectorValues &x) const =0
Gradient wrt a key at any values.
virtual double error(const VectorValues &c) const =0
Print for testable.
virtual GaussianFactor::shared_ptr clone() const =0
Clone a factor (make a deep copy)
virtual Matrix information() const =0
Return the non-augmented information matrix represented by this GaussianFactor.
Factor Base
Our base class.
Definition: GaussianFactor.h:43
virtual ~GaussianFactor()
Destructor.
Definition: GaussianFactor.h:54
virtual VectorValues gradientAtZero() const =0
A'*b for Jacobian, eta for Hessian.
GaussianFactor(const CONTAINER &keys)
Construct from container of keys.
Definition: GaussianFactor.h:51
virtual void multiplyHessianAdd(double alpha, const VectorValues &x, VectorValues &y) const =0
y += alpha * A'*A*x
virtual bool equals(const GaussianFactor &lf, double tol=1e-9) const =0
Equals for testable.
virtual Matrix augmentedInformation() const =0
Return the augmented information matrix represented by this GaussianFactor.
virtual Matrix augmentedJacobian() const =0
Return a dense Jacobian matrix, augmented with b with the noise models baked into A and b.
GaussianFactor()
Default constructor creates empty factor.
Definition: GaussianFactor.h:46
virtual GaussianFactor::shared_ptr negate() const =0
Construct the corresponding anti-factor to negate information stored stored in this factor.
virtual void hessianDiagonal(double *d) const =0
Raw memory access version of hessianDiagonal.
GaussianFactor This
This class.
Definition: GaussianFactor.h:41
virtual void updateHessian(const KeyVector &keys, SymmetricBlockMatrix *info) const =0
Update an information matrix by adding the information corresponding to this factor (used internally ...
void print(const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override=0
print
virtual void hessianDiagonalAdd(VectorValues &d) const =0
Add the current diagonal to a VectorValues instance.
virtual bool empty() const =0
Test whether the factor is empty.
virtual void gradientAtZero(double *d) const =0
Raw memory access version of gradientAtZero.
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:74