gtsam  4.1.0
gtsam
gtsam::LinearContainerFactor Class Reference

Detailed Description

Dummy version of a generic linear factor to be injected into a nonlinear factor graph.

This factor does have the ability to perform relinearization under small-angle and linearity assumptions if a linearization point is added.

+ Inheritance diagram for gtsam::LinearContainerFactor:

Public Member Functions

GTSAM_EXPORT LinearContainerFactor (const JacobianFactor &factor, const Values &linearizationPoint=Values())
 Primary constructor: store a linear factor with optional linearization point.
 
GTSAM_EXPORT LinearContainerFactor (const HessianFactor &factor, const Values &linearizationPoint=Values())
 Primary constructor: store a linear factor with optional linearization point.
 
GTSAM_EXPORT LinearContainerFactor (const GaussianFactor::shared_ptr &factor, const Values &linearizationPoint=Values())
 Constructor from shared_ptr.
 
const GaussianFactor::shared_ptrfactor () const
 
GTSAM_EXPORT void print (const std::string &s="", const KeyFormatter &keyFormatter=gtsam::DefaultKeyFormatter) const override
 print
 
GTSAM_EXPORT bool equals (const NonlinearFactor &f, double tol=1e-9) const override
 Check if two factors are equal.
 
GTSAM_EXPORT double error (const Values &c) const override
 Calculate the nonlinear error for the factor, where the error is computed by passing the delta between linearization point and c, where delta = linearizationPoint_.localCoordinates(c), into the error function of the stored linear factor. More...
 
GTSAM_EXPORT size_t dim () const override
 get the dimension of the factor: rows of linear factor
 
const boost::optional< Values > & linearizationPoint () const
 Extract the linearization point used in recalculating error.
 
GTSAM_EXPORT GaussianFactor::shared_ptr linearize (const Values &c) const override
 Linearize to a GaussianFactor, with method depending on the presence of a linearizationPoint. More...
 
GTSAM_EXPORT GaussianFactor::shared_ptr negateToGaussian () const
 Creates an anti-factor directly.
 
GTSAM_EXPORT NonlinearFactor::shared_ptr negateToNonlinear () const
 Creates the equivalent anti-factor as another LinearContainerFactor.
 
NonlinearFactor::shared_ptr clone () const override
 Creates a shared_ptr clone of the factor - needs to be specialized to allow for subclasses. More...
 
bool hasLinearizationPoint () const
 
GTSAM_EXPORT bool isJacobian () const
 Simple checks whether this is a Jacobian or Hessian factor.
 
GTSAM_EXPORT bool isHessian () const
 
GTSAM_EXPORT boost::shared_ptr< JacobianFactortoJacobian () const
 Casts to JacobianFactor.
 
GTSAM_EXPORT boost::shared_ptr< HessianFactortoHessian () const
 Casts to HessianFactor.
 
- Public Member Functions inherited from gtsam::NonlinearFactor
 NonlinearFactor ()
 Default constructor for I/O only.
 
template<typename CONTAINER >
 NonlinearFactor (const CONTAINER &keys)
 Constructor from a collection of the keys involved in this factor.
 
virtual ~NonlinearFactor ()
 Destructor.
 
virtual bool active (const Values &) const
 Checks whether a factor should be used based on a set of values. More...
 
shared_ptr rekey (const std::map< Key, Key > &rekey_mapping) const
 Creates a shared_ptr clone of the factor with different keys using a map from old->new keys.
 
shared_ptr rekey (const KeyVector &new_keys) const
 Clones a factor and fully replaces its keys. More...
 
- Public Member Functions inherited from gtsam::Factor
Key front () const
 First key.
 
Key back () const
 Last key.
 
const_iterator find (Key key) const
 find
 
const KeyVectorkeys () const
 Access the factor's involved variable keys.
 
const_iterator begin () const
 Iterator at beginning of involved variable keys.
 
const_iterator end () const
 Iterator at end of involved variable keys.
 
size_t size () const
 
void print (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const
 print
 
void printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const
 print only keys
 
KeyVectorkeys ()
 
iterator begin ()
 Iterator at beginning of involved variable keys.
 
iterator end ()
 Iterator at end of involved variable keys.
 

Static Public Member Functions

static GTSAM_EXPORT NonlinearFactorGraph ConvertLinearGraph (const GaussianFactorGraph &linear_graph, const Values &linearizationPoint=Values())
 Utility function for converting linear graphs to nonlinear graphs consisting of LinearContainerFactors.
 

Public Types

typedef boost::shared_ptr< Thisshared_ptr
 
- Public Types inherited from gtsam::NonlinearFactor
typedef boost::shared_ptr< Thisshared_ptr
 
- Public Types inherited from gtsam::Factor
typedef KeyVector::iterator iterator
 Iterator over keys.
 
typedef KeyVector::const_iterator const_iterator
 Const iterator over keys.
 

Protected Types

typedef NonlinearFactor Base
 
typedef LinearContainerFactor This
 
- Protected Types inherited from gtsam::NonlinearFactor
typedef Factor Base
 
typedef NonlinearFactor This
 

Protected Member Functions

 LinearContainerFactor ()
 Default constructor - necessary for serialization.
 
GTSAM_EXPORT LinearContainerFactor (const GaussianFactor::shared_ptr &factor, const boost::optional< Values > &linearizationPoint)
 direct copy constructor
 
GTSAM_EXPORT void initializeLinearizationPoint (const Values &linearizationPoint)
 
- Protected Member Functions inherited from gtsam::Factor
 Factor ()
 Default constructor for I/O.
 
template<typename CONTAINER >
 Factor (const CONTAINER &keys)
 Construct factor from container of keys. More...
 
template<typename ITERATOR >
 Factor (ITERATOR first, ITERATOR last)
 Construct factor from iterator keys. More...
 
bool equals (const This &other, double tol=1e-9) const
 check equality
 

Protected Attributes

GaussianFactor::shared_ptr factor_
 
boost::optional< ValueslinearizationPoint_
 
- Protected Attributes inherited from gtsam::Factor
KeyVector keys_
 The keys involved in this factor.
 

Friends

class boost::serialization::access
 Serialization function.
 

Additional Inherited Members

- Static Protected Member Functions inherited from gtsam::Factor
template<typename CONTAINER >
static Factor FromKeys (const CONTAINER &keys)
 Construct factor from container of keys. More...
 
template<typename ITERATOR >
static Factor FromIterators (ITERATOR first, ITERATOR last)
 Construct factor from iterator keys. More...
 

Member Function Documentation

◆ clone()

NonlinearFactor::shared_ptr gtsam::LinearContainerFactor::clone ( ) const
inlineoverridevirtual

Creates a shared_ptr clone of the factor - needs to be specialized to allow for subclasses.

Clones the underlying linear factor

Reimplemented from gtsam::NonlinearFactor.

◆ error()

double gtsam::LinearContainerFactor::error ( const Values c) const
overridevirtual

Calculate the nonlinear error for the factor, where the error is computed by passing the delta between linearization point and c, where delta = linearizationPoint_.localCoordinates(c), into the error function of the stored linear factor.

Returns
nonlinear error if linearizationPoint present, zero otherwise

Implements gtsam::NonlinearFactor.

◆ linearize()

GaussianFactor::shared_ptr gtsam::LinearContainerFactor::linearize ( const Values c) const
overridevirtual

Linearize to a GaussianFactor, with method depending on the presence of a linearizationPoint.

  • With no linearization point, returns a cloned version of the stored linear factor.
  • With a linearization point provided, returns a relinearized version of the linearized factor.

The relinearization approach used computes a linear delta between the original linearization point and the new values c, where delta = linearizationPoint_.localCoordinates(c), and substitutes this change into the system. This substitution is only really valid for linear variable manifolds, and for any variables based on a non-commutative manifold (such as Pose2, Pose3), the relinearized version will be effective for only small angles.

TODO: better approximation of relinearization TODO: switchable modes for approximation technique

Implements gtsam::NonlinearFactor.


The documentation for this class was generated from the following files: