# opentl::core::util::GaussNewton Class Reference

Gauss-Newton optimization. This class implements a single Gauss-Newton optimization step for nonlinear least-squares problems. For efficiency reasons, it uses cached data structures, related to the measurement size, and the number of pose degrees of freedom. More...

Inherits opentl::core::util::ParameterContainer.

List of all members.

## Classes
struct | GaussNewtonData_Key_dof
struct | GaussNewtonData_Key_dof_and_featSize
| structure for caching individual GN-terms (single features). key = pose dof (left 16bits) AND feature size (right 16bits) More...
## Public Types
## Public Member Functions
| GaussNewton ()
| Constructor.
double | gaussNewtonUpdate (const std::vector< core::cvdata::T_MEAS_FEAT * > &measurements, opentl::core::cvdata::Pose &currPose, opentl::math::Vector *priorGrad=NULL, opentl::math::SquareMatrix *priorHess=NULL, opentl::math::SquareMatrix *estCov=NULL)
| Perform Gauss-Newton parameter update (used in order to upgrade from feature to object level) for all targets.
void | init ()
| Initialization.
| ~GaussNewton ()

## Detailed Description

Gauss-Newton optimization. This class implements a single Gauss-Newton optimization step for nonlinear least-squares problems. For efficiency reasons, it uses cached data structures, related to the measurement size, and the number of pose degrees of freedom.

## Member Typedef Documentation

typedef struct opentl::core::util::GaussNewton::GaussNewtonData_Key_dof opentl::core::util::GaussNewton::T_GAUSSNEWTON_DATA_KEY_DOF

typedef struct opentl::core::util::GaussNewton::GaussNewtonData_Key_dof_and_featSize opentl::core::util::GaussNewton::T_GAUSSNEWTON_DATA_KEY_DOF_AND_FEATSIZE

structure for caching individual GN-terms (single features). key = pose dof (left 16bits) AND feature size (right 16bits)

## Member Enumeration Documentation

enum opentl::core::util::GaussNewton::OfflineParameters

Enumerator:

  OFFLINE_COUNT |

enum opentl::core::util::GaussNewton::OnlineParameters

Enumerator:

  param_MEstimator | M-estimator for robust LSE.
  param_MEstimatorThresh | M-estimator parameter (threshold for outliers).
  param_enableDampingFactor | flag to enable damping factor in case of a singular matrix
  param_dampingFactorDeterminantMinThreshold | min. threshold of Hessian determinant value for enabling damping
  param_dampingFactorMax | maximum damping factor
  ONLINE_COUNT |

enum opentl::core::util::GaussNewton::T_GAUSSNEWTON_MEST

Possible M-estimators.

Enumerator:

  NONE | Standard LSE.
  TUKEY | Tukey estimator.
  HUBER | Huber estimator.
  EDGE_SALIENCY | Edge saliency correction (see the paper of Drummond).

## Constructor & Destructor Documentation

opentl::core::util::GaussNewton::GaussNewton | ( |  | ) |

Constructor.

opentl::core::util::GaussNewton::~GaussNewton | ( |  | ) |

## Member Function Documentation

double opentl::core::util::GaussNewton::gaussNewtonUpdate | ( | const std::vector< core::cvdata::T_MEAS_FEAT * > & | measurements,
|  | opentl::core::cvdata::Pose & | currPose,
|  | opentl::math::Vector * | priorGrad = `NULL`,
|  | opentl::math::SquareMatrix * | priorHess = `NULL`,
|  | opentl::math::SquareMatrix * | estCov = `NULL` |
| ) |  |  |

Perform Gauss-Newton parameter update (used in order to upgrade from feature to object level) for all targets.

Parameters:

  | measurements | Input vector of multi-modal measurements and Jacobians (feature-level) related to a single target
  | currPose | Input and output pose (updated with Gauss-Newton in the incremental parameters)
  | priorGrad | Input: gradient of the prior distribution
  | priorHess | Input: Hessian of the prior distribution
  | estCov | Output: covariance of the estimate (= invert Gauss-Newton matrix)

Returns:
  Norm of incremental vector

void opentl::core::util::GaussNewton::init | ( |  | ) | `[inline, virtual]`

Initialization.

Implements opentl::core::util::ParameterContainer.