Robot Control Library
rc_calibrate_mag.c
/**
* @file rc_calibrate_mag.c
* @example rc_calibrate_mag
*
* @brief runs the MPU magnetometer calibration routine
*
* If the routine is successful, a new magnetometer calibration file
* will be saved which is loaded automatically the next time the MPU
* is used.
*
* @author James Strawson
* @date 1/29/2018
*/
#include <stdio.h>
#include <rc/mpu.h>
#include <rc/time.h>
// bus for Robotics Cape and BeagleboneBlue is 2
// change this for your platform
#define I2C_BUS 2
int main()
{
printf("\n");
printf("This will sample the magnetometer for the next 15 seconds\n");
printf("Rotate the board around in the air through as many orientations\n");
printf("as possible to collect sufficient data for calibration\n");
printf("Press any key to continue\n");
getchar();
printf("spin spin spin!!!\n\n");
// wait for the user to actually start
rc_usleep(2000000);
config.i2c_bus = I2C_BUS;
printf("Failed to complete magnetometer calibration\n");
return -1;
}
printf("\nmagnetometer calibration file written\n");
printf("run rc_test_mpu to check performance\n");
return 0;
}
rc_mpu_config_t rc_mpu_default_config(void)
Returns an rc_mpu_config_t struct with default settings.
int rc_mpu_calibrate_mag_routine(rc_mpu_config_t conf)
Runs magnetometer calibration routine.
void rc_usleep(unsigned int us)
Sleep in microseconds.
configuration of the mpu sensor
Definition: mpu.h:155
int i2c_bus
which bus to use, default 2 on Robotics Cape and BB Blue
Definition: mpu.h:160