ROS2 IMUs - the good, the bad and the ugly

10 views
Skip to first unread message

Sergei Grichine

unread,
Jan 12, 2026, 7:32:13 PM (11 hours ago) Jan 12
to hbrob...@googlegroups.com
About a month ago, I fell into a rabbit hole. While trying to find a ROS 2 driver for a cheap ICM20948 IMU, I made the mistake of looking at the driver code. Well… it looked back at me.

Naturally, I then decided to look at other IMU drivers. Oh boy.

After weeks of polite AI chats, bug chasing, and endless testing, I now have a pretty good idea of what these sensors really are, how to deal with them, and how to make even the most stubborn ones purr like kittens (okay, that last part might be just shameless bragging).

I’ll share my findings later, but in the meantime, if you’re interested, take a look at these short AI-generated essays I requested along the way:

Spoiler: if you want no trouble, use BNO085 and my fork of the driver

Best Regards,
-- Sergei

Michael Wimble

unread,
Jan 12, 2026, 10:50:18 PM (8 hours ago) Jan 12
to hbrob...@googlegroups.com
Gotta love your writing style. “ The ICM-20948 hands it to you… and then sets it on fire. “

On Jan 12, 2026, at 4:32 PM, Sergei Grichine <vital...@gmail.com> wrote:


--
You received this message because you are subscribed to the Google Groups "HomeBrew Robotics Club" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hbrobotics+...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hbrobotics/CA%2BKVXVNa1u6-g-rj-n9mvkO0ASKrAStqMAmM6YoVbxxPP%2BEitQ%40mail.gmail.com.

Sergei Grichine

unread,
12:10 AM (7 hours ago) 12:10 AM
to hbrob...@googlegroups.com
"...The ICM-20948 hands it to you… and then sets it on fire...“

Well, Michael, strictly speaking - we are here for entertainment, not engineering. I am trying, but that's AI who really delivers.

The interesting part is that those essays were generated in the same continuous dialogue which I used for testing and debugging all those mentioned drivers. So, the accumulated prompt was, probably, huge - considering that this is a paid account. And, honestly, I was pleasantly surprised how specific and (mostly) accurate the Iron Brain's hallucinations came out to be. Better than mine for sure. And yes, the ICM20948 was a pain - as the AI eloquently stated for both of us.

Best Regards, 
-- Sergei
   

Stephen Williams

unread,
1:27 AM (5 hours ago) 1:27 AM
to hbrob...@googlegroups.com, Sergei Grichine

Nice.


At CES, I visited the Bosch booth.  They were suggesting these new IMUs:

BMI088 - "High stability and low temperature drifts.  Vibration robustness.  Closed-loop gyroscope."
BMI423 - "Extended measurement range (32g and 4000dps). Integrated feature set for activity tracking, head movement, and UI applications."
BMI563 - "Extended measurement range (32g and 4000dps). Vibration robustness.  Low noise."


Smart sensor: BHI360 - "Integrated sensor fusion software.  Open programmable platform. Low power MCU."

https://www.bosch-sensortec.com/products/smart-sensor-systems/bhi360/

$5.56 for one, $4.22 @ for 100.  Oddly, this one does not support i3c.

"The BHI360 belongs to the BHI family of highly integrated, ultra-low power programmable smart sensor systems. The
BHI360 integrates the Fuser2 processor, which is based on the 32-Bit ARC™ EM4™ floating point RISC processor, an in-
tegrated Inertial Measurement Unit (6DoF IMU) and a powerful Event-Driven Software Framework specifically designed
for signal data processing and comes with pre-installed sensor fusion and other sensor data processing algorithms.
The BHI360 offers two secondary high speed master interfaces with I2C and/or SPI capability, and up to 8 GPIOs which
can be configured in a flexible way (e.g. Chip Select or Interrupt lines). In this way, the BHI360 can be used as a “Sensor
Hub” connected to external sensors and devices, such as magnetic field sensors, pressure sensors and many more.
All sensor data from both integrated MEMS IMU and external sensors can be efficiently integrated, synchronized and
processed by the integrated Fuser2.
The BHI360 is mainly intended to be used as coprocessor, offloading the main CPU from any sensor data processing
related tasks, like sensor fusion, data batching, position tracking, activity recognition and gesture detection with high
precision and low latency while significantly reducing the overall system power consumption. When used as a copro-
cessor, the BHI360 supports a wide variety of host CPU devices, ranging from a small MCU up to multicore application
processors. The BHI360 communicates with the Host CPU through its primary high speed I2C or SPI interface."


Magnetometer: BMM350 - "Unique field shock recovery feature.  High accuracy and ultra-low noise.  Low power consumption."

The thing I am really excited about are the pressure sensors.  More about those later.


One thing that is interesting about these is that they support several communication methods, including I2C, I3C, and SPI.  They can be used with 4 wire daisy chain or even simple trees without termination at high speed supported by newer MCUs.  I3C is the new method:

"I3C (Improved Inter-Integrated Circuit) is a high-speed, low-power, two-wire serial communication interface from the MIPI Alliance for connecting computer chips, acting as a successor to I²C, offering better performance, efficiency, and features like dynamic addressing, while maintaining backward compatibility for legacy I²C devices. It's used in mobile, IoT, and embedded systems for sensor integration and control, combining benefits of I²C and SPI interfaces for simpler, more flexible designs with faster data rates (up to 12.5 MHz SDR) and reduced pin counts. "

I will be looking for MCUs with i3c support from now on.  Many sensors with 2 wires (plus power), simpler wiring, no addressing headaches, at high speed and high frequency sampling.


sdw

Reply all
Reply to author
Forward
0 new messages