While testing our updated Attitude and Heading Reference System (AHRS) library with a variety of IMUs, we found that there were not a lot of options for the MPU6500. The most popular library appears to be fastIMU, which supports a LOT of different IMU sensors. Unfortunately for us, this library includes a Quaternion structure which clashes with our Quaternion class in imuTypes. Also, it doesn’t provide a time stamp for each sensor reading which we use when displaying the data using the xIMU3 application. So we decided to publish our own version. The Reefwing MPU-6x00 Library can be downloaded via the Arduino IDE Library Manager or directly from our GitHub Repository.
In an effort to not reinvent the wheel, our library is a fork of the MPU6x00 Library by Simon D. Levy. This is a simple, header-only Arduino library for the InvenSense/TDK MPU6000 and MPU6500 inertial measurement units (IMU) using the SPI bus.
An Arduino Library for the x-IMU3 GUI, IMU Data Visualisation Tool
IMUs with 3 sensors each measuring 3-axes, pump out a lot of data. It can be difficult to work out how your IMU is…
It has been modified to use the Reefwing imuTypes library header to make it compatible with the Reefwing AHRS Library and allow easy graphing of IMU values via the Reefwing xIMU3 data visualisation library. We have also added a method to get the sensor temperature,
imu.getTemp(), since it was already being read when
imu.readSensor() is called. The other methods added include:
bool dataAvailable()— Can be used to poll the IMU and detect if new sensor readings are available. This is useful if you haven’t wired up the IMU interrupt pin.
void getTemp(float & t)— Loads the IMU chip temperature in celsius into t).
void getCalibratedGyro(float & gx, float & gy, float & gz)— Loads the calibrated gyro values for the x, y, and z-axis into gx, gy, and gz. You need to call
void getCalibratedAccel(float & ax, float & ay, float & az)— Loads the calibrated accelerometer values for the x, y, and z-axis into ax, ay, and az. You need to call
BiasOffsets getGyroOffsets()— Returns the x, y…