Processing math: 100%
gtsam 4.1.1
gtsam
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
 Add gradient at zero to d TODO: is it really the goal to add ?? More...
 
- 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...
 
VectorValues gradientAtZero () const override
 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.
 

Additional Inherited Members

- 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.
 

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: