APM:Libraries
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
CompassCalibrator Class Reference

#include <CompassCalibrator.h>

Collaboration diagram for CompassCalibrator:
[legend]

Classes

class  CompassSample
 
class  param_t
 

Public Types

typedef uint8_t completion_mask_t[10]
 

Public Member Functions

 CompassCalibrator ()
 
void start (bool retry, float delay, uint16_t offset_max)
 
void clear ()
 
void update (bool &failure)
 
void new_sample (const Vector3f &sample)
 
bool check_for_timeout ()
 
bool running () const
 
void set_tolerance (float tolerance)
 
void get_calibration (Vector3f &offsets, Vector3f &diagonals, Vector3f &offdiagonals)
 
float get_completion_percent () const
 
completion_mask_tget_completion_mask ()
 
enum compass_cal_status_t get_status () const
 
float get_fitness () const
 
uint8_t get_attempt () const
 

Private Member Functions

bool set_status (compass_cal_status_t status)
 
bool accept_sample (const Vector3f &sample)
 
bool accept_sample (const CompassSample &sample)
 
bool fit_acceptable ()
 
void reset_state ()
 
void initialize_fit ()
 
bool fitting () const
 
void thin_samples ()
 
float calc_residual (const Vector3f &sample, const param_t &params) const
 
float calc_mean_squared_residuals (const param_t &params) const
 
float calc_mean_squared_residuals () const
 
void calc_initial_offset ()
 
void calc_sphere_jacob (const Vector3f &sample, const param_t &params, float *ret) const
 
void run_sphere_fit ()
 
void calc_ellipsoid_jacob (const Vector3f &sample, const param_t &params, float *ret) const
 
void run_ellipsoid_fit ()
 
void update_completion_mask (const Vector3f &v)
 
void update_completion_mask ()
 

Private Attributes

enum compass_cal_status_t _status
 
uint32_t _last_sample_ms
 
float _delay_start_sec
 
uint32_t _start_time_ms
 
bool _retry
 
float _tolerance
 
uint8_t _attempt
 
uint16_t _offset_max
 
completion_mask_t _completion_mask
 
class param_t _params
 
uint16_t _fit_step
 
CompassSample_sample_buffer
 
float _fitness
 
float _initial_fitness
 
float _sphere_lambda
 
float _ellipsoid_lambda
 
uint16_t _samples_collected
 
uint16_t _samples_thinned
 

Detailed Description

Definition at line 19 of file CompassCalibrator.h.

Member Typedef Documentation

◆ completion_mask_t

typedef uint8_t CompassCalibrator::completion_mask_t[10]

Definition at line 21 of file CompassCalibrator.h.

Constructor & Destructor Documentation

◆ CompassCalibrator()

CompassCalibrator::CompassCalibrator ( )

Definition at line 70 of file CompassCalibrator.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ accept_sample() [1/2]

bool CompassCalibrator::accept_sample ( const Vector3f sample)
private

Definition at line 399 of file CompassCalibrator.cpp.

Referenced by accept_sample(), new_sample(), and thin_samples().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ accept_sample() [2/2]

bool CompassCalibrator::accept_sample ( const CompassSample sample)
private

Definition at line 420 of file CompassCalibrator.cpp.

Here is the call graph for this function:

◆ calc_ellipsoid_jacob()

void CompassCalibrator::calc_ellipsoid_jacob ( const Vector3f sample,
const param_t params,
float *  ret 
) const
private

Definition at line 568 of file CompassCalibrator.cpp.

Referenced by run_ellipsoid_fit().

Here is the caller graph for this function:

◆ calc_initial_offset()

void CompassCalibrator::calc_initial_offset ( )
private

Definition at line 476 of file CompassCalibrator.cpp.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_mean_squared_residuals() [1/2]

float CompassCalibrator::calc_mean_squared_residuals ( const param_t params) const
private

Definition at line 438 of file CompassCalibrator.cpp.

Here is the call graph for this function:

◆ calc_mean_squared_residuals() [2/2]

float CompassCalibrator::calc_mean_squared_residuals ( ) const
private

Definition at line 433 of file CompassCalibrator.cpp.

Referenced by initialize_fit(), run_ellipsoid_fit(), and run_sphere_fit().

Here is the caller graph for this function:

◆ calc_residual()

float CompassCalibrator::calc_residual ( const Vector3f sample,
const param_t params 
) const
private

Definition at line 424 of file CompassCalibrator.cpp.

Referenced by calc_mean_squared_residuals(), run_ellipsoid_fit(), and run_sphere_fit().

Here is the caller graph for this function:

◆ calc_sphere_jacob()

void CompassCalibrator::calc_sphere_jacob ( const Vector3f sample,
const param_t params,
float *  ret 
) const
private

Definition at line 453 of file CompassCalibrator.cpp.

Referenced by run_sphere_fit().

Here is the caller graph for this function:

◆ check_for_timeout()

bool CompassCalibrator::check_for_timeout ( )

Definition at line 150 of file CompassCalibrator.cpp.

Here is the call graph for this function:

◆ clear()

void CompassCalibrator::clear ( )

Definition at line 77 of file CompassCalibrator.cpp.

Referenced by Compass::_accept_calibration_mask(), Compass::_cancel_calibration(), and CompassCalibrator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fit_acceptable()

bool CompassCalibrator::fit_acceptable ( )
private

Definition at line 339 of file CompassCalibrator.cpp.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fitting()

bool CompassCalibrator::fitting ( ) const
private

Definition at line 220 of file CompassCalibrator.cpp.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_attempt()

uint8_t CompassCalibrator::get_attempt ( ) const
inline

Definition at line 43 of file CompassCalibrator.h.

Referenced by Compass::send_mag_cal_progress().

Here is the caller graph for this function:

◆ get_calibration()

void CompassCalibrator::get_calibration ( Vector3f offsets,
Vector3f diagonals,
Vector3f offdiagonals 
)

Definition at line 93 of file CompassCalibrator.cpp.

Referenced by Compass::_accept_calibration(), Compass::send_mag_cal_report(), and set_tolerance().

Here is the caller graph for this function:

◆ get_completion_mask()

CompassCalibrator::completion_mask_t & CompassCalibrator::get_completion_mask ( )

Definition at line 145 of file CompassCalibrator.cpp.

Referenced by set_tolerance().

Here is the caller graph for this function:

◆ get_completion_percent()

float CompassCalibrator::get_completion_percent ( ) const

Definition at line 103 of file CompassCalibrator.cpp.

Referenced by set_tolerance().

Here is the caller graph for this function:

◆ get_fitness()

float CompassCalibrator::get_fitness ( ) const
inline

Definition at line 42 of file CompassCalibrator.h.

Referenced by Compass::send_mag_cal_report().

Here is the caller graph for this function:

◆ get_status()

enum compass_cal_status_t CompassCalibrator::get_status ( ) const
inline

Definition at line 41 of file CompassCalibrator.h.

Referenced by Compass::_accept_calibration(), Compass::send_mag_cal_progress(), and Compass::send_mag_cal_report().

Here is the caller graph for this function:

◆ initialize_fit()

void CompassCalibrator::initialize_fit ( )
private

Definition at line 224 of file CompassCalibrator.cpp.

Referenced by reset_state(), and set_status().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ new_sample()

void CompassCalibrator::new_sample ( const Vector3f sample)

Definition at line 160 of file CompassCalibrator.cpp.

Referenced by AP_Compass_Backend::publish_raw_field().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset_state()

void CompassCalibrator::reset_state ( )
private

Definition at line 237 of file CompassCalibrator.cpp.

Referenced by set_status().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run_ellipsoid_fit()

void CompassCalibrator::run_ellipsoid_fit ( )
private

Definition at line 597 of file CompassCalibrator.cpp.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run_sphere_fit()

void CompassCalibrator::run_sphere_fit ( )
private

Definition at line 486 of file CompassCalibrator.cpp.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ running()

bool CompassCalibrator::running ( ) const

Definition at line 216 of file CompassCalibrator.cpp.

Referenced by check_for_timeout(), fitting(), new_sample(), and start().

Here is the caller graph for this function:

◆ set_status()

bool CompassCalibrator::set_status ( compass_cal_status_t  status)
private

Definition at line 249 of file CompassCalibrator.cpp.

Referenced by check_for_timeout(), clear(), new_sample(), start(), and update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_tolerance()

