template<class CAMERA>
class gtsam::SmartFactorBase< CAMERA >
Base class for smart factors.
This base class has no internal point, but it has a measurement, noise model and an optional sensor pose. This class mainly computes the derivatives and returns them as a variety of factors. The methods take a CameraSet<CAMERA> argument and the value of a point, which is kept in the derived class.
- Template Parameters
-
|
|
| SmartFactorBase () |
| | Default Constructor, for serialization.
|
| |
|
| SmartFactorBase (const SharedNoiseModel &sharedNoiseModel, boost::optional< Pose3 > body_P_sensor=boost::none, size_t expectedNumberCameras=10) |
| | Construct with given noise model and optional arguments.
|
| |
|
| ~SmartFactorBase () override |
| | Virtual destructor, subclasses from NonlinearFactor.
|
| |
| void | add (const Z &measured, const Key &key) |
| | Add a new measurement and pose/camera key. More...
|
| |
|
void | add (const ZVector &measurements, const KeyVector &cameraKeys) |
| | Add a bunch of measurements, together with the camera keys.
|
| |
| template<class SFM_TRACK > |
| void | add (const SFM_TRACK &trackToAdd) |
| | Add an entire SfM_track (collection of cameras observing a single point). More...
|
| |
| size_t | dim () const override |
| | Return the dimension (number of rows!) of the factor. More...
|
| |
|
const ZVector & | measured () const |
| | Return the 2D measurements (ZDim, in general).
|
| |
| virtual Cameras | cameras (const Values &values) const |
| | Collect all cameras: important that in key order. More...
|
| |
| void | print (const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const override |
| | print More...
|
| |
| bool | equals (const NonlinearFactor &p, double tol=1e-9) const override |
| | equals More...
|
| |
| template<class POINT > |
| Vector | unwhitenedError (const Cameras &cameras, const POINT &point, boost::optional< typename Cameras::FBlocks & > Fs=boost::none, boost::optional< Matrix & > E=boost::none) const |
| | Compute reprojection errors [h(x)-z] = [cameras.project(p)-z] and derivatives. More...
|
| |
| virtual void | correctForMissingMeasurements (const Cameras &cameras, Vector &ue, boost::optional< typename Cameras::FBlocks & > Fs=boost::none, boost::optional< Matrix & > E=boost::none) const |
| | This corrects the Jacobians for the case in which some 2D measurement is missing (nan). More...
|
| |
|
template<class POINT > |
| Vector | whitenedError (const Cameras &cameras, const POINT &point) const |
| | Calculate vector of re-projection errors [h(x)-z] = [cameras.project(p) - z], with the noise model applied.
|
| |
| template<class POINT > |
| double | totalReprojectionError (const Cameras &cameras, const POINT &point) const |
| | Calculate the error of the factor. More...
|
| |
| template<class POINT > |
| void | computeJacobians (FBlocks &Fs, Matrix &E, Vector &b, const Cameras &cameras, const POINT &point) const |
| | Compute F, E, and b (called below in both vanilla and SVD versions), where F is a vector of derivatives wrpt the cameras, and E the stacked derivatives with respect to the point. More...
|
| |
| template<class POINT > |
| void | computeJacobiansSVD (FBlocks &Fs, Matrix &Enull, Vector &b, const Cameras &cameras, const POINT &point) const |
| | SVD version that produces smaller Jacobian matrices by doing an SVD decomposition on E, and returning the left nulkl-space of E. More...
|
| |
|
boost::shared_ptr< RegularHessianFactor< Dim > > | createHessianFactor (const Cameras &cameras, const Point3 &point, const double lambda=0.0, bool diagonalDamping=false) const |
| | Linearize to a Hessianfactor.
|
| |
| void | updateAugmentedHessian (const Cameras &cameras, const Point3 &point, const double lambda, bool diagonalDamping, SymmetricBlockMatrix &augmentedHessian, const KeyVector allKeys) const |
| | Add the contribution of the smart factor to a pre-allocated Hessian, using sparse linear algebra. More...
|
| |
|
void | whitenJacobians (FBlocks &F, Matrix &E, Vector &b) const |
| | Whiten the Jacobians computed by computeJacobians using noiseModel_.
|
| |
|
boost::shared_ptr< RegularImplicitSchurFactor< CAMERA > > | createRegularImplicitSchurFactor (const Cameras &cameras, const Point3 &point, double lambda=0.0, bool diagonalDamping=false) const |
| | Return Jacobians as RegularImplicitSchurFactor with raw access.
|
| |
|
boost::shared_ptr< JacobianFactorQ< Dim, ZDim > > | createJacobianQFactor (const Cameras &cameras, const Point3 &point, double lambda=0.0, bool diagonalDamping=false) const |
| | Return Jacobians as JacobianFactorQ.
|
| |
| boost::shared_ptr< JacobianFactor > | createJacobianSVDFactor (const Cameras &cameras, const Point3 &point, double lambda=0.0) const |
| | Return Jacobians as JacobianFactorSVD. More...
|
| |
|
Pose3 | body_P_sensor () const |
| |
|
| 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 double | error (const Values &c) const =0 |
| | Calculate the error of the factor This is typically equal to log-likelihood, e.g. More...
|
| |
| virtual bool | active (const Values &) const |
| | Checks whether a factor should be used based on a set of values. More...
|
| |
| virtual boost::shared_ptr< GaussianFactor > | linearize (const Values &c) const =0 |
| | linearize to a GaussianFactor More...
|
| |
| virtual shared_ptr | clone () const |
| | Creates a shared_ptr clone of the factor - needs to be specialized to allow for subclasses. More...
|
| |
| virtual 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. More...
|
| |
| virtual shared_ptr | rekey (const KeyVector &new_keys) const |
| | Clones a factor and fully replaces its keys. More...
|
| |
| virtual bool | sendable () const |
| | Should the factor be evaluated in the same thread as the caller This is to enable factors that has shared states (like the Python GIL lock) More...
|
| |
|
virtual | ~Factor ()=default |
| | Default destructor.
|
| |
| KeyVector & | keys () |
| |
|
iterator | begin () |
| | Iterator at beginning of involved variable keys.
|
| |
|
iterator | end () |
| | Iterator at end of involved variable keys.
|
| |
| virtual void | printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const |
| | print only keys More...
|
| |
|
Key | front () const |
| | First key.
|
| |
|
Key | back () const |
| | Last key.
|
| |
|
const_iterator | find (Key key) const |
| | find
|
| |
|
const KeyVector & | keys () 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 |
| |