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] avecThree dimensional acceleration vector
◆ sl_imu_get_orientation()
| void sl_imu_get_orientation | ( | int16_t |
ovec[3]
|
) |
Retrieve the processed orientation data.
- Parameters
-
[out] ovecThree dimensional orientation vector
◆ sl_imu_get_gyro()
| void sl_imu_get_gyro | ( | int16_t |
gvec[3]
|
) |
Retrieve the processed gyroscope data.
- Parameters
-
[out] gvecThree 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] acorrThree dimensional gyro correction angle vector
◆ sl_imu_configure()
| void sl_imu_configure | ( | float |
sampleRate
|
) |
Configure the IMU.
- Parameters
-
[in] sampleRateThe 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] avecThree 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] gvecThree 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