57 declination *= (
M_PI_F / 180.0f);
58 inclination *= (
M_PI_F / 180.0f);
60 expected_nav_induction[
NORTH] =
COS( inclination);
61 expected_nav_induction[
EAST] =
COS( inclination) *
SIN( declination);
62 expected_nav_induction[
DOWN] =
SIN( inclination);
63 update_magnetic_loop_gain();
88 return acceleration_nav_frame;
92 return induction_nav_frame;
108 return cross_acc_correction;
120 return gyro_correction;
128 return nav_correction;
132 return gyro_correction;
136 return circling_state;
171 return heading_difference_AHRS_DGNSS;
176 return magnetic_disturbance;
181 return body_induction_error;
186 return body_induction;
191 return gyro_correction_power;
195 void handle_magnetic_calibration(
char type);
197 void update_magnetic_loop_gain(
void)
219 unsigned circling_counter;
237 float antenna_DOWN_correction;
238 float antenna_RIGHT_correction;
239 float heading_difference_AHRS_DGNSS;
240 float cross_acc_correction;
241 float magnetic_disturbance;
242 float magnetic_control_gain;
243 bool automatic_magnetic_calibration;
244 bool automatic_earth_field_parameters;
245 bool magnetic_calibration_updated;
248 float gyro_correction_power;
integrator< float, float3vector > vector3integrator
float3vector nav_induction
measurement data fusion filter
#define M_H_GAIN
Attitude controller: horizontal gain magnetic.
Attitude and heading reference system.
float3vector getBodyInductionError() const
float getSlipAngle() const
float get_down(void) const
float get_east(void) const
void update_magnetic_induction_data(float declination, float inclination)
const float3matrix & get_body2nav(void) const
float get_G_load(void) const
float get_north(void) const
const float3vector & get_gyro_correction(void) const
const float3vector & get_gyro_correction(void)
eulerangle< ftype > get_euler(void) const
void write_calibration_into_EEPROM(void)
circle_state_t get_circling_state(void) const
float getPitchAngle() const
void attitude_setup(const float3vector &acceleration, const float3vector &induction)
initial attitude setup from observables
quaternion< ftype > get_attitude(void) const
const float3vector & get_nav_acceleration(void) const
float getMagneticDisturbance() const
float getHeadingDifferenceAhrsDgnss() const
void update_ACC_only(const float3vector &gyro, const float3vector &acc, const float3vector &mag, const float3vector &GNSS_acceleration)
rotate quaternion taking angular rate readings
float getGyro_correction_Power() const
const float3vector & get_nav_induction(void) const
void update_compass(const float3vector &gyro, const float3vector &acc, const float3vector &mag, const float3vector &GNSS_acceleration)
rotate quaternion taking angular rate readings
float3vector getBodyInduction() const
float get_turn_rate(void) const
float get_cross_acc_correction(void) const
const float3vector get_orientation(void) const
const float3vector & get_nav_correction(void)
void update(const float3vector &gyro, const float3vector &acc, const float3vector &mag, const float3vector &GNSS_acceleration, float GNSS_heading, bool GNSS_heading_valid)
void set_from_euler(float r, float n, float y)
3 dimensional magnetic calibration and error compensation mechanism
datatype get_output(void) const
datatype get_north(void) const
get north component of attitude
void from_euler(datatype p, datatype q, datatype r)
euler angle -> quaternion transformation
datatype get_down(void) const
get down component of attitude
datatype get_east(void) const
get east component of attitude
void get_rotation_matrix(matrix< datatype, 3 > &m) const
quaternion -> rotation matrix transformation
Automatic compass calibration using a linear least square fit algorithm.
induction sensor calibration and magnetic disturbance compensation
defines platform-dependent algorithms and constants
integrate data (template)
tunable second order IIR lowpass filter (butterworth)
quaternion for 3d attitude representation (template)