gtsam 4.2
gtsam
Loading...
Searching...
No Matches
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.
 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.
 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.
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
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).
void gradientAtZero (double *d) const override
 Add gradient at zero to d TODO: is it really the goal to add ??
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.
 HessianFactor (Key j, const Vector &mu, const Matrix &Sigma)
 Construct a unary factor, given a mean and covariance matrix.
 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.
 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.
 HessianFactor (const KeyVector &js, const std::vector< Matrix > &Gs, const std::vector< Vector > &gs, double f)
 Construct an n-way factor.
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.
void print (const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
 Print the factor for debugging and testing (implementing Testable).
bool equals (const GaussianFactor &lf, double tol=1e-9) const override
 Compare to another factor for testing (implementing Testable).
double error (const VectorValues &c) const override
 Evaluate the factor error f(x).
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?
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.
double constantTerm () const
 Return the constant term \( f \) as described above.
double & constantTerm ()
 Return the constant term \( f \) as described above.
SymmetricBlockMatrix::constBlock linearTerm (const_iterator j) const
 Return the part of linear term \( g \) as described above corresponding to the requested variable.
SymmetricBlockMatrix::constBlock linearTerm () const
 Return the complete linear term \( g \) as described above.
SymmetricBlockMatrix::Block linearTerm ()
 Return the complete linear term \( g \) as described above.
const SymmetricBlockMatrixinfo () const
 Return underlying information matrix.
SymmetricBlockMatrixinfo ()
 Return non-const information matrix.
Matrix augmentedInformation () const override
 Return the augmented information matrix represented by this GaussianFactor.
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.
void hessianDiagonalAdd (VectorValues &d) const override
 Add the current diagonal to a VectorValues instance.
std::map< Key, Matrix > hessianBlockDiagonal () const override
 Return the block diagonal of the Hessian for this factor.
std::pair< Matrix, Vector > jacobian () const override
 Return (dense) matrix associated with factor.
Matrix augmentedJacobian () const override
 Return (dense) matrix associated with factor The returned system is an augmented matrix: [A b].
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).
void updateHessian (HessianFactor *other) const
 Update another Hessian factor.
VectorValues gradientAtZero () const override
 eta for Hessian
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 \).
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.
VectorValues solve ()
 Solve the system A'*A delta = A'*b in-place, return delta as VectorValues.
double error (const HybridValues &c) const override
 All factor types need to implement an error function.
VectorValues hessianDiagonal () const
 Using the base method.
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.
virtual ~GaussianFactor ()
 Destructor.
VectorValues hessianDiagonal () const
 Return the diagonal of the Hessian for this factor.
Public Member Functions inherited from gtsam::Factor
virtual ~Factor ()=default
 Default destructor.
bool empty () const
 Whether the factor is empty (involves zero variables).
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
virtual void printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const
 print only keys
bool equals (const This &other, double tol=1e-9) const
 check equality
KeyVectorkeys ()
iterator begin ()
 Iterator at beginning of involved variable keys.
iterator end ()
 Iterator at end of involved variable keys.

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.

Additional Inherited Members

Static Public Member Functions inherited from gtsam::GaussianFactor
template<typename CONTAINER>
static DenseIndex Slot (const CONTAINER &keys, Key key)
 Factor ()
 Default constructor for I/O.
template<typename CONTAINER>
 Factor (const CONTAINER &keys)
 Construct factor from container of keys.
template<typename ITERATOR>
 Factor (ITERATOR first, ITERATOR last)
 Construct factor from iterator keys.
template<typename CONTAINER>
static Factor FromKeys (const CONTAINER &keys)
 Construct factor from container of keys.
template<typename ITERATOR>
static Factor FromIterators (ITERATOR first, ITERATOR last)
 Construct factor from iterator keys.
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.

Constructor & Destructor Documentation

◆ 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

◆ gradientAtZero()

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

Add gradient at zero to d TODO: is it really the goal to add ??

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.

◆ multiplyHessianAdd()

template<size_t D>
void gtsam::RegularHessianFactor< D >::multiplyHessianAdd ( double alpha,
const VectorValues & x,
VectorValues & y ) const
inlineoverridevirtual

y += alpha * A'*A*x

Reimplemented from gtsam::HessianFactor.


The documentation for this class was generated from the following file: