gtsam 4.1.1 gtsam
gtsam::RegularHessianFactor< D > Class Template Reference Inheritance diagram for gtsam::RegularHessianFactor< D >:

## Public Member Functions

RegularHessianFactor (const KeyVector &js, const std::vector< Matrix > &Gs, const std::vector< Vector > &gs, double f)
Construct an n-way factor. More...

RegularHessianFactor (Key j1, Key j2, const MatrixD &G11, const MatrixD &G12, const VectorD &g1, const MatrixD &G22, const VectorD &g2, double f)
Construct a binary factor. More...

RegularHessianFactor (Key j1, Key j2, Key j3, const MatrixD &G11, const MatrixD &G12, const MatrixD &G13, const VectorD &g1, const MatrixD &G22, const MatrixD &G23, const VectorD &g2, const MatrixD &G33, const VectorD &g3, double f)
Construct a ternary factor. More...

template<typename KEYS >
RegularHessianFactor (const KEYS &keys, const SymmetricBlockMatrix &augmentedInformation)
Constructor with an arbitrary number of keys and with the augmented information matrix specified as a block matrix.

RegularHessianFactor (const RegularJacobianFactor< D > &jf)
Construct from RegularJacobianFactor.

RegularHessianFactor (const GaussianFactorGraph &factors, const Scatter &scatter)
Construct from a GaussianFactorGraph.

RegularHessianFactor (const GaussianFactorGraph &factors)
Construct from a GaussianFactorGraph.

void multiplyHessianAdd (double alpha, const VectorValues &x, VectorValues &y) const override
y += alpha * A'*A*x More...

void multiplyHessianAdd (double alpha, const double *x, double *yvalues) const
y += alpha * A'*A*x

void multiplyHessianAdd (double alpha, const double *x, double *yvalues, std::vector< size_t > offsets) const
Raw memory version, with offsets TODO document reasoning.

void hessianDiagonal (double *d) const override
Return the diagonal of the Hessian for this factor (raw memory version) More...

void gradientAtZero (double *d) const override Public Member Functions inherited from gtsam::HessianFactor
HessianFactor ()
default constructor for I/O

HessianFactor (Key j, const Matrix &G, const Vector &g, double f)
Construct a unary factor. More...

HessianFactor (Key j, const Vector &mu, const Matrix &Sigma)
Construct a unary factor, given a mean and covariance matrix. More...

HessianFactor (Key j1, Key j2, const Matrix &G11, const Matrix &G12, const Vector &g1, const Matrix &G22, const Vector &g2, double f)
Construct a binary factor. More...

HessianFactor (Key j1, Key j2, Key j3, const Matrix &G11, const Matrix &G12, const Matrix &G13, const Vector &g1, const Matrix &G22, const Matrix &G23, const Vector &g2, const Matrix &G33, const Vector &g3, double f)
Construct a ternary factor. More...

HessianFactor (const KeyVector &js, const std::vector< Matrix > &Gs, const std::vector< Vector > &gs, double f)
Construct an n-way factor. More...

template<typename KEYS >
HessianFactor (const KEYS &keys, const SymmetricBlockMatrix &augmentedInformation)
Constructor with an arbitrary number of keys and with the augmented information matrix specified as a block matrix.

HessianFactor (const JacobianFactor &cg)
Construct from a JacobianFactor (or from a GaussianConditional since it derives from it)

HessianFactor (const GaussianFactor &factor)
Attempt to construct from any GaussianFactor - currently supports JacobianFactor, HessianFactor, GaussianConditional, or any derived classes.

HessianFactor (const GaussianFactorGraph &factors, const Scatter &scatter)
Combine a set of factors into a single dense HessianFactor.

HessianFactor (const GaussianFactorGraph &factors)
Combine a set of factors into a single dense HessianFactor.

~HessianFactor () override
Destructor.

GaussianFactor::shared_ptr clone () const override
Clone this HessianFactor. More...

