bazar  1.3.1
Classes | Public Types | Public Member Functions | Public Attributes | List of all members

#include <ls_minimizer2.h>

Classes

struct  observation
struct  observation_nn
 Pre-defined structure for users that prefer function pointers to class heritage. More...

Public Types

enum  { MAX_B_SIZE = 4 }
typedef double flt_t
typedef void(* callback_function )(flt_t *state, void **user_data)
typedef void(* func_nn_ptr )(const flt_t *state, const flt_t *data, int data_size, flt_t *b, flt_t *J, void **user_data)
 Function pointer type used by observation_nn.
typedef bool(* sample_consensus_func )(flt_t *computed_state, observation **obs, int nobs, void **user_data)

Public Member Functions

 ls_minimizer2 (int state_size=0)
 ~ls_minimizer2 ()
void set_state_size (int size)
 Defines the optimization space dimentionality, i.e. the number of optimized parameters.
void set_scales (flt_t *scales)
void desactivate_automated_scaling (void)
void set_verbose_level (int vl)
void set_user_data (int slot_index, void *ptr)
void reset_observations (void)
 call that before adding observations for a new optimization.
void erase_observations (int a, int b=-1)
 Remove some observations. a=0, b=-1 is equivalent to reset_observation.
void add_observation (observation *obs, bool to_delete, bool to_array_delete)
void add_observation_2data_1measure (func_nn_ptr f, const flt_t data[2], const flt_t goal)
void add_observation_3data_1measure (func_nn_ptr f, const flt_t data[3], const flt_t goal)
void add_observation_2data_2measures (func_nn_ptr f, const flt_t data[2], const flt_t goal[2])
void add_observation_3data_2measures (func_nn_ptr f, const flt_t data[3], const flt_t goal[2])
void set_new_iteration_callback (callback_function callback)
 this callback is called at the end of every iteration
void set_state_change_callback (callback_function callback)
 this callback is called each time the state vector changes.
void set_default_c (flt_t c)
void set_last_observation_c (flt_t c)
void set_last_observation_c_max_c_min (flt_t c_max, flt_t c_min)
 For robust estimation using Julien' method (default = +inf for both):
void set_last_observation_weight (flt_t weight)
 Set observation weight (default = 1):
void set_last_observation_confidence (flt_t confidence)
 Set observation confidence (default = 1). Only used for PROSAC and cat tail.
int minimize_using_steepest_descent_from (flt_t *initial_state)
int minimize_using_levenberg_marquardt_from (flt_t *initial_state)
 Levenberg-Marquardt minimization.
void lm_set_max_iterations (int it)
void lm_set_max_failures_in_a_row (int f)
 if f iterations do not decrease the function, stop.
void lm_set_tol_cos (flt_t t)
 stop condition. Very restrictive: 0.999 less restrictive: 0.9
void lm_set_initial_lambda (flt_t l)
bool minimize_using_gauss_newton_from (flt_t *initial_state)
int minimize_using_dogleg_from (flt_t *initial_state)
 Dogleg (not convincing).
int minimize_using_cattail_from (flt_t *initial_state)
void ct_set_max_iterations (int it)
void set_line_search_parameters (flt_t lambda0, flt_t k_rough, flt_t k_fine)
flt_t minimize_using_prosac (sample_consensus_func f, int nb_samples, int min_number_of_inliers, int max_number_of_iterations)
flt_t minimize_using_julien_method_from (const flt_t *state, int nb_steps, int nb_iterations_per_step)
void check_jacobians_around (flt_t *state, flt_t state_step)
void set_last_observation_as_outlier (void)
void set_ground_truth (flt_t *state)
void compare_outliers_with_ground_truth (void)
void compare_state_with_ground_truth (void)
void reserve (int max_obs)
int count_measures ()

Public Attributes

flt_t * state
 state vector
bool use_user_scaling
bool use_automated_scaling
int lm_max_iterations
int lm_max_failures_in_a_row
flt_t lm_initial_lambda
flt_t lm_tol_cos
int verbose_level

Detailed Description

Non-linear Minimizer, modified API

Author
Vincent Lepetit, Julien Pilet

Definition at line 39 of file ls_minimizer2.h.

Member Typedef Documentation

typedef void(* ls_minimizer2::callback_function)(flt_t *state, void **user_data)

Definition at line 44 of file ls_minimizer2.h.

typedef double ls_minimizer2::flt_t

Definition at line 43 of file ls_minimizer2.h.

typedef void(* ls_minimizer2::func_nn_ptr)(const flt_t *state, const flt_t *data, int data_size, flt_t *b, flt_t *J, void **user_data)

