22 #include <boost/foreach.hpp>
32 typedef Eigen::Matrix<double, D, D> MatrixDD;
33 typedef Eigen::Matrix<double, D, 1> VectorD;
42 const std::vector<Matrix>& Gs,
const std::vector<Vector>& gs,
double f) :
48 template<
typename KEYS>
61 typedef Eigen::Matrix<double, D, 1> DVector;
62 mutable std::vector<DVector> y;
65 double* yvalues)
const {
68 BOOST_FOREACH(DVector & yi, y)
71 typedef Eigen::Map<DVector> DMap;
72 typedef Eigen::Map<const DVector> ConstDMap;
80 const double* xj = x + key * D;
83 y[i] +=
info_(i, j).knownOffDiagonal() * ConstDMap(xj);
85 y[i] +=
info_(j, j).selfadjointView() * ConstDMap(xj);
88 y[i] +=
info_(i, j).knownOffDiagonal() * ConstDMap(xj);
94 DMap(yvalues + key * D) += alpha * y[i];
A Gaussian factor using the canonical parameters (information form)
Definition: HessianFactor.h:131
FastVector< Key > keys_
The keys involved in this factor.
Definition: Factor.h:69
Contains the HessianFactor class, a general quadratic factor.
const FastVector< Key > & keys() const
Access the factor's involved variable keys.
Definition: Factor.h:115
void multiplyHessianAdd(double alpha, const double *x, double *yvalues) const
y += alpha * A'*A*x
Definition: RegularHessianFactor.h:64
Definition: RegularHessianFactor.h:28
RegularHessianFactor(const std::vector< Key > &js, const std::vector< Matrix > &Gs, const std::vector< Vector > &gs, double f)
Construct an n-way factor.
Definition: RegularHessianFactor.h:41
SymmetricBlockMatrix info_
The full augmented information matrix, s.t. the quadratic error is 0.5*[x -1]'H[x -1]...
Definition: HessianFactor.h:134
void multiplyHessianAdd(double alpha, const VectorValues &x, VectorValues &y) const
y += alpha * A'*A*x
Definition: RegularHessianFactor.h:55
void multiplyHessianAdd(double alpha, const VectorValues &x, VectorValues &y) const
y += alpha * A'*A*x
Definition: HessianFactor.cpp:514
size_t Key
Integer nonlinear key type.
Definition: types.h:59
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:74
size_t size() const
Definition: Factor.h:126
This class represents a collection of vector-valued variables associated each with a unique integer i...
Definition: VectorValues.h:89
Definition: SymmetricBlockMatrix.h:40
RegularHessianFactor(const KEYS &keys, const SymmetricBlockMatrix &augmentedInformation)
Constructor with an arbitrary number of keys and with the augmented information matrix specified as a...
Definition: RegularHessianFactor.h:49
virtual Matrix augmentedInformation() const
Return the augmented information matrix represented by this GaussianFactor.
Definition: HessianFactor.cpp:338