29#include <gtsam/base/utilities.h>
31#if GTSAM_ENABLE_BOOST_SERIALIZATION
32#include <boost/serialization/base_object.hpp>
38class NonlinearEqualityConstraints;
51#define OptionalNone static_cast<gtsam::Matrix*>(nullptr)
80 typedef std::shared_ptr<This> shared_ptr;
91 template<
typename CONTAINER>
122 virtual double error(
const Values& c)
const;
131 virtual size_t dim()
const = 0;
146 virtual std::shared_ptr<GaussianFactor>
155 NonlinearEqualityConstraints* constraints,
156 size_t columnDimension = 1)
const;
166 throw std::runtime_error(
"NonlinearFactor::clone(): Attempting to clone factor with no clone() implemented!");
175 virtual shared_ptr rekey(
const std::map<Key,Key>& rekey_mapping)
const;
181 virtual shared_ptr rekey(
const KeyVector& new_keys)
const;
231 template<
typename CONTAINER>
244 void print(
const std::string& s =
"",
251 size_t dim()
const override {
253 throw std::runtime_error(
"NoiseModelFactor::dim(): no noise model set");
254 return noiseModel_->dim();
284 Vector whitenedError(
const Values& c)
const;
289 Vector unweightedWhitenedError(
const Values& c)
const;
294 double weight(
const Values& c)
const;
296 using NonlinearFactor::error;
304 double error(
const Values& c)
const override;
311 std::shared_ptr<GaussianFactor> linearize(
const Values& x)
const override;
320#if GTSAM_ENABLE_BOOST_SERIALIZATION
322 friend class boost::serialization::access;
323 template<
class ARCHIVE>
324 void serialize(ARCHIVE & ar,
const unsigned int ) {
325 ar & boost::serialization::make_nvp(
"NonlinearFactor",
326 boost::serialization::base_object<Base>(*
this));
327 ar & BOOST_SERIALIZATION_NVP(noiseModel_);
The base class for all factors.
A non-templated config holding any types of Manifold-group elements.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition Key.cpp:30
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
Matrix * OptionalMatrixType
This typedef will be used everywhere boost::optional<Matrix&> reference was used previously.
Definition NonlinearFactor.h:57
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
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::vector< Matrix > * OptionalMatrixVecType
The OptionalMatrixVecType is a pointer to a vector of matrices.
Definition NonlinearFactor.h:63
noiseModel::Base::shared_ptr SharedNoiseModel
Aliases.
Definition NoiseModel.h:846
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition Group.h:37
Template to create a binary predicate.
Definition Testable.h:112
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:152
const KeyVector & keys() const
Access the factor's involved variable keys.
Definition Factor.h:143
Factor()
Default constructor for I/O.
Definition Factor.h:94
Nonlinear factor base class.
Definition NonlinearFactor.h:70
virtual size_t dim() const =0
get the dimension of the factor (number of rows on linearization)
virtual std::shared_ptr< GaussianFactor > linearize(const Values &c) const =0
linearize to a GaussianFactor
NonlinearFactor()
Default constructor for I/O only.
Definition NonlinearFactor.h:86
virtual void qcqpFactors(NonlinearFactorGraph *costs, NonlinearEqualityConstraints *constraints, size_t columnDimension=1) const
Add this factor's QCQP cost and constraints over matrix-valued QCQP variables with the given column d...
Definition NonlinearFactor.cpp:37
NonlinearFactor(const CONTAINER &keys)
Constructor from a collection of the keys involved in this factor.
Definition NonlinearFactor.h:92
virtual bool sendable() const
Should the factor be evaluated in the same thread as the caller This is to enable factors that has sh...
Definition NonlinearFactor.h:187
virtual shared_ptr clone() const
Creates a shared_ptr clone of the factor - needs to be specialized to allow for subclasses.
Definition NonlinearFactor.h:164
virtual bool active(const Values &c) const
Checks whether a factor should be used based on a set of values.
Definition NonlinearFactor.h:143
NoiseModelFactor(const SharedNoiseModel &noiseModel, const CONTAINER &keys)
Constructor.
Definition NonlinearFactor.h:232
Vector unwhitenedError(const Values &x, std::vector< Matrix > &H) const
support taking in the actual vector instead of the pointer as well to get access to this version of t...
Definition NonlinearFactor.h:276
~NoiseModelFactor() override
Destructor.
Definition NonlinearFactor.h:226
NoiseModelFactor(const SharedNoiseModel &noiseModel)
Constructor - only for subclasses, as this does not set keys.
Definition NonlinearFactor.h:240
std::shared_ptr< This > shared_ptr
Noise model.
Definition NonlinearFactor.h:220
virtual Vector unwhitenedError(const Values &x, OptionalMatrixVecType H=nullptr) const =0
Error function without the NoiseModel, .
size_t dim() const override
get the dimension of the factor (number of rows on linearization)
Definition NonlinearFactor.h:251
NoiseModelFactor()
Default constructor for I/O only.
Definition NonlinearFactor.h:223
const SharedNoiseModel & noiseModel() const
access to the noise model
Definition NonlinearFactor.h:258
Definition NonlinearFactorGraph.h:57
A non-templated config holding any types of Manifold-group elements.
Definition Values.h:65
In nonlinear factors, the error function returns the negative log-likelihood as a non-linear function...