34 class GaussianBayesNet;
35 class GaussianFactorGraph;
110 typedef SymmetricBlockMatrix::Block
Block;
145 const Matrix& G11,
const Matrix& G12,
const Vector& g1,
146 const Matrix& G22,
const Vector& g2,
double f);
153 const Matrix& G11,
const Matrix& G12,
const Matrix& G13,
const Vector& g1,
154 const Matrix& G22,
const Matrix& G23,
const Vector& g2,
155 const Matrix& G33,
const Vector& g3,
double f);
162 const std::vector<Vector>& gs,
double f);
166 template<
typename KEYS>
189 return std::make_shared<HessianFactor>(*this); }
192 void print(
const std::string& s =
"",
193 const KeyFormatter& formatter = DefaultKeyFormatter)
const override;
199 using GaussianFactor::error;
213 return info_.
getDim(std::distance(begin(), variable));
285 Matrix augmentedInformation()
const override;
288 Eigen::SelfAdjointView<SymmetricBlockMatrix::constBlock, Eigen::Upper> informationView()
const;
293 Matrix information()
const override;
296 void hessianDiagonalAdd(
VectorValues& d)
const override;
299 using Base::hessianDiagonal;
302 void hessianDiagonal(
double* d)
const override;
305 std::map<Key,Matrix> hessianBlockDiagonal()
const override;
308 std::pair<Matrix, Vector> jacobian()
const override;
315 Matrix augmentedJacobian()
const override;
339 void gradientAtZero(
double* d)
const override;
351 std::shared_ptr<GaussianConditional> eliminateCholesky(
const Ordering& keys);
358 void Allocate(
const Scatter& scatter);
366 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 368 friend class boost::serialization::access;
369 template<
class ARCHIVE>
370 void serialize(ARCHIVE & ar,
const unsigned int ) {
372 ar & BOOST_SERIALIZATION_NVP(info_);
393 GTSAM_EXPORT std::pair<std::shared_ptr<GaussianConditional>, std::shared_ptr<HessianFactor> >
411 GTSAM_EXPORT std::pair<std::shared_ptr<GaussianConditional>, std::shared_ptr<GaussianFactor> >
Access to matrices via blocks of pre-defined sizes. Used in GaussianFactor and GaussianConditional.
std::shared_ptr< This > shared_ptr
A shared_ptr to this class.
Definition: HessianFactor.h:109
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
SymmetricBlockMatrix & info()
Definition: HessianFactor.h:268
constBlock aboveDiagonalRange(DenseIndex i_startBlock, DenseIndex i_endBlock, DenseIndex j_startBlock, DenseIndex j_endBlock) const
Get a range [i,j) from the matrix. Indices are in block units.
Definition: SymmetricBlockMatrix.h:172
Definition: Testable.h:152
A factor with a quadratic error function - a Gaussian.
GaussianFactor::shared_ptr clone() const override
Definition: HessianFactor.h:188
GaussianFactor Base
Typedef to base class.
Definition: HessianFactor.h:107
KeyVector keys_
The keys involved in this factor.
Definition: Factor.h:87
Definition: Ordering.h:37
SymmetricBlockMatrix::constBlock constBlock
A block from the Hessian matrix (const version)
Definition: HessianFactor.h:111
Definition: VectorValues.h:74
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:108
HessianFactor This
Typedef to this class.
Definition: HessianFactor.h:108
Definition: GaussianFactor.h:38
Definition: SymmetricBlockMatrix.h:53
double & constantTerm()
Definition: HessianFactor.h:237
Definition: Testable.h:112
size_t rows() const
Definition: HessianFactor.h:217
DenseIndex rows() const
Row size.
Definition: SymmetricBlockMatrix.h:116
~HessianFactor() override
Definition: HessianFactor.h:185
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
double constantTerm() const
Definition: HessianFactor.h:229
SymmetricBlockMatrix::constBlock linearTerm() const
Definition: HessianFactor.h:250
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
SymmetricBlockMatrix::Block Block
A block from the Hessian matrix.
Definition: HessianFactor.h:110
SymmetricBlockMatrix info_
The full augmented information matrix, s.t. the quadratic error is 0.5*[x -1]'H[x -1]...
Definition: HessianFactor.h:103
Definition: NonlinearFactorGraph.h:55
Definition: JacobianFactor.h:91
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
Maps global variable indices to slot indices.
A thin wrapper around std::vector that uses a custom allocator.
Definition: chartTesting.h:28
GTSAM_EXPORT std::pair< std::shared_ptr< GaussianConditional >, std::shared_ptr< HessianFactor > > EliminateCholesky(const GaussianFactorGraph &factors, const Ordering &keys)
SymmetricBlockMatrix::constBlock linearTerm(const_iterator j) const
Definition: HessianFactor.h:243
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
Definition: NonlinearClusterTree.h:14
SymmetricBlockMatrix::Block linearTerm()
Definition: HessianFactor.h:258
GTSAM_EXPORT std::pair< std::shared_ptr< GaussianConditional >, std::shared_ptr< GaussianFactor > > EliminatePreferCholesky(const GaussianFactorGraph &factors, const Ordering &keys)
A Gaussian factor using the canonical parameters (information form)
Definition: HessianFactor.h:100
DenseIndex getDim(const_iterator variable) const override
Definition: HessianFactor.h:212
void updateHessian(HessianFactor *other) const
Definition: HessianFactor.h:327
Contains the HessianFactor class, a general quadratic factor.
Eigen::SelfAdjointView< Block, Eigen::Upper > diagonalBlock(DenseIndex J)
Return the J'th diagonal block as a self adjoint view.
Definition: SymmetricBlockMatrix.h:137
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:82
DenseIndex getDim(DenseIndex block) const
Number of dimensions for variable on this diagonal block.
Definition: SymmetricBlockMatrix.h:125
HessianFactor(const GaussianFactorGraph &factors)
Definition: HessianFactor.h:181
const SymmetricBlockMatrix & info() const
Return underlying information matrix.
Definition: HessianFactor.h:264
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
constBlock aboveDiagonalBlock(DenseIndex I, DenseIndex J) const
Get block above the diagonal (I, J).
Definition: SymmetricBlockMatrix.h:152
Definition: GaussianFactorGraph.h:73