EIMU Documentation
Easy IMU (EIMU) User Documentation
Last updated
Easy IMU (EIMU) User Documentation
Last updated
Anyone using an Inertial Measurement Unit (IMU) generally wants it to spit out filtered orientation readings and integrate them into their preferred project(s) without the unnecessary stress and headaches of the mathematics and computational algorithms behind it. This is what the Easy IMU
does.
The Easy IMU
is an easy-to-use Advanced Inertial Measurement Unit (IMU) built on and based on the popular MPU9250 IMU. It consists of the MPU9250 IMU
, an ATmega328 microcontroller computational system
, and a GUI Application
to ease the calibration, reference frame setup (e.g. NED, ENU, or NWU), and filter setup process for the MPU9250 IMU (it uses the Madgwick filter).
It also provides a USB serial and I2C communication interface
with ROS2
, Arduino
, Python
, and Cpp
libraries for easy interfacing with one's preferred project.
The MPU9250 IMU is a widely used Inertial Measurement Unit (IMU) among hobbyists, researchers, engineers, and developers in robotics, drones, virtual reality, augmented reality, and wearable technology. It is renowned for its accuracy, reliability, and affordability, making it a popular choice for projects requiring motion tracking and orientation sensing.
While there are libraries available to assist in using the MPU9250 IMU, common issues encountered with it typically revolve around calibration (especially of the magnetometer), setup, noise filtering, choosing reference frame (e.g. NED
, ENU
, or NWU
reference frame), and seamless integration into preferred projects.
Calibrating its sensors, especially the magnetometer, is usually an issue and can be frustrating as wrong calibration will result in faulty orientation readings. Also, implementing filtering algorithms like the popular Kalman or Madgwick filter to get less noisy filtered orientation readings can be another problem, not to mention choosing a reference frame (e.g. NED
, ENU
, or NWU
reference frame) and trying to add the whole code into your preferred project (which is usually bulky).
Ultimately, anyone using an IMU desires filtered orientation readings, in a preferred reference frame (e.g. NED, ENU, or NWU) without the unnecessary stress and headaches of calibration and noise filtering as well as frame transformation when integrating it into their projects.
The Easy IMU
easily solves and abstracts all these problems so you can focus on using the filtered readings in your projects.
Supply Voltage - 5V (typical)
Low Power Consumption.
Communication Interface - USB Serial
and I2C
It can be configured to use any of the NED
, ENU
, or NWU
Reference Frame.
Easily integrates with ROS2
and Arduino
(as well as Python
and Cpp
) projects.
Orientation
readings (Roll, Pitch, and Yaw) are in radians. It also outputs quaternion orientation readings.
Angular rate
readings are in rad/sec.
Acceleration
readings are in m/s2.
ENU (EAST [+X], NORTH [+Y], UP [+Z]) Frame - Default Frame
Use For Ground Robots - e.g mobile robots, stationary robots, etc.
Use in ROS2 indoor and outdoor ground robotics projects
NWU (NORTH [+X], WEST [+Y], UP [+Z]) Frame
An alternative for use with Ground robots - e.g mobile robots, stationary robots, etc.
NED (NORTH [+X], EAST [-Y], DOWN [-Z]) Frame
Use for Drones or Aircracfts
Education - Teaching IMU concepts, Sensor fusion, and Robotics
Robotics Project (Arduino, ROS2, Python, and C++)
Precise Motion tracking
Drones
GPS Guided systems
Heading reference system
Check out these Github repos of libraries that went a long way in developing the Easy IMU ATmega328 microcontroller computational system
. You can use them in your projects also (Ensure to star them).
Easy calibration
via its GUI application - .
Easy integration with ROS2
(microcomputer or PC) projects with its ROS2 package - .
Easy integration with Arduino
projects with its I2C library - .
Easy integration with a microcomputer-based (Python
or Cpp
) project with its and library.
If you are using Ubuntu 22.04 LTS, you can download the EIMU executable application from
Default ROS2 Frame based on the and Standard.
Can also be configure for ROS2 robotics projects for Drones and outdoor robots (based on the and Standard)
How to use the EIMU with and projects
- Madgwick filter Arduino library based on (and adapted from) the ROS2 Madgwick code by CCNYRoboticsLab, adapted by samuko-things.
- Arduino library that helps you perform vector and matrix operations and transformation with arrays, developed by samuko-things.
- Arduino and CMake library for communicating with the InvenSense MPU-6500, MPU-9250, and MPU-9255 nine-axis IMUs, by Bolder Flight.
- a backend-API-style serial communication code between Pyserial and Arduino that can be adapted to any project, developed by samuko-things.