imusensor 2.0 — slightly new approach
It all started in 2019 when we traveled to Mysore for a hackathon. My friend and I were both passionate about hardware development, so we…
It all started in 2019 when we traveled to Mysore for a hackathon. My friend and I were both passionate about hardware development, so we decided to tackle a common issue: poor posture among software professionals who spend long hours sitting. Me being one of those software engineers who would just sit long hours, I was more involved with the issue.
Our idea was simple — use a couple of accelerometers along the back to estimate posture and provide feedback. We assumed we could build a prototype overnight, and we made decent progress — enough to win the hackathon and take home some cash. Encouraged by the initial success, we decided to develop the idea into a full-fledged product. However, we underestimated the challenges ahead, especially since I lacked experience in building hardware. Looking back, I now recognize some fundamental mistakes that were not obvious at the time.
We experimented with different placements for the IMUs along a shirt. One of my key mistakes was sticking to the commonly available MPU9250 breakout board. I chose this sensor because it has a wide community support and, honestly, I was intimidated by the idea of reading a new sensor’s datasheet and implementing communication from scratch.
At my current company (CNH), we develop software for custom hardware, specifically for our use case. I’ve learned that a common industry practice — one I didn’t initially realize — is to start with the highest-quality hardware available, even if it’s expensive. This approach removes noise from the equation and allows us to focus on validating the use case. Once the use case is proven, the next step is determining whether the same goal can be achieved with lower-resolution or noisier sensors. And also the initial work with expensive sensors always sets a good benchmark.
In retrospect, I took a bottom-up approach: I picked a cheap sensor first and then tried to make it work for our use case. This led to numerous challenges, the first of which was dealing with sensor noise. As a result, I ended up developing a small IMU sensor library to obtain solid orientation data from the MPU9250. The library turned out to be useful for others as well — or at least I hope so. Even with some sensor fusion algorithms, the IMU still had problems like drift over a long-term time frame. And the magnetometer values were a lot more susceptible to interference from environments.
Though the library was decent enough, validating the posture-tracking use case was still a long way off. Meanwhile, life happened — I moved to a different country, started my master’s, and the project gradually became one of many that were archived. I tried maintaining it from time to time but didn’t do enough.
Hence, the restart.
A friend of mine has been sharing some inspiring articles about people building innovative projects, and he managed to convince me to rekindle my old passions (what an annoying but well-meaning friend, right?). This time, I want to focus on sports technology. Why sports? Because I occasionally do triathlons, and if I can build something useful for myself, I’ll be more motivated to see it through. There’s nothing better than being the user of what I create. The feedback loop is much shorter.
Before diving into new projects, firstly, I want to fix some bugs in the IMU sensor library and give it a small upgrade. I also purchased a variety of IMU sensors in India(sensors are super cheap in India), in case I decide to expand support for different breakout boards — some of which outperform the old MPU9250 sensor.

Now, onto building something cool for triathletes. The ideas mostly came from swimming. When I was in India, I was trying to correct some of my dad’s techniques(he recently started learning swimming) on swimming. Recording on camera was not allowed in the pool, due to privacy. Maybe IMUs could help in that situation. Here are some key questions I want to explore:
- Can a sensor track hand movement in swimming? My left arm often falls out of sync and this happens after around 1km into swimming. so something that can track for a longer duration.
- Can I use a sensor to detect when my legs aren’t kicking enough or when they are sinking?
- Can I determine if my right leg is doing more work while cycling?
- Can I ensure my upper body maintains the correct posture while cycling?
Running already has plenty of sensor-based solutions, so I’ll tackle that later.
One company that stands out in this space is MbientLab, which offers high-quality IMU sensors in compact packages. They cost around $110 each, compared to $10 for a standard breakout board sensor. However, as I’ve learned, validating the use case comes first — so I’ll start with the best sensors available and go from there.