IMU - Inertial Measurement Unit
Description
Inertial Measurement Unit driver.
IMU example code
Basic example for looping measurement of orientation data:
#include "sl_imu.h" int main( void ) { ... int16_t o_vec[3]; sl_imu_init(); // Configure sample rate sl_imu_configure(10); // Recalibrate gyro sl_imu_calibrate_gyro(); while (true) { sl_imu_update(); while (!sl_imu_is_data_ready()) { // wait } sl_imu_get_orientation(o_vec); ... } }
Modules | |
Direction Cosine Matrix | |
Unit DCM matrix related routines. | |
IMU Fusion | |
IMU fusion driver. | |
Vector and Matrix Math | |
Inertial measurement unit fusion driver math routines. | |
Functions | |
sl_status_t | sl_imu_init (void) |
Initialize and calibrate the IMU chip. | |
sl_status_t | sl_imu_deinit (void) |
De-initialize the IMU chip. | |
uint8_t | sl_imu_get_state (void) |
Return IMU state. | |
void | sl_imu_update (void) |
Get a new set of data from the accel and gyro sensor and updates the fusion calculation. | |
void | sl_imu_reset (void) |
Reset the fusion calculation. | |
void | sl_imu_get_acceleration (int16_t avec[3]) |
Retrieve the processed acceleration data. | |
void | sl_imu_get_orientation (int16_t ovec[3]) |
Retrieve the processed orientation data. | |
void | sl_imu_get_gyro (int16_t gvec[3]) |
Retrieve the processed gyroscope data. | |
sl_status_t | sl_imu_calibrate_gyro (void) |
Perform gyroscope calibration to cancel gyro bias. | |
void | sl_imu_get_gyro_correction_angles (float acorr[3]) |
Retrieve the processed gyroscope correction angles. | |
void | sl_imu_configure (float sampleRate) |
Configure the IMU. | |
bool | sl_imu_is_data_ready (void) |
Check if new accel/gyro data is available for read. | |
void | sl_imu_get_acceleration_raw_data (float avec[3]) |
Retrieve the raw acceleration data from the IMU. | |
void | sl_imu_get_gyro_raw_data (float gvec[3]) |
Retrieve the raw gyroscope data from the IMU. | |
State Definitions | |
#define | IMU_STATE_DISABLED 0x00 |
The IMU is disabled | |
#define | IMU_STATE_READY 0x01 |
The IMU is fully configured and ready to take measurements | |
#define | IMU_STATE_INITIALIZING 0x02 |
The IMU is being initialized | |
#define | IMU_STATE_CALIBRATING 0x03 |
The IMU is being calibrated | |
Function Documentation
◆ sl_imu_init()
sl_status_t sl_imu_init | ( | void |
| ) |
Initialize and calibrate the IMU chip.
- Returns
- Returns zero on OK, non-zero otherwise
◆ sl_imu_deinit()
sl_status_t sl_imu_deinit | ( | void |
| ) |
De-initialize the IMU chip.
- Returns
- Returns zero on OK, non-zero otherwise
◆ sl_imu_get_state()
uint8_t sl_imu_get_state | ( | void |
| ) |
Return IMU state.
- Returns
- IMU state
◆ sl_imu_update()
void sl_imu_update | ( | void |
| ) |
Get a new set of data from the accel and gyro sensor and updates the fusion calculation.
◆ sl_imu_reset()
void sl_imu_reset | ( | void |
| ) |
Reset the fusion calculation.
◆ sl_imu_get_acceleration()
void sl_imu_get_acceleration | ( | int16_t | avec[3] | ) |
Retrieve the processed acceleration data.
- Parameters
-
[out] avec
Three dimensional acceleration vector
◆ sl_imu_get_orientation()
void sl_imu_get_orientation | ( | int16_t | ovec[3] | ) |
Retrieve the processed orientation data.
- Parameters
-
[out] ovec
Three dimensional orientation vector
◆ sl_imu_get_gyro()
void sl_imu_get_gyro | ( | int16_t | gvec[3] | ) |
Retrieve the processed gyroscope data.
- Parameters
-
[out] gvec
Three dimensional gyro vector
◆ sl_imu_calibrate_gyro()
sl_status_t sl_imu_calibrate_gyro | ( | void |
| ) |
Perform gyroscope calibration to cancel gyro bias.
- Return values
-
SL_STATUS_OK
◆ sl_imu_get_gyro_correction_angles()
void sl_imu_get_gyro_correction_angles | ( | float | acorr[3] | ) |
Retrieve the processed gyroscope correction angles.
- Parameters
-
[out] acorr
Three dimensional gyro correction angle vector
◆ sl_imu_configure()
void sl_imu_configure | ( | float | sampleRate | ) |
Configure the IMU.
- Parameters
-
[in] sampleRate
The desired sample rate of the acceleration and gyro sensor
◆ sl_imu_is_data_ready()
bool sl_imu_is_data_ready | ( | void |
| ) |
Check if new accel/gyro data is available for read.
- Returns
- True if the measurement data is ready, false otherwise
◆ sl_imu_get_acceleration_raw_data()
void sl_imu_get_acceleration_raw_data | ( | float | avec[3] | ) |
Retrieve the raw acceleration data from the IMU.
- Parameters
-
[out] avec
Three dimensional raw acceleration vector
◆ sl_imu_get_gyro_raw_data()
void sl_imu_get_gyro_raw_data | ( | float | gvec[3] | ) |
Retrieve the raw gyroscope data from the IMU.
- Parameters
-
[out] gvec
Three dimensional raw gyro vector
Macro Definition Documentation
◆ IMU_STATE_DISABLED
#define IMU_STATE_DISABLED 0x00 |
The IMU is disabled
◆ IMU_STATE_READY
#define IMU_STATE_READY 0x01 |
The IMU is fully configured and ready to take measurements
◆ IMU_STATE_INITIALIZING
#define IMU_STATE_INITIALIZING 0x02 |
The IMU is being initialized
◆ IMU_STATE_CALIBRATING
#define IMU_STATE_CALIBRATING 0x03 |
The IMU is being calibrated