Function pointer type used by observation_nn.

Definition at line 83 of file ls_minimizer2.h.

typedef bool(* ls_minimizer2::sample_consensus_func)(flt_t *computed_state, observation **obs, int nobs, void **user_data)

Definition at line 206 of file ls_minimizer2.h.

Member Enumeration Documentation

anonymous enum
Enumerator:
MAX_B_SIZE 

Definition at line 49 of file ls_minimizer2.h.

Constructor & Destructor Documentation

ls_minimizer2::ls_minimizer2 ( int  state_size = 0)

Definition at line 33 of file ls_minimizer2.cpp.

ls_minimizer2::~ls_minimizer2 ( )

Definition at line 104 of file ls_minimizer2.cpp.

Member Function Documentation

void ls_minimizer2::add_observation ( observation *  obs,
bool  to_delete,
bool  to_array_delete 
)
void ls_minimizer2::add_observation_2data_1measure ( func_nn_ptr  f,
const flt_t  data[2],
const flt_t  goal 
)
void ls_minimizer2::add_observation_2data_2measures ( func_nn_ptr  f,
const flt_t  data[2],
const flt_t  goal[2] 
)
void ls_minimizer2::add_observation_3data_1measure ( func_nn_ptr  f,
const flt_t  data[3],
const flt_t  goal 
)
void ls_minimizer2::add_observation_3data_2measures ( func_nn_ptr  f,
const flt_t  data[3],
const flt_t  goal[2] 
)
void ls_minimizer2::check_jacobians_around ( flt_t *  state,
flt_t  state_step 
)

Checking derivatives: compares finite difference jacobian and analytical jacobian computed by the user provided functions.

Definition at line 1091 of file ls_minimizer2.cpp.

References ls_minimizer2::observation::eval_func(), and ls_minimizer2::observation::get_nb_measures().

void ls_minimizer2::compare_outliers_with_ground_truth ( void  )
void ls_minimizer2::compare_state_with_ground_truth ( void  )

Definition at line 339 of file ls_minimizer2.cpp.

int ls_minimizer2::count_measures ( )

Definition at line 557 of file ls_minimizer2.cpp.

References msg.

void ls_minimizer2::ct_set_max_iterations ( int  it)
inline

Definition at line 202 of file ls_minimizer2.h.

void ls_minimizer2::desactivate_automated_scaling ( void  )
inline

Definition at line 122 of file ls_minimizer2.h.

References use_automated_scaling.

void ls_minimizer2::erase_observations ( int  a,
int  b = -1 
)

Remove some observations. a=0, b=-1 is equivalent to reset_observation.

Definition at line 242 of file ls_minimizer2.cpp.

void ls_minimizer2::lm_set_initial_lambda ( flt_t  l)

Definition at line 206 of file ls_minimizer2.cpp.

void ls_minimizer2::lm_set_max_failures_in_a_row ( int  f)

if f iterations do not decrease the function, stop.

Definition at line 196 of file ls_minimizer2.cpp.

void ls_minimizer2::lm_set_max_iterations ( int  it)

Definition at line 191 of file ls_minimizer2.cpp.

void ls_minimizer2::lm_set_tol_cos ( flt_t  t)

stop condition. Very restrictive: 0.999 less restrictive: 0.9

Definition at line 201 of file ls_minimizer2.cpp.

int ls_minimizer2::minimize_using_cattail_from ( flt_t *  initial_state)

Cat Tail (experimental) a mix between gauss-newton and line search.

Definition at line 898 of file ls_minimizer2.cpp.

References confidence_cmp(), and msg.

int ls_minimizer2::minimize_using_dogleg_from ( flt_t *  initial_state)

Dogleg (not convincing).

TODO looks wrong..

Definition at line 718 of file ls_minimizer2.cpp.

References msg, and solve_deg2().

bool ls_minimizer2::minimize_using_gauss_newton_from ( flt_t *  initial_state)
ls_minimizer2::flt_t ls_minimizer2::minimize_using_julien_method_from ( const flt_t *  state,
int  nb_steps,
int  nb_iterations_per_step 
)

Definition at line 1065 of file ls_minimizer2.cpp.

References msg.

int ls_minimizer2::minimize_using_levenberg_marquardt_from ( flt_t *  initial_state)

Levenberg-Marquardt minimization.

Returns
an error code <0 if something went wrong. 2: unable to improve result after N iterations. 3: termination criterion reached. 4: iterations limit exceeded.

Julien new_state actually contains the old state

Definition at line 579 of file ls_minimizer2.cpp.

References msg.