void print (const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
Print the factor for debugging and testing (implementing Testable) More...

bool equals (const GaussianFactor &lf, double tol=1e-9) const override
Compare to another factor for testing (implementing Testable) More...

double error (const VectorValues &c) const override
Evaluate the factor error f(x). More...

DenseIndex getDim (const_iterator variable) const override
Return the dimension of the variable pointed to by the given key iterator todo: Remove this in favor of keeping track of dimensions with variables? More...

size_t rows () const
Return the number of columns and rows of the Hessian matrix, including the information vector.

GaussianFactor::shared_ptr negate () const override
Construct the corresponding anti-factor to negate information stored stored in this factor. More...

bool empty () const override
Check if the factor is empty. More...

double constantTerm () const
Return the constant term $$f$$ as described above. More...

double & constantTerm ()
Return the constant term $$f$$ as described above. More...

SymmetricBlockMatrix::constBlock linearTerm (const_iterator j) const
Return the part of linear term $$g$$ as described above corresponding to the requested variable. More...

SymmetricBlockMatrix::constBlock linearTerm () const
Return the complete linear term $$g$$ as described above. More...

SymmetricBlockMatrix::Block linearTerm ()
Return the complete linear term $$g$$ as described above. More...

const SymmetricBlockMatrixinfo () const
Return underlying information matrix.

SymmetricBlockMatrixinfo ()
Return non-const information matrix. More...

Matrix augmentedInformation () const override
Return the augmented information matrix represented by this GaussianFactor. More...

Eigen::SelfAdjointView< SymmetricBlockMatrix::constBlock, Eigen::Upper > informationView () const
Return self-adjoint view onto the information matrix (NOT augmented).

Matrix information () const override
Return the non-augmented information matrix represented by this GaussianFactor. More...

void hessianDiagonalAdd (VectorValues &d) const override
Add the current diagonal to a VectorValues instance. More...

void hessianDiagonal (double *d) const override
Raw memory access version of hessianDiagonal. More...

std::map< Key, Matrix > hessianBlockDiagonal () const override
Return the block diagonal of the Hessian for this factor. More...

std::pair< Matrix, Vector > jacobian () const override
Return (dense) matrix associated with factor. More...

Matrix augmentedJacobian () const override
Return (dense) matrix associated with factor The returned system is an augmented matrix: [A b]. More...

void updateHessian (const KeyVector &keys, SymmetricBlockMatrix *info) const override
Update an information matrix by adding the information corresponding to this factor (used internally during elimination). More...

void updateHessian (HessianFactor *other) const
Update another Hessian factor. More...

void multiplyHessianAdd (double alpha, const VectorValues &x, VectorValues &y) const override
y += alpha * A'*A*x More...

eta for Hessian More...

void gradientAtZero (double *d) const override
Raw memory access version of gradientAtZero. More...

Vector gradient (Key key, const VectorValues &x) const override
Compute the gradient at a key: \grad f(x_i) = \sum_j G_ij*x_j - g_i. More...

boost::shared_ptr< GaussianConditionaleliminateCholesky (const Ordering &keys)
In-place elimination that returns a conditional on (ordered) keys specified, and leaves this factor to be on the remaining keys (separator) only. More...

VectorValues solve ()
Solve the system A'*A delta = A'*b in-place, return delta as VectorValues. Public Member Functions inherited from gtsam::GaussianFactor
GaussianFactor ()
Default constructor creates empty factor.

template<typename CONTAINER >
GaussianFactor (const CONTAINER &keys)
Construct from container of keys. More...

virtual ~GaussianFactor ()
Destructor.

void print (const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override=0
print More...

virtual bool equals (const GaussianFactor &lf, double tol=1e-9) const =0
Equals for testable. More...

virtual double error (const VectorValues &c) const =0
Print for testable. More...

virtual DenseIndex getDim (const_iterator variable) const =0
0.5*(A*x-b)'D(A*x-b) More...

virtual Matrix augmentedJacobian () const =0
Return a dense $$[ \;A\;b\; ] \in \mathbb{R}^{m \times n+1}$$ Jacobian matrix, augmented with b with the noise models baked into A and b. More...

virtual std::pair< Matrix, Vector > jacobian () const =0
Return the dense Jacobian $$A$$ and right-hand-side $$b$$, with the noise models baked into A and b. More...

virtual Matrix augmentedInformation () const =0
Return the augmented information matrix represented by this GaussianFactor. More...

virtual Matrix information () const =0
Return the non-augmented information matrix represented by this GaussianFactor. More...

VectorValues hessianDiagonal () const
Return the diagonal of the Hessian for this factor.

virtual void hessianDiagonalAdd (VectorValues &d) const =0
Add the current diagonal to a VectorValues instance. More...

virtual void hessianDiagonal (double *d) const =0
Raw memory access version of hessianDiagonal. More...

virtual std::map< Key, Matrix > hessianBlockDiagonal () const =0
Return the block diagonal of the Hessian for this factor. More...

virtual GaussianFactor::shared_ptr clone () const =0
Clone a factor (make a deep copy) More...

virtual bool empty () const =0
Test whether the factor is empty. More...

virtual GaussianFactor::shared_ptr negate () const =0
Construct the corresponding anti-factor to negate information stored stored in this factor. More...

virtual void updateHessian (const KeyVector &keys, SymmetricBlockMatrix *info) const =0
Update an information matrix by adding the information corresponding to this factor (used internally during elimination). More...

virtual void multiplyHessianAdd (double alpha, const VectorValues &x, VectorValues &y) const =0
y += alpha * A'*A*x More...

virtual VectorValues gradientAtZero () const =0
A'*b for Jacobian, eta for Hessian. More...

virtual void gradientAtZero (double *d) const =0
Raw memory access version of gradientAtZero. More...

virtual Vector gradient (Key key, const VectorValues &x) const =0
Gradient wrt a key at any values. More... Public Member Functions inherited from gtsam::Factor
virtual ~Factor ()=default
Default destructor.

KeyVectorkeys ()

iterator begin ()
Iterator at beginning of involved variable keys.

iterator end ()
Iterator at end of involved variable keys.

virtual void printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const
print only keys More...

Key front () const
First key.

Key back () const
Last key.

const_iterator find (Key key) const
find

const KeyVectorkeys () const
Access the factor's involved variable keys.

const_iterator begin () const
Iterator at beginning of involved variable keys.

const_iterator end () const
Iterator at end of involved variable keys.

size_t size () const

## Public Types

typedef Eigen::Matrix< double, D, 1 > VectorD

typedef Eigen::Matrix< double, D, D > MatrixD Public Types inherited from gtsam::HessianFactor
typedef GaussianFactor Base
Typedef to base class.

typedef HessianFactor This
Typedef to this class.

typedef boost::shared_ptr< Thisshared_ptr
A shared_ptr to this class.

typedef SymmetricBlockMatrix::Block Block
A block from the Hessian matrix.

typedef SymmetricBlockMatrix::constBlock constBlock
A block from the Hessian matrix (const version) Public Types inherited from gtsam::GaussianFactor
typedef GaussianFactor This
This class.

typedef boost::shared_ptr< Thisshared_ptr
shared_ptr to this class

typedef Factor Base
Our base class. Public Types inherited from gtsam::Factor
typedef KeyVector::iterator iterator
Iterator over keys.

typedef KeyVector::const_iterator const_iterator
Const iterator over keys. Static Public Member Functions inherited from gtsam::GaussianFactor
template<typename CONTAINER >
static DenseIndex Slot (const CONTAINER &keys, Key key) Protected Member Functions inherited from gtsam::Factor
Factor ()
Default constructor for I/O.

template<typename CONTAINER >
Factor (const CONTAINER &keys)
Construct factor from container of keys. More...

template<typename ITERATOR >
Factor (ITERATOR first, ITERATOR last)
Construct factor from iterator keys. More...

bool equals (const This &other, double tol=1e-9) const
check equality Static Protected Member Functions inherited from gtsam::Factor
template<typename CONTAINER >
static Factor FromKeys (const CONTAINER &keys)
Construct factor from container of keys. More...

template<typename ITERATOR >
static Factor FromIterators (ITERATOR first, ITERATOR last)
Construct factor from iterator keys. More... Protected Attributes inherited from gtsam::HessianFactor
SymmetricBlockMatrix info_
The full augmented information matrix, s.t. the quadratic error is 0.5*[x -1]'H[x -1]. Protected Attributes inherited from gtsam::Factor
KeyVector keys_
The keys involved in this factor.

## ◆ RegularHessianFactor() [1/3]

template<size_t D>
 gtsam::RegularHessianFactor< D >::RegularHessianFactor ( const KeyVector & js, const std::vector< Matrix > & Gs, const std::vector< Vector > & gs, double f )
inline

Construct an n-way factor.

Gs contains the upper-triangle blocks of the quadratic term (the Hessian matrix) provided in row-order, gs the pieces of the linear vector term, and f the constant term.

## ◆ RegularHessianFactor() [2/3]

template<size_t D>
 gtsam::RegularHessianFactor< D >::RegularHessianFactor ( Key j1, Key j2, const MatrixD & G11, const MatrixD & G12, const VectorD & g1, const MatrixD & G22, const VectorD & g2, double f )
inline

Construct a binary factor.

Gxx are the upper-triangle blocks of the quadratic term (the Hessian matrix), gx the pieces of the linear vector term, and f the constant term.

## ◆ RegularHessianFactor() [3/3]

template<size_t D>
 gtsam::RegularHessianFactor< D >::RegularHessianFactor ( Key j1, Key j2, Key j3, const MatrixD & G11, const MatrixD & G12, const MatrixD & G13, const VectorD & g1, const MatrixD & G22, const MatrixD & G23, const VectorD & g2, const MatrixD & G33, const VectorD & g3, double f )
inline

Construct a ternary factor.

Gxx are the upper-triangle blocks of the quadratic term (the Hessian matrix), gx the pieces of the linear vector term, and f the constant term.

## Member Function Documentation

template<size_t D>
 void gtsam::RegularHessianFactor< D >::gradientAtZero ( double * d ) const
inlineoverridevirtual

Reimplemented from gtsam::HessianFactor.

## ◆ hessianDiagonal()

template<size_t D>
 void gtsam::RegularHessianFactor< D >::hessianDiagonal ( double * d ) const
inlineoverridevirtual

Return the diagonal of the Hessian for this factor (raw memory version)

Reimplemented from gtsam::HessianFactor.