21 #include <gtsam_unstable/dllexport.h> 38 typedef std::shared_ptr<LinearizedGaussianFactor>
shared_ptr;
59 const Values& linearizationPoint()
const {
return lin_points_; }
62 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 64 friend class boost::serialization::access;
65 template<
class ARCHIVE>
66 void serialize(ARCHIVE & ar,
const unsigned int ) {
67 ar & boost::serialization::make_nvp(
"LinearizedGaussianFactor",
68 boost::serialization::base_object<Base>(*
this));
69 ar & BOOST_SERIALIZATION_NVP(lin_points_);
87 typedef std::shared_ptr<LinearizedJacobianFactor>
shared_ptr;
89 typedef VerticalBlockMatrix::Block ABlock;
90 typedef VerticalBlockMatrix::constBlock constABlock;
91 typedef VerticalBlockMatrix::Block::ColXpr BVector;
92 typedef VerticalBlockMatrix::constBlock::ConstColXpr constBVector;
117 gtsam::NonlinearFactor::shared_ptr
clone()
const override {
119 gtsam::NonlinearFactor::shared_ptr(
new This(*
this))); }
124 void print(
const std::string& s=
"",
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override;
130 const constBVector b()
const {
return Ab_(size()).col(0); }
131 const constABlock A()
const {
return Ab_.
range(0, size()); };
132 const constABlock A(
Key key)
const {
return Ab_(std::find(begin(), end(), key) - begin()); }
135 size_t dim()
const override {
return Ab_.
rows(); };
138 double error(
const Values& c)
const override;
145 std::shared_ptr<GaussianFactor> linearize(
const Values& c)
const override;
148 Vector error_vector(
const Values& c)
const;
151 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 152 friend class boost::serialization::access;
154 template<
class ARCHIVE>
155 void serialize(ARCHIVE & ar,
const unsigned int ) {
156 ar & boost::serialization::make_nvp(
"LinearizedJacobianFactor",
157 boost::serialization::base_object<Base>(*
this));
158 ar & BOOST_SERIALIZATION_NVP(Ab_);
183 typedef SymmetricBlockMatrix::Block
Block;
186 typedef SymmetricBlockMatrix::Block::ColXpr
Column;
209 gtsam::NonlinearFactor::shared_ptr
clone()
const override {
211 gtsam::NonlinearFactor::shared_ptr(
new This(*
this))); }
216 void print(
const std::string& s=
"",
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const override;
256 return info_.
block(J1, J2);
263 Eigen::SelfAdjointView<constBlock, Eigen::Upper>
squaredTerm()
const {
268 size_t dim()
const override {
return info_.
rows() - 1; }
271 double error(
const Values& c)
const override;
278 std::shared_ptr<GaussianFactor> linearize(
const Values& c)
const override;
282 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 283 friend class boost::serialization::access;
284 template<
class ARCHIVE>
285 void serialize(ARCHIVE & ar,
const unsigned int ) {
286 ar & boost::serialization::make_nvp(
"LinearizedHessianFactor",
287 boost::serialization::base_object<Base>(*
this));
288 ar & BOOST_SERIALIZATION_NVP(info_);
NonlinearFactor Base
Definition: LinearizedFactor.h:34
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
Definition: LinearizedFactor.h:79
Definition: VerticalBlockMatrix.h:42
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
Values lin_points_
Definition: LinearizedFactor.h:43
DenseIndex rows() const
Row size.
Definition: VerticalBlockMatrix.h:115
Definition: Testable.h:152
Definition: NonlinearFactor.h:68
constColumn linearTerm() const
Definition: LinearizedFactor.h:239
size_t dim() const override
Definition: LinearizedFactor.h:268
ptrdiff_t DenseIndex
The index type for Eigen objects.
Definition: types.h:108
constColumn linearTerm(const_iterator j) const
Definition: LinearizedFactor.h:233
Definition: LinearizedFactor.h:172
LinearizedGaussianFactor Base
Definition: LinearizedFactor.h:83
std::shared_ptr< LinearizedJacobianFactor > shared_ptr
Definition: LinearizedFactor.h:87
Definition: SymmetricBlockMatrix.h:53
SymmetricBlockMatrix::Block::ColXpr Column
A column containing the linear term h.
Definition: LinearizedFactor.h:186
Definition: Testable.h:112
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:158
gtsam::NonlinearFactor::shared_ptr clone() const override
Definition: LinearizedFactor.h:209
DenseIndex rows() const
Row size.
Definition: SymmetricBlockMatrix.h:116
std::shared_ptr< LinearizedGaussianFactor > shared_ptr
Definition: LinearizedFactor.h:38
size_t dim() const override
Definition: LinearizedFactor.h:135
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
Contains the HessianFactor class, a general quadratic factor.
Matrix squaredTerm(const_iterator j1, const_iterator j2) const
Definition: LinearizedFactor.h:253
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: JacobianFactor.h:97
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
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
Block range(DenseIndex startBlock, DenseIndex endBlock)
Definition: VerticalBlockMatrix.h:130
Definition: chartTesting.h:28
Definition: LinearizedFactor.h:31
Non-linear factor base classes.
Eigen::SelfAdjointView< constBlock, Eigen::Upper > squaredTerm() const
Definition: LinearizedFactor.h:263
double constantTerm() const
Definition: LinearizedFactor.h:224
SymmetricBlockMatrix::Block Block
A block from the Hessian matrix.
Definition: LinearizedFactor.h:183
SymmetricBlockMatrix::constBlock::ColXpr constColumn
A column containing the linear term h (const version)
Definition: LinearizedFactor.h:187
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
SymmetricBlockMatrix::constBlock constBlock
A block from the Hessian matrix (const version)
Definition: LinearizedFactor.h:184
std::shared_ptr< LinearizedHessianFactor > shared_ptr
Definition: LinearizedFactor.h:180
SymmetricBlockMatrix info_
Definition: LinearizedFactor.h:191
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
Matrix block(DenseIndex I, DenseIndex J) const
LinearizedGaussianFactor Base
Definition: LinearizedFactor.h:176
LinearizedGaussianFactor()
Definition: LinearizedFactor.h:48
gtsam::NonlinearFactor::shared_ptr clone() const override
Definition: LinearizedFactor.h:117