void CompassCalibrator::set_tolerance ( float  tolerance)
inline

Definition at line 35 of file CompassCalibrator.h.

Referenced by Compass::_start_calibration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ start()

void CompassCalibrator::start ( bool  retry,
float  delay,
uint16_t  offset_max 
)

Definition at line 81 of file CompassCalibrator.cpp.

Referenced by Compass::_start_calibration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ thin_samples()

void CompassCalibrator::thin_samples ( )
private

Definition at line 357 of file CompassCalibrator.cpp.

Referenced by set_status().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

void CompassCalibrator::update ( bool &  failure)

Definition at line 174 of file CompassCalibrator.cpp.

Referenced by Compass::compass_cal_update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_completion_mask() [1/2]

void CompassCalibrator::update_completion_mask ( const Vector3f v)
private

Update _completion_mask for the geodesic section of v. Corrections are applied to v with _params.

Parameters
v[in]A vector representing one calibration sample.

Definition at line 122 of file CompassCalibrator.cpp.

Here is the call graph for this function:

◆ update_completion_mask() [2/2]

void CompassCalibrator::update_completion_mask ( )
private

Reset and update _completion_mask with the current samples.

Definition at line 137 of file CompassCalibrator.cpp.

Referenced by new_sample(), run_ellipsoid_fit(), run_sphere_fit(), and thin_samples().

Here is the caller graph for this function:

Member Data Documentation

◆ _attempt

uint8_t CompassCalibrator::_attempt
private

Definition at line 84 of file CompassCalibrator.h.

Referenced by get_attempt(), set_status(), and start().

◆ _completion_mask

completion_mask_t CompassCalibrator::_completion_mask
private

Definition at line 87 of file CompassCalibrator.h.

Referenced by get_completion_mask(), reset_state(), and update_completion_mask().

◆ _delay_start_sec

float CompassCalibrator::_delay_start_sec
private

Definition at line 80 of file CompassCalibrator.h.

Referenced by set_status(), and start().

◆ _ellipsoid_lambda

float CompassCalibrator::_ellipsoid_lambda
private

Definition at line 96 of file CompassCalibrator.h.

Referenced by initialize_fit(), and run_ellipsoid_fit().

◆ _fit_step

uint16_t CompassCalibrator::_fit_step
private

Definition at line 91 of file CompassCalibrator.h.

Referenced by initialize_fit(), and update().

◆ _fitness

float CompassCalibrator::_fitness
private

◆ _initial_fitness

float CompassCalibrator::_initial_fitness
private

Definition at line 94 of file CompassCalibrator.h.

Referenced by initialize_fit(), and update().

◆ _last_sample_ms

uint32_t CompassCalibrator::_last_sample_ms
private

Definition at line 77 of file CompassCalibrator.h.

Referenced by check_for_timeout(), and new_sample().

◆ _offset_max

uint16_t CompassCalibrator::_offset_max
private

Definition at line 85 of file CompassCalibrator.h.

Referenced by fit_acceptable(), and start().

◆ _params

class param_t CompassCalibrator::_params
private

◆ _retry

bool CompassCalibrator::_retry
private

Definition at line 82 of file CompassCalibrator.h.

Referenced by check_for_timeout(), set_status(), and start().

◆ _sample_buffer

CompassSample* CompassCalibrator::_sample_buffer
private

◆ _samples_collected

uint16_t CompassCalibrator::_samples_collected
private

◆ _samples_thinned

uint16_t CompassCalibrator::_samples_thinned
private

Definition at line 98 of file CompassCalibrator.h.

Referenced by get_completion_percent(), reset_state(), and thin_samples().

◆ _sphere_lambda

float CompassCalibrator::_sphere_lambda
private

Definition at line 95 of file CompassCalibrator.h.

Referenced by initialize_fit(), and run_sphere_fit().

◆ _start_time_ms

uint32_t CompassCalibrator::_start_time_ms
private

Definition at line 81 of file CompassCalibrator.h.

Referenced by set_status(), and start().

◆ _status

enum compass_cal_status_t CompassCalibrator::_status
private

◆ _tolerance

float CompassCalibrator::_tolerance
private

Definition at line 83 of file CompassCalibrator.h.

Referenced by fit_acceptable(), and set_tolerance().


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