21#include <gtsam_unstable/dllexport.h>
38 typedef boost::shared_ptr<LinearizedGaussianFactor>
shared_ptr;
59 const Values& linearizationPoint()
const {
return lin_points_; }
63 friend class boost::serialization::access;
64 template<
class ARCHIVE>
65 void serialize(ARCHIVE & ar,
const unsigned int ) {
66 ar & boost::serialization::make_nvp(
"LinearizedGaussianFactor",
67 boost::serialization::base_object<Base>(*
this));
68 ar & BOOST_SERIALIZATION_NVP(lin_points_);
85 typedef boost::shared_ptr<LinearizedJacobianFactor>
shared_ptr;
87 typedef VerticalBlockMatrix::Block ABlock;
88 typedef VerticalBlockMatrix::constBlock constABlock;
89 typedef VerticalBlockMatrix::Block::ColXpr BVector;
90 typedef VerticalBlockMatrix::constBlock::ConstColXpr constBVector;
115 gtsam::NonlinearFactor::shared_ptr
clone()
const override {
116 return boost::static_pointer_cast<gtsam::NonlinearFactor>(
117 gtsam::NonlinearFactor::shared_ptr(
new This(*
this))); }
122 void print(
const std::string& s=
"",
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override;
128 const constBVector b()
const {
return Ab_(size()).col(0); }
129 const constABlock A()
const {
return Ab_.
range(0, size()); };
130 const constABlock A(
Key key)
const {
return Ab_(std::find(begin(), end(), key) - begin()); }
133 size_t dim()
const override {
return Ab_.
rows(); };
136 double error(
const Values& c)
const override;
143 boost::shared_ptr<GaussianFactor> linearize(
const Values& c)
const override;
146 Vector error_vector(
const Values& c)
const;
150 friend class boost::serialization::access;
151 template<
class ARCHIVE>
152 void serialize(ARCHIVE & ar,
const unsigned int ) {
153 ar & boost::serialization::make_nvp(
"LinearizedJacobianFactor",
154 boost::serialization::base_object<Base>(*
this));
155 ar & BOOST_SERIALIZATION_NVP(Ab_);
176 typedef boost::shared_ptr<LinearizedHessianFactor>
shared_ptr;
179 typedef SymmetricBlockMatrix::Block
Block;
182 typedef SymmetricBlockMatrix::Block::ColXpr
Column;
205 gtsam::NonlinearFactor::shared_ptr
clone()
const override {
206 return boost::static_pointer_cast<gtsam::NonlinearFactor>(
207 gtsam::NonlinearFactor::shared_ptr(
new This(*
this))); }
212 void print(
const std::string& s=
"",
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override;
252 return info_.
block(J1, J2);
259 Eigen::SelfAdjointView<constBlock, Eigen::Upper>
squaredTerm()
const {
264 size_t dim()
const override {
return info_.
rows() - 1; }
267 double error(
const Values& c)
const override;
274 boost::shared_ptr<GaussianFactor> linearize(
const Values& c)
const override;
278 friend class boost::serialization::access;
279 template<
class ARCHIVE>
280 void serialize(ARCHIVE & ar,
const unsigned int ) {
281 ar & boost::serialization::make_nvp(
"LinearizedHessianFactor",
282 boost::serialization::base_object<Base>(*
this));
283 ar & BOOST_SERIALIZATION_NVP(info_);
Contains the HessianFactor class, a general quadratic factor.
Non-linear factor base classes.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:75
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:112
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:155
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:69
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
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
Definition: SymmetricBlockMatrix.h:52
DenseIndex rows() const
Row size.
Definition: SymmetricBlockMatrix.h:119
Matrix block(DenseIndex I, DenseIndex J) const
Get a copy of a block (anywhere in the matrix).
Definition: SymmetricBlockMatrix.cpp:54
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:175
Eigen::SelfAdjointView< Block, Eigen::Upper > diagonalBlock(DenseIndex J)
Return the J'th diagonal block as a self adjoint view.
Definition: SymmetricBlockMatrix.h:140
Eigen::SelfAdjointView< constBlock, Eigen::Upper > selfadjointView(DenseIndex I, DenseIndex J) const
Return the square sub-matrix that contains blocks(i:j, i:j).
Definition: SymmetricBlockMatrix.h:161
Template to create a binary predicate.
Definition: Testable.h:111
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
Definition: VerticalBlockMatrix.h:42
Block range(DenseIndex startBlock, DenseIndex endBlock)
access ranges of blocks at a time
Definition: VerticalBlockMatrix.h:129
DenseIndex rows() const
Row size.
Definition: VerticalBlockMatrix.h:114
This is the base class for all factor types.
Definition: Factor.h:56
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:68
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
boost::shared_ptr< This > shared_ptr
A shared_ptr to this class.
Definition: HessianFactor.h:110
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: JacobianFactor.h:96
Nonlinear factor base class.
Definition: NonlinearFactor.h:43
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:63
A base factor class for the Jacobian and Hessian linearized factors.
Definition: LinearizedFactor.h:31
LinearizedGaussianFactor()
default constructor for serialization
Definition: LinearizedFactor.h:48
NonlinearFactor Base
base type
Definition: LinearizedFactor.h:34
Values lin_points_
linearization points for error calculation
Definition: LinearizedFactor.h:43
boost::shared_ptr< LinearizedGaussianFactor > shared_ptr
shared pointer for convenience
Definition: LinearizedFactor.h:38
A factor that takes a linear, Jacobian factor and inserts it into a nonlinear graph.
Definition: LinearizedFactor.h:77
boost::shared_ptr< LinearizedJacobianFactor > shared_ptr
shared pointer for convenience
Definition: LinearizedFactor.h:85
size_t dim() const override
get the dimension of the factor (number of rows on linearization)
Definition: LinearizedFactor.h:133
gtsam::NonlinearFactor::shared_ptr clone() const override
Definition: LinearizedFactor.h:115
LinearizedGaussianFactor Base
base type
Definition: LinearizedFactor.h:81
A factor that takes a linear, Hessian factor and inserts it into a nonlinear graph.
Definition: LinearizedFactor.h:168
LinearizedGaussianFactor Base
base type
Definition: LinearizedFactor.h:172
constColumn linearTerm(const_iterator j) const
Return the part of linear term as described above corresponding to the requested variable.
Definition: LinearizedFactor.h:229
SymmetricBlockMatrix::Block::ColXpr Column
A column containing the linear term h.
Definition: LinearizedFactor.h:182
SymmetricBlockMatrix info_
The block view of the full information matrix, s.t.
Definition: LinearizedFactor.h:187
gtsam::NonlinearFactor::shared_ptr clone() const override
Definition: LinearizedFactor.h:205
SymmetricBlockMatrix::constBlock constBlock
A block from the Hessian matrix (const version)
Definition: LinearizedFactor.h:180
Matrix squaredTerm(const_iterator j1, const_iterator j2) const
Return a copy of the block at (j1,j2) of the <emph>upper-triangular part</emph> of the squared term ,...
Definition: LinearizedFactor.h:249
constColumn linearTerm() const
Return the complete linear term as described above.
Definition: LinearizedFactor.h:235
SymmetricBlockMatrix::Block Block
hessian block data types
Definition: LinearizedFactor.h:179
Eigen::SelfAdjointView< constBlock, Eigen::Upper > squaredTerm() const
Return the <emph>upper-triangular part</emph> of the full squared term, as described above.
Definition: LinearizedFactor.h:259
size_t dim() const override
get the dimension of the factor (number of rows on linearization)
Definition: LinearizedFactor.h:264
SymmetricBlockMatrix::constBlock::ColXpr constColumn
A column containing the linear term h (const version)
Definition: LinearizedFactor.h:183
double constantTerm() const
Return the constant term as described above.
Definition: LinearizedFactor.h:220
boost::shared_ptr< LinearizedHessianFactor > shared_ptr
shared pointer for convenience
Definition: LinearizedFactor.h:176