iSAM
isam::Optimizer Class Reference

List of all members.

Public Member Functions

 Optimizer (OptimizationInterface &fs)
void batch_optimize (const Properties &prop, int *num_iterations)
void augment_sparse_linear_system (SparseSystem &W, const Properties &prop)
void relinearize (const Properties &prop)
void update_estimate (const Properties &prop)

Detailed Description

Definition at line 41 of file Optimizer.h.


Member Function Documentation

Used to augment the sparse linear system by adding new measurements. Only useful in incremental mode.

Definition at line 192 of file Optimizer.cpp.

void isam::Optimizer::batch_optimize ( const Properties prop,
int *  num_iterations 
)

Perform batch optimization using the method set in prop

Definition at line 535 of file Optimizer.cpp.

void isam::Optimizer::relinearize ( const Properties prop)

Computes the Jacobian J(x_est) of the residual error function about the current estimate x_est, computes the thin QR factorization of J(x_est), and then stores (R,d) as a SparseSystem, where

Q^t f(x_est) = | d | | e |

and || e ||^2 is the squared residual error.

NOTA BENE: (Deeply) Internally, this algorithm uses the SuiteSparse library to perform the matrix decomposition shown above. The SuiteSparse library utilizes variable reordering in order to reduce fill-in and boost efficiency. Consequently, the ordering (i.e., naming) of variables in the SparseSystem computed by this function differs from the ordering (naming) of the variables in the Graph object contained in the Slam class.

The mappings between the two orderings can be obtained using OrderedSparseMatrix::a_to_r() and OrderedSparseMatrix::r_to_a(). These functions return const int*'s that point to internal arrays encoding the permutation between the naming of variables passed in to the factorization routine, and the naming of variables in the factored matrices returned by the relinearization.

More precisely, if

const int* order = function_system._R.a_to_r();

then the variable x_i from the Graph object stored the Slam class is mapped to the variable x_{order[i]} in the SparseSystem obtained after linearization.

The call

const int* inverse_order = function_system._R.r_to_a();

retrieves the inverse permutation.

Definition at line 110 of file Optimizer.cpp.

Updates the current estimated solution

Definition at line 225 of file Optimizer.cpp.


The documentation for this class was generated from the following files:
 All Classes Files Functions Variables