APM:Libraries
|
#include <AP_InertialSensor_Invensense.h>
Public Types | |
enum | Invensense_Type { Invensense_MPU6000 =0, Invensense_MPU6500, Invensense_MPU9250, Invensense_ICM20608, Invensense_ICM20602, Invensense_ICM20789, Invensense_ICM20689 } |
![]() | |
enum | DevTypes { DEVTYPE_BMI160 = 0x09, DEVTYPE_L3G4200D = 0x10, DEVTYPE_ACC_LSM303D = 0x11, DEVTYPE_ACC_BMA180 = 0x12, DEVTYPE_ACC_MPU6000 = 0x13, DEVTYPE_ACC_MPU9250 = 0x16, DEVTYPE_ACC_IIS328DQ = 0x17, DEVTYPE_ACC_LSM9DS1 = 0x18, DEVTYPE_GYR_MPU6000 = 0x21, DEVTYPE_GYR_L3GD20 = 0x22, DEVTYPE_GYR_MPU9250 = 0x24, DEVTYPE_GYR_I3G4250D = 0x25, DEVTYPE_GYR_LSM9DS1 = 0x26, DEVTYPE_INS_ICM20789 = 0x27, DEVTYPE_INS_ICM20689 = 0x28 } |
Public Member Functions | |
virtual | ~AP_InertialSensor_Invensense () |
bool | update () override |
void | accumulate () override |
AuxiliaryBus * | get_auxiliary_bus () override |
void | start () override |
![]() | |
AP_InertialSensor_Backend (AP_InertialSensor &imu) | |
AP_InertialSensor_Backend (const AP_InertialSensor_Backend &that)=delete | |
virtual | ~AP_InertialSensor_Backend (void) |
int16_t | get_id () const |
void | notify_fifo_reset (void) |
Static Public Member Functions | |
static AP_InertialSensor_Invensense & | from (AP_InertialSensor_Backend &backend) |
static AP_InertialSensor_Backend * | probe (AP_InertialSensor &imu, AP_HAL::OwnPtr< AP_HAL::I2CDevice > dev, enum Rotation rotation=ROTATION_NONE) |
static AP_InertialSensor_Backend * | probe (AP_InertialSensor &imu, AP_HAL::OwnPtr< AP_HAL::SPIDevice > dev, enum Rotation rotation=ROTATION_NONE) |
Public Attributes | |
const uint16_t | multiplier_accel = INT16_MAX/(26*GRAVITY_MSS) |
Vector3f | accel |
Vector3f | gyro |
uint8_t | count |
LowPassFilterVector3f | accel_filter {4000, 188} |
LowPassFilterVector3f | gyro_filter {8000, 188} |
Private Member Functions | |
AP_InertialSensor_Invensense (AP_InertialSensor &imu, AP_HAL::OwnPtr< AP_HAL::Device > dev, enum Rotation rotation) | |
bool | _init () |
bool | _hardware_init () |
bool | _check_whoami () |
void | _set_filter_register (void) |
void | _fifo_reset () |
bool | _has_auxiliary_bus () |
void | _read_fifo () |
bool | _data_ready () |
void | _poll_data () |
bool | _block_read (uint8_t reg, uint8_t *buf, uint32_t size) |
uint8_t | _register_read (uint8_t reg) |
void | _register_write (uint8_t reg, uint8_t val, bool checked=false) |
bool | _accumulate (uint8_t *samples, uint8_t n_samples) |
bool | _accumulate_sensor_rate_sampling (uint8_t *samples, uint8_t n_samples) |
bool | _check_raw_temp (int16_t t2) |
Private Attributes | |
friend | AP_Invensense_AuxiliaryBus |
friend | AP_Invensense_AuxiliaryBusSlave |
int16_t | _raw_temp |
uint8_t | _gyro_instance |
uint8_t | _accel_instance |
float | temp_sensitivity = 1.0/340 |
float | temp_zero = 36.53 |
float | _temp_filtered |
float | _accel_scale |
float | _fifo_accel_scale |
float | _fifo_gyro_scale |
LowPassFilter2pFloat | _temp_filter |
enum Rotation | _rotation |
AP_HAL::DigitalSource * | _drdy_pin |
AP_HAL::OwnPtr< AP_HAL::Device > | _dev |
AP_Invensense_AuxiliaryBus * | _auxiliary_bus |
enum Invensense_Type | _mpu_type |
bool | _fast_sampling |
uint8_t | _fifo_downsample_rate |
uint16_t | _backend_rate_hz |
uint8_t | _last_stat_user_ctrl |
uint8_t * | _fifo_buffer |
struct { | |
Vector3f accel | |
Vector3f gyro | |
uint8_t count | |
LowPassFilterVector3f accel_filter {4000, 188} | |
LowPassFilterVector3f gyro_filter {8000, 188} | |
} | _accum |
Additional Inherited Members | |
![]() | |
void | _rotate_and_correct_accel (uint8_t instance, Vector3f &accel) |
void | _rotate_and_correct_gyro (uint8_t instance, Vector3f &gyro) |
void | _publish_gyro (uint8_t instance, const Vector3f &gyro) |
void | _notify_new_gyro_raw_sample (uint8_t instance, const Vector3f &accel, uint64_t sample_us=0) |
void | _publish_accel (uint8_t instance, const Vector3f &accel) |
void | _notify_new_accel_raw_sample (uint8_t instance, const Vector3f &accel, uint64_t sample_us=0, bool fsync_set=false) |
void | _set_accel_oversampling (uint8_t instance, uint8_t n) |
void | _set_gyro_oversampling (uint8_t instance, uint8_t n) |
void | _set_accel_sensor_rate_sampling_enabled (uint8_t instance, bool value) |
void | _set_gyro_sensor_rate_sampling_enabled (uint8_t instance, bool value) |
void | _set_raw_sample_accel_multiplier (uint8_t instance, uint16_t mul) |
void | _set_raw_sampl_gyro_multiplier (uint8_t instance, uint16_t mul) |
void | _update_sensor_rate (uint16_t &count, uint32_t &start_us, float &rate_hz) const |
void | _set_accel_max_abs_offset (uint8_t instance, float offset) |
uint32_t | _accel_raw_sample_rate (uint8_t instance) const |
void | _set_accel_raw_sample_rate (uint8_t instance, uint16_t rate_hz) |
uint32_t | _gyro_raw_sample_rate (uint8_t instance) const |
void | _set_gyro_raw_sample_rate (uint8_t instance, uint16_t rate_hz) |
void | _publish_temperature (uint8_t instance, float temperature) |
void | _set_accel_error_count (uint8_t instance, uint32_t error_count) |
void | _set_gyro_error_count (uint8_t instance, uint32_t error_count) |
void | _inc_accel_error_count (uint8_t instance) |
void | _inc_gyro_error_count (uint8_t instance) |
uint8_t | _accel_filter_cutoff (void) const |
uint8_t | _gyro_filter_cutoff (void) const |
uint16_t | get_sample_rate_hz (void) const |
void | update_gyro (uint8_t instance) |
void | update_accel (uint8_t instance) |
void | set_gyro_orientation (uint8_t instance, enum Rotation rotation) |
void | set_accel_orientation (uint8_t instance, enum Rotation rotation) |
void | increment_clip_count (uint8_t instance) |
bool | enable_fast_sampling (uint8_t instance) |
void | _notify_new_accel_sensor_rate_sample (uint8_t instance, const Vector3f &accel) |
void | _notify_new_gyro_sensor_rate_sample (uint8_t instance, const Vector3f &gyro) |
void | notify_accel_fifo_reset (uint8_t instance) |
void | notify_gyro_fifo_reset (uint8_t instance) |
![]() | |
AP_InertialSensor & | _imu |
AP_HAL::Semaphore * | _sem |
int16_t | _id = -1 |
int8_t | _last_accel_filter_hz [INS_MAX_INSTANCES] |
int8_t | _last_gyro_filter_hz [INS_MAX_INSTANCES] |
Definition at line 28 of file AP_InertialSensor_Invensense.h.
Enumerator | |
---|---|
Invensense_MPU6000 | |
Invensense_MPU6500 | |
Invensense_MPU9250 | |
Invensense_ICM20608 | |
Invensense_ICM20602 | |
Invensense_ICM20789 | |
Invensense_ICM20689 |
Definition at line 59 of file AP_InertialSensor_Invensense.h.
|
virtual |
Definition at line 88 of file AP_InertialSensor_Invensense.cpp.
|
private |
Definition at line 78 of file AP_InertialSensor_Invensense.cpp.
Referenced by probe().
|
private |
Definition at line 404 of file AP_InertialSensor_Invensense.cpp.
Referenced by _read_fifo().
|
private |
Definition at line 452 of file AP_InertialSensor_Invensense.cpp.
Referenced by _read_fifo().
|
private |
Definition at line 633 of file AP_InertialSensor_Invensense.cpp.
Referenced by _check_raw_temp(), and _read_fifo().
|
private |
Definition at line 620 of file AP_InertialSensor_Invensense.cpp.
Referenced by _accumulate(), and _accumulate_sensor_rate_sampling().
|
private |
Definition at line 725 of file AP_InertialSensor_Invensense.cpp.
Referenced by _hardware_init().
|
private |
Definition at line 387 of file AP_InertialSensor_Invensense.cpp.
Referenced by _hardware_init().
|
private |
Definition at line 158 of file AP_InertialSensor_Invensense.cpp.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), _read_fifo(), and start().
|
private |
Definition at line 758 of file AP_InertialSensor_Invensense.cpp.
Referenced by _init().
|
private |
Definition at line 178 of file AP_InertialSensor_Invensense.cpp.
Referenced by get_auxiliary_bus().
|
private |
Definition at line 146 of file AP_InertialSensor_Invensense.cpp.
Referenced by probe().
|
private |
Definition at line 399 of file AP_InertialSensor_Invensense.cpp.
Referenced by start().
|
private |
Definition at line 526 of file AP_InertialSensor_Invensense.cpp.
Referenced by _poll_data().
|
private |
Definition at line 639 of file AP_InertialSensor_Invensense.cpp.
Referenced by _check_whoami(), _data_ready(), _hardware_init(), and start().
|
private |
Definition at line 646 of file AP_InertialSensor_Invensense.cpp.
Referenced by _fifo_reset(), _hardware_init(), _set_filter_register(), AP_Invensense_AuxiliaryBusSlave::_set_passthrough(), AP_Invensense_AuxiliaryBusSlave::passthrough_read(), AP_Invensense_AuxiliaryBusSlave::passthrough_write(), and start().
|
private |
Definition at line 654 of file AP_InertialSensor_Invensense.cpp.
Referenced by start().
|
overridevirtual |
Reimplemented from AP_InertialSensor_Backend.
Definition at line 363 of file AP_InertialSensor_Invensense.cpp.
Referenced by from().
|
inlinestatic |
Definition at line 36 of file AP_InertialSensor_Invensense.h.
Referenced by AP_Invensense_AuxiliaryBus::_configure_slaves(), AP_Invensense_AuxiliaryBusSlave::_set_passthrough(), AP_Invensense_AuxiliaryBusSlave::passthrough_read(), AP_Invensense_AuxiliaryBusSlave::passthrough_write(), AP_Invensense_AuxiliaryBusSlave::read(), and AP_Invensense_AuxiliaryBus::register_periodic_callback().
|
overridevirtual |
Reimplemented from AP_InertialSensor_Backend.
Definition at line 368 of file AP_InertialSensor_Invensense.cpp.
Referenced by from().
|
static |
Definition at line 96 of file AP_InertialSensor_Invensense.cpp.
Referenced by AP_InertialSensor::detect_backends(), and from().
|
static |
Definition at line 119 of file AP_InertialSensor_Invensense.cpp.
|
overridevirtual |
Reimplemented from AP_InertialSensor_Backend.
Definition at line 183 of file AP_InertialSensor_Invensense.cpp.
Referenced by from().
|
overridevirtual |
Implements AP_InertialSensor_Backend.
Definition at line 350 of file AP_InertialSensor_Invensense.cpp.
Referenced by from().
|
private |
Definition at line 112 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), _fifo_reset(), _read_fifo(), _set_filter_register(), start(), and update().
|
private |
Definition at line 118 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), and start().
struct { ... } AP_InertialSensor_Invensense::_accum |
Referenced by _accumulate_sensor_rate_sampling().
|
private |
Definition at line 128 of file AP_InertialSensor_Invensense.h.
Referenced by get_auxiliary_bus(), and ~AP_InertialSensor_Invensense().
|
private |
Definition at line 140 of file AP_InertialSensor_Invensense.h.
Referenced by _set_filter_register(), and start().
|
private |
Definition at line 127 of file AP_InertialSensor_Invensense.h.
Referenced by _block_read(), _fifo_reset(), _hardware_init(), _has_auxiliary_bus(), _read_fifo(), _register_read(), _register_write(), _set_filter_register(), get_auxiliary_bus(), and start().
|
private |
Definition at line 126 of file AP_InertialSensor_Invensense.h.
Referenced by _data_ready(), and _init().
|
private |
Definition at line 134 of file AP_InertialSensor_Invensense.h.
Referenced by _read_fifo(), _set_filter_register(), and start().
|
private |
Definition at line 120 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate_sensor_rate_sampling(), and start().
|
private |
Definition at line 146 of file AP_InertialSensor_Invensense.h.
Referenced by _read_fifo(), start(), and ~AP_InertialSensor_Invensense().
|
private |
Definition at line 137 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate_sensor_rate_sampling(), _set_filter_register(), and start().
|
private |
Definition at line 121 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate_sensor_rate_sampling(), and start().
|
private |
Definition at line 111 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), _fifo_reset(), _read_fifo(), _set_filter_register(), start(), and update().
|
private |
Definition at line 143 of file AP_InertialSensor_Invensense.h.
Referenced by _fifo_reset(), and _hardware_init().
|
private |
Definition at line 131 of file AP_InertialSensor_Invensense.h.
Referenced by _check_whoami(), _hardware_init(), _set_filter_register(), probe(), and start().
|
private |
Definition at line 108 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), and _check_raw_temp().
|
private |
Definition at line 124 of file AP_InertialSensor_Invensense.h.
Referenced by start().
|
private |
Definition at line 122 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), and _accumulate_sensor_rate_sampling().
|
private |
Definition at line 117 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), and update().
Vector3f AP_InertialSensor_Invensense::accel |
Definition at line 153 of file AP_InertialSensor_Invensense.h.
Referenced by AP_InertialSensor_L3G4200D::_accumulate(), and _accumulate().
LowPassFilterVector3f AP_InertialSensor_Invensense::accel_filter {4000, 188} |
Definition at line 156 of file AP_InertialSensor_Invensense.h.
|
private |
Definition at line 30 of file AP_InertialSensor_Invensense.h.
Referenced by get_auxiliary_bus().
|
private |
Definition at line 31 of file AP_InertialSensor_Invensense.h.
uint8_t AP_InertialSensor_Invensense::count |
Definition at line 155 of file AP_InertialSensor_Invensense.h.
Vector3f AP_InertialSensor_Invensense::gyro |
Definition at line 154 of file AP_InertialSensor_Invensense.h.
Referenced by AP_InertialSensor_L3G4200D::_accumulate(), and _accumulate().
LowPassFilterVector3f AP_InertialSensor_Invensense::gyro_filter {8000, 188} |
Definition at line 157 of file AP_InertialSensor_Invensense.h.
const uint16_t AP_InertialSensor_Invensense::multiplier_accel = INT16_MAX/(26*GRAVITY_MSS) |
Definition at line 72 of file AP_InertialSensor_Invensense.h.
Referenced by start().
|
private |
Definition at line 114 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), and start().
|
private |
Definition at line 115 of file AP_InertialSensor_Invensense.h.
Referenced by _accumulate(), _accumulate_sensor_rate_sampling(), and start().