ls_minimizer2::flt_t ls_minimizer2::minimize_using_prosac ( sample_consensus_func  f,
int  nb_samples,
int  min_number_of_inliers,
int  max_number_of_iterations 
)

TODO <Julien> I modified this. It may be wrong.

Definition at line 1008 of file ls_minimizer2.cpp.

References confidence_cmp(), and mymin().

int ls_minimizer2::minimize_using_steepest_descent_from ( flt_t *  initial_state)
void ls_minimizer2::reserve ( int  max_obs)
inline

Definition at line 224 of file ls_minimizer2.h.

void ls_minimizer2::reset_observations ( void  )

call that before adding observations for a new optimization.

Definition at line 238 of file ls_minimizer2.cpp.

void ls_minimizer2::set_default_c ( flt_t  c)

For robust estimation (default = +inf) residual = max( ||b-f(d,state)||^2, c^2 ) This value will be applied to next added observations

Definition at line 257 of file ls_minimizer2.cpp.

void ls_minimizer2::set_ground_truth ( flt_t *  state)

Definition at line 219 of file ls_minimizer2.cpp.

void ls_minimizer2::set_last_observation_as_outlier ( void  )

Definition at line 305 of file ls_minimizer2.cpp.

References ls_minimizer2::observation::outlier.

void ls_minimizer2::set_last_observation_c ( flt_t  c)

For robust estimation (default = +inf): change the last added observation robust estimator value

Definition at line 274 of file ls_minimizer2.cpp.

References ls_minimizer2::observation::squared_c.

void ls_minimizer2::set_last_observation_c_max_c_min ( flt_t  c_max,
flt_t  c_min 
)

For robust estimation using Julien' method (default = +inf for both):

Definition at line 282 of file ls_minimizer2.cpp.

References ls_minimizer2::observation::c_max, and ls_minimizer2::observation::c_min.

void ls_minimizer2::set_last_observation_confidence ( flt_t  confidence)

Set observation confidence (default = 1). Only used for PROSAC and cat tail.

Definition at line 298 of file ls_minimizer2.cpp.

References ls_minimizer2::observation::confidence.

void ls_minimizer2::set_last_observation_weight ( flt_t  weight)

Set observation weight (default = 1):

Definition at line 290 of file ls_minimizer2.cpp.

References ls_minimizer2::observation::sqrt_weight, and ls_minimizer2::observation::weight.

void ls_minimizer2::set_line_search_parameters ( flt_t  lambda0,
flt_t  k_rough,
flt_t  k_fine 
)

Definition at line 211 of file ls_minimizer2.cpp.

void ls_minimizer2::set_new_iteration_callback ( callback_function  callback)

this callback is called at the end of every iteration

Definition at line 228 of file ls_minimizer2.cpp.

void ls_minimizer2::set_scales ( flt_t *  scales)

Scale applied to each optimized parameter (each dimension of the optimization space). Not used by default, but an automated method is used.

Definition at line 156 of file ls_minimizer2.cpp.

void ls_minimizer2::set_state_change_callback ( callback_function  callback)

this callback is called each time the state vector changes.

Definition at line 233 of file ls_minimizer2.cpp.

void ls_minimizer2::set_state_size ( int  size)

Defines the optimization space dimentionality, i.e. the number of optimized parameters.

Definition at line 50 of file ls_minimizer2.cpp.

void ls_minimizer2::set_user_data ( int  slot_index,
void *  ptr 
)

user arbitrary pointers. slot_index should be in [0,9] this pointer array is passed to the callback functions

Definition at line 149 of file ls_minimizer2.cpp.

void ls_minimizer2::set_verbose_level ( int  vl)

0 = nothing 1 = messages before and after minimization 2 = message at each iteration. 3 = debug

Definition at line 186 of file ls_minimizer2.cpp.

Member Data Documentation

flt_t ls_minimizer2::lm_initial_lambda

Definition at line 284 of file ls_minimizer2.h.

int ls_minimizer2::lm_max_failures_in_a_row

Definition at line 283 of file ls_minimizer2.h.

int ls_minimizer2::lm_max_iterations

Definition at line 282 of file ls_minimizer2.h.

flt_t ls_minimizer2::lm_tol_cos

Definition at line 285 of file ls_minimizer2.h.

flt_t* ls_minimizer2::state

state vector

Definition at line 176 of file ls_minimizer2.h.

bool ls_minimizer2::use_automated_scaling

Definition at line 274 of file ls_minimizer2.h.

Referenced by desactivate_automated_scaling().

bool ls_minimizer2::use_user_scaling

Definition at line 274 of file ls_minimizer2.h.

int ls_minimizer2::verbose_level

Definition at line 308 of file ls_minimizer2.h.


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