comments only
parent
6ffe6a08df
commit
6b87b9d307
|
|
@ -16,6 +16,9 @@ namespace gtsam {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dummy version of a generic linear factor to be injected into a nonlinear factor graph
|
* 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.
|
||||||
*/
|
*/
|
||||||
class GTSAM_EXPORT LinearContainerFactor : public NonlinearFactor {
|
class GTSAM_EXPORT LinearContainerFactor : public NonlinearFactor {
|
||||||
protected:
|
protected:
|
||||||
|
|
@ -60,7 +63,12 @@ public:
|
||||||
// NonlinearFactor
|
// NonlinearFactor
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the error of the factor: uses the underlying linear factor to compute ordering
|
* 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.
|
||||||
|
*
|
||||||
|
* @return nonlinear error if linearizationPoint present, zero otherwise
|
||||||
*/
|
*/
|
||||||
double error(const Values& c) const;
|
double error(const Values& c) const;
|
||||||
|
|
||||||
|
|
@ -73,7 +81,23 @@ public:
|
||||||
/** Apply the ordering to a graph - same as linearize(), but without needing a linearization point */
|
/** Apply the ordering to a graph - same as linearize(), but without needing a linearization point */
|
||||||
GaussianFactor::shared_ptr order(const Ordering& ordering) const;
|
GaussianFactor::shared_ptr order(const Ordering& ordering) const;
|
||||||
|
|
||||||
/** linearize to a GaussianFactor: values has no effect, just clones/rekeys underlying factor */
|
/**
|
||||||
|
* Linearize to a GaussianFactor, with method depending on the presence of a linearizationPoint
|
||||||
|
* - With no linearization point, returns a reordered, but numerically identical,
|
||||||
|
* version of the existing stored linear factor
|
||||||
|
* - With a linearization point provided, returns a reordered and 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
|
||||||
|
*/
|
||||||
GaussianFactor::shared_ptr linearize(const Values& c, const Ordering& ordering) const;
|
GaussianFactor::shared_ptr linearize(const Values& c, const Ordering& ordering) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue