ROS – ros_inemo_m1_imu package

The “st_inemo_m1_imu” package is used to interface ROS environment with the inertial board INEMO-M1 Discovery by STMicroelectronics.

The INEMO-M1 is the smallest 9-axis system-on-board (SoB) of the iNEMO module family; it integrates multiple ST sensors with a powerful computational core: a 6-axis geomagnetic module, a 3-axis gyroscope and an ARM Cortex™ M3 32-bit MCU.

The Discovery-M1 based on the INEMO-M1, and including a pressure sensor LPS331AP, represents a complete 10-DoF open platform able to provide fast inertial application development using MEMS sensors and the STM32. The pinout of the two connectors gives a complete set of communication interfaces in a very small size, making the Discovery-M1 a flexible solution for effortless orientation estimation embedded applications.

Discovery M1

INEMO-M1 Discovery

The node communicates with the board using the original Communication Protocol (PDF) made by STMicroelectronics.

Source code

The source code is fully available on Github:


The installation of the package is quite simple:

  1. Goto ROS workspace directory:
  2. Clone the repository:
  3. Back to the main directory of the workspace:
  4.  Compile:


The node is fully compatible with the package “navigation” that allows to MyzharBot to navigate in a map using odometry, inertial and RGB-D information.

The node can be run simply with the following command:

The terminal will be filled with the stream of the inertial data read from the sensors and the pose information calculated by the “iNEMO engine lite sensor fusion algorithm“.

Remember that to access to the virtual COM created by the firmware running on the iNemo-M1, you must change the permission:




One Comment:

  1. Pingback: The ROS section is updated with the node to drive the IMU "iNemo-M1 Discovery" - MyzharBot v3.1.1

Leave a Comment