Imu#

group drv_imu

Wraps the lis2mdl and lsm6ds drivers in a single API.

Author

Mališa Vučinić malisa.vucinic@inria.fr

Copyright

Inria, 2023

Functions

void imu_init(lis2mdl_data_ready_cb_t lis2mdl_callback, lsm6ds_data_ready_cb_t lsm6ds_callback)#

Initialize the IMU chips.

Parameters:
  • lis2mdl_callback[in] callback pointer invoked whenever LIS2MDL data is ready, can be NULL

  • lsm6ds_callback[in] callback pointer invoked whenever LSM6DS data is ready, can be NULL

float imu_calculate_roll(lsm6ds_acc_data_t *acc_reading)#

Calculate roll angle.

Parameters:
  • acc_reading[in] Raw accelerometer reading struct

Returns:

Roll angle

float imu_calculate_pitch(lsm6ds_acc_data_t *acc_reading)#

Calculate pitch angle.

Parameters:
  • acc_reading[in] Raw accelerometer reading struct

Returns:

Pitch angle

float imu_calculate_uncompensated_heading(lis2mdl_compass_data_t *mag_reading)#

Calculate uncompensated heading.

Parameters:
  • mag_reading[in] Raw magnetometer reading struct

Returns:

Heading angle

float imu_calculate_tilt_compensated_heading(lis2mdl_compass_data_t *mag_reading, lsm6ds_acc_data_t *acc_reading)#

Calculate tilt-compensated heading.

Parameters:
  • mag_reading[in] Raw magnetometer reading struct

  • acc_reading[in] Raw accelerometer reading struct

Returns:

Tilt-compensated heading angle