30 boost::optional<Values> linearizationPoint_;
41 typedef boost::shared_ptr<This> shared_ptr;
62 void print(
const std::string& s =
"",
const KeyFormatter& keyFormatter = gtsam::DefaultKeyFormatter)
const override;
65 bool equals(
const NonlinearFactor& f,
double tol = 1e-9)
const override;
77 double error(
const Values& c)
const override;
80 size_t dim()
const override;
111 NonlinearFactor::shared_ptr negateToNonlinear()
const;
119 NonlinearFactor::shared_ptr
clone()
const override {
128 NonlinearFactor::shared_ptr rekey(
129 const std::map<Key, Key>& rekey_mapping)
const override;
135 NonlinearFactor::shared_ptr rekey(
const KeyVector& new_keys)
const override;
143 bool isJacobian()
const;
144 bool isHessian()
const;
147 boost::shared_ptr<JacobianFactor> toJacobian()
const;
150 boost::shared_ptr<HessianFactor> toHessian()
const;
160 void initializeLinearizationPoint(
const Values& linearizationPoint);
164 friend class boost::serialization::access;
165 template<
class ARCHIVE>
166 void serialize(ARCHIVE & ar,
const unsigned int ) {
167 ar & boost::serialization::make_nvp(
"NonlinearFactor",
168 boost::serialization::base_object<Base>(*
this));
169 ar & BOOST_SERIALIZATION_NVP(factor_);
170 ar & BOOST_SERIALIZATION_NVP(linearizationPoint_);
Factor Graph consisting of non-linear factors.
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:156
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
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:151
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition: GaussianFactorGraph.h:75
A Gaussian factor using the canonical parameters (information form)
Definition: HessianFactor.h:101
A Gaussian factor in the squared-error form.
Definition: JacobianFactor.h:91
Dummy version of a generic linear factor to be injected into a nonlinear factor graph.
Definition: LinearContainerFactor.h:26
NonlinearFactor::shared_ptr clone() const override
Creates a shared_ptr clone of the factor - needs to be specialized to allow for subclasses.
Definition: LinearContainerFactor.h:119
LinearContainerFactor()
Default constructor - necessary for serialization.
Definition: LinearContainerFactor.h:44
const boost::optional< Values > & linearizationPoint() const
Extract the linearization point used in recalculating error.
Definition: LinearContainerFactor.h:83
bool hasLinearizationPoint() const
Casting syntactic sugar.
Definition: LinearContainerFactor.h:138
Nonlinear factor base class.
Definition: NonlinearFactor.h:42
Definition: NonlinearFactorGraph.h:55
A non-templated config holding any types of Manifold-group elements.
Definition: Values.h:65
In Gaussian factors, the error function returns either the negative log-likelihood,...
In nonlinear factors, the error function returns the negative log-likelihood as a non-linear function...