44#define RC_MPU_DEFAULT_I2C_ADDR 0x68
45#define RC_MPU_ALT_I2C_ADDR 0x69
57#define DEG_TO_RAD 0.0174532925199
58#define RAD_TO_DEG 57.295779513
59#define MS2_TO_G 0.10197162129
60#define G_TO_MS2 9.80665
int rc_mpu_read_accel(rc_mpu_data_t *data)
Reads accelerometer data from the MPU.
rc_mpu_orientation_t
Orientation of the sensor.
Definition: mpu.h:137
int rc_mpu_read_mag(rc_mpu_data_t *data)
Reads magnetometer data from the MPU.
struct rc_mpu_data_t rc_mpu_data_t
data struct populated with new sensor data
int rc_mpu_set_dmp_callback(void(*func)(void))
Sets the callback function that will be triggered when new DMP data is ready.
int rc_mpu_is_gyro_calibrated(void)
Checks if a gyro calibration file is saved to disk.
int rc_mpu_read_temp(rc_mpu_data_t *data)
Reads thermometer data from the MPU.
rc_mpu_gyro_fsr_t
gyroscope full scale range options
Definition: mpu.h:83
int64_t rc_mpu_nanos_since_last_dmp_interrupt(void)
calculates number of nanoseconds since the last DMP interrupt
int rc_mpu_block_until_dmp_data(void)
blocking function that returns once new DMP data is available
rc_mpu_gyro_dlpf_t
gyroscope digital low-pass filter options
Definition: mpu.h:119
int64_t rc_mpu_nanos_since_last_tap(void)
calculates nanoseconds since last tap was detected
rc_mpu_accel_fsr_t
accelerometer full scale range options
Definition: mpu.h:69
int rc_mpu_is_mag_calibrated(void)
Checks if a magnetometer calibration file is saved to disk.
int rc_mpu_is_accel_calibrated(void)
Checks if an accelerometer calibration file is saved to disk.
int rc_mpu_initialize_dmp(rc_mpu_data_t *data, rc_mpu_config_t conf)
Initializes the MPU in DMP mode, see rc_test_dmp example.
int rc_mpu_power_off(void)
Powers off the MPU.
int rc_mpu_read_gyro(rc_mpu_data_t *data)
Reads gyroscope data from the MPU.
int rc_mpu_set_config_to_default(rc_mpu_config_t *conf)
Resets a config struct to defaults.
struct rc_mpu_config_t rc_mpu_config_t
configuration of the mpu sensor
int rc_mpu_block_until_tap(void)
blocking function that returns when a tap is detected
rc_mpu_accel_dlpf_t
accelerometer digital low-pass filter options
Definition: mpu.h:99
int rc_mpu_initialize(rc_mpu_data_t *data, rc_mpu_config_t conf)
Sets up the MPU in normal one-shot sampling mode.
rc_mpu_config_t rc_mpu_default_config(void)
Returns an rc_mpu_config_t struct with default settings.
int rc_mpu_set_tap_callback(void(*func)(int direction, int counter))
sets the callback function triggered when a tap is detected
int rc_mpu_calibrate_mag_routine(rc_mpu_config_t conf)
Runs magnetometer calibration routine.
int rc_mpu_calibrate_accel_routine(rc_mpu_config_t conf)
Runs accelerometer calibration routine.
int rc_mpu_calibrate_gyro_routine(rc_mpu_config_t conf)
Runs gyroscope calibration routine.
@ ORIENTATION_Z_UP
Definition: mpu.h:138
@ ORIENTATION_Y_UP
Definition: mpu.h:142
@ ORIENTATION_X_UP
Definition: mpu.h:140
@ ORIENTATION_Z_DOWN
Definition: mpu.h:139
@ ORIENTATION_X_BACK
Definition: mpu.h:145
@ ORIENTATION_X_DOWN
Definition: mpu.h:141
@ ORIENTATION_Y_DOWN
Definition: mpu.h:143
@ ORIENTATION_X_FORWARD
Definition: mpu.h:144
@ GYRO_FSR_2000DPS
Definition: mpu.h:87
@ GYRO_FSR_250DPS
Definition: mpu.h:84
@ GYRO_FSR_1000DPS
Definition: mpu.h:86
@ GYRO_FSR_500DPS
Definition: mpu.h:85
@ GYRO_DLPF_10
Definition: mpu.h:126
@ GYRO_DLPF_184
Definition: mpu.h:122
@ GYRO_DLPF_5
Definition: mpu.h:127
@ GYRO_DLPF_250
Definition: mpu.h:121
@ GYRO_DLPF_OFF
Definition: mpu.h:120
@ GYRO_DLPF_20
Definition: mpu.h:125
@ GYRO_DLPF_92
Definition: mpu.h:123
@ GYRO_DLPF_41
Definition: mpu.h:124
@ ACCEL_FSR_2G
Definition: mpu.h:70
@ ACCEL_FSR_16G
Definition: mpu.h:73
@ ACCEL_FSR_4G
Definition: mpu.h:71
@ ACCEL_FSR_8G
Definition: mpu.h:72
@ ACCEL_DLPF_OFF
Definition: mpu.h:100
@ ACCEL_DLPF_92
Definition: mpu.h:103
@ ACCEL_DLPF_460
Definition: mpu.h:101
@ ACCEL_DLPF_184
Definition: mpu.h:102
@ ACCEL_DLPF_41
Definition: mpu.h:104
@ ACCEL_DLPF_20
Definition: mpu.h:105
@ ACCEL_DLPF_5
Definition: mpu.h:107
@ ACCEL_DLPF_10
Definition: mpu.h:106
configuration of the mpu sensor
Definition: mpu.h:155
rc_mpu_accel_dlpf_t accel_dlpf
internal low pass filter cutoff, default ACCEL_DLPF_184
Definition: mpu.h:169
rc_mpu_orientation_t orient
DMP orientation matrix, see rc_mpu_orientation_t.
Definition: mpu.h:179
int gpio_interrupt_pin
gpio pin, default 21 on Robotics Cape and BB Blue
Definition: mpu.h:159
rc_mpu_gyro_fsr_t gyro_fsr
gyroscope full scale range, default GYRO_FSR_2000DPS
Definition: mpu.h:168
uint8_t i2c_addr
default is 0x68, pull pin ad0 high to make it 0x69
Definition: mpu.h:161
rc_mpu_accel_fsr_t accel_fsr
accelerometer full scale range, default ACCEL_FSR_8G
Definition: mpu.h:167
int show_warnings
set to 1 to print i2c_bus warnings for debug
Definition: mpu.h:162
int dmp_fetch_accel_gyro
set to 1 to optionally raw accel/gyro when reading DMP quaternion, default: 0 (off)
Definition: mpu.h:177
int dmp_interrupt_priority
scheduler priority for DMP interrupt handler and user callback, default 0
Definition: mpu.h:182
int tap_threshold
threshold impulse for triggering a tap in units of mg/ms
Definition: mpu.h:185
int mag_sample_rate_div
magnetometer_sample_rate = dmp_sample_rate/mag_sample_rate_div, default: 4
Definition: mpu.h:184
int dmp_sample_rate
sample rate in hertz, 200,100,50,40,25,20,10,8,5,4
Definition: mpu.h:176
double compass_time_constant
time constant (seconds) for filtering compass with gyroscope yaw value, default 25
Definition: mpu.h:180
int dmp_interrupt_sched_policy
Scheduler policy for DMP interrupt handler and user callback, default SCHED_OTHER.
Definition: mpu.h:181
int dmp_auto_calibrate_gyro
set to 1 to let DMP auto calibrate the gyro while in use, default: 0 (off)
Definition: mpu.h:178
int read_mag_after_callback
reads magnetometer after DMP callback function to improve latency, default 1 (true)
Definition: mpu.h:183
int gpio_interrupt_pin_chip
gpio pin, default 3 on Robotics Cape and BB Blue
Definition: mpu.h:158
int enable_magnetometer
magnetometer use is optional, set to 1 to enable, default 0 (off)
Definition: mpu.h:171
rc_mpu_gyro_dlpf_t gyro_dlpf
internal low pass filter cutoff, default GYRO_DLPF_184
Definition: mpu.h:170
int i2c_bus
which bus to use, default 2 on Robotics Cape and BB Blue
Definition: mpu.h:160
data struct populated with new sensor data
Definition: mpu.h:199
double accel_to_ms2
conversion rate from raw accelerometer to m/s^2
Definition: mpu.h:212
int last_tap_direction
direction of last tap, 1-6 corresponding to X+ X- Y+ Y- Z+ Z-
Definition: mpu.h:221
double dmp_quat[4]
normalized quaternion from DMP based on ONLY Accel/Gyro
Definition: mpu.h:218
int last_tap_count
current counter of rapid consecutive taps
Definition: mpu.h:222
int tap_detected
set to 1 if there was a tap detect on the last dmp sample, reset to 0 on next sample
Definition: mpu.h:220
double accel[3]
accelerometer (XYZ) in units of m/s^2
Definition: mpu.h:202
double fused_quat[4]
fused and normalized quaternion
Definition: mpu.h:227
int16_t raw_gyro[3]
raw gyroscope (XYZ)from 16-bit ADC
Definition: mpu.h:210
double dmp_TaitBryan[3]
Tait-Bryan angles (roll pitch yaw) in radians from DMP based on ONLY Accel/Gyro.
Definition: mpu.h:219
double gyro[3]
gyroscope (XYZ) in units of degrees/s
Definition: mpu.h:203
double fused_TaitBryan[3]
fused Tait-Bryan angles (roll pitch yaw) in radians
Definition: mpu.h:228
double temp
thermometer, in units of degrees Celsius
Definition: mpu.h:205
double compass_heading
fused heading filtered with gyro and accel data, same as Tait-Bryan yaw
Definition: mpu.h:229
double compass_heading_raw
unfiltered heading from magnetometer
Definition: mpu.h:230
double gyro_to_degs
conversion rate from raw gyroscope to degrees/s
Definition: mpu.h:213
double mag[3]
magnetometer (XYZ) in units of uT
Definition: mpu.h:204
int16_t raw_accel[3]
raw accelerometer (XYZ) from 16-bit ADC
Definition: mpu.h:211