18 mag.
rotate(MAG_BOARD_ORIENTATION);
64 diagonals.
x, offdiagonals.
x, offdiagonals.
y,
65 offdiagonals.
x, diagonals.
y, offdiagonals.
z,
66 offdiagonals.
y, offdiagonals.
z, diagonals.
z 175 const float length = field.
length();
186 if (d * 200.0
f > range) {
189 koeff /= (d * 10.0f);
uint8_t register_compass(void)
void new_sample(const Vector3f &sample)
Vector3< float > Vector3f
void set_last_update_usec(uint32_t last_update, uint8_t instance)
void set_external(uint8_t instance, bool external)
uint32_t last_update_usec
void rotate_field(Vector3f &mag, uint8_t instance)
void publish_filtered_field(const Vector3f &mag, uint8_t instance)
void correct_field(Vector3f &mag, uint8_t i)
bool field_ok(const Vector3f &field)
#define AP_COMPASS_MOT_COMP_THROTTLE
virtual Semaphore * new_semaphore(void)
void set_dev_id(uint8_t instance, uint32_t dev_id)
CompassCalibrator _calibrator[COMPASS_MAX_INSTANCES]
uint8_t get_filter_range() const
uint8_t register_compass(void) const
bool is_zero(const T fVal1)
static constexpr float FILTER_KOEF
bool has_current(uint8_t instance) const
has_current - returns true if battery monitor instance provides current info
float current_amps(uint8_t instance) const
current_amps - returns the instantaneous current draw in amperes
AP_BattMonitor & battery()
void rotate(enum Rotation rotation)
Compass_PerMotor _per_motor
Matrix3f * _custom_rotation
void set_rotation(uint8_t instance, enum Rotation rotation)
bool is_external(uint8_t instance)
void publish_raw_field(const Vector3f &mag, uint8_t instance)
#define AP_COMPASS_MOT_COMP_CURRENT
void compensate(Vector3f &offset)
struct Compass::mag_state _state[COMPASS_MAX_INSTANCES]
enum Rotation _board_orientation
AP_Vector3f motor_compensation
AP_Compass_Backend(Compass &compass)