This project is getting a bit of a rework at the moment. Progress is slowed down because the IMU I got came with chips that didn’t match the description and only do 6-axis sensing :/ I’m working on it in my free time whenever I’m not buried in studies or work.

What is Boulder-IMU?

Boulder-IMU is an experimental project of mine. I aim to develop a lightweight tracking system for movement in 3D-space, particularly bouldering, using conventional IMUs. The system is made up from two distinct parts:

  1. A User interface which allows one to visualize the recorded data and gather metrics about each point in space.

  2. Wearables to be worn, which serve to record movement data with 9-DoF.

Interface showcase

Current State

As of now, the UI is written in the programming language Odin using Raylib, a simple graphics library built on top of OpenGL. The demo above shows the basic functionality already implemented in the Odin based version:

  • 3D rendering
  • point selection (used to infer individual point metrics)
  • adaptive data visualization
  • file imports

Future changes

I’m in the process of rewriting the UI using C++ and Raylib. In addition, my current approach suffers from immense drift (who would’ve thought that). Why? The IMU in use provides 6-DoF: a 3-axis accelerometer measuring linear acceleration and a 3-axis gyroscope measuring angular velocity (roll, pitch and yaw). While this might be sufficient for some applications, it introduces immense drift over time when using simple double integration to calculate position in 3D-space. This becomes even more of a burden combined with rapid movement.

Therefore I’m looking forward to integrate a 9-DoF IMU which would add a 3-axis magnetometer. In addition I plan to introduce a state-space model of the dynamical system which can be combined with a Kalman filter.

\[S := \begin{cases} \dot{x}(t) = f(x(t), u(t),t) \\ y(t) = g(x(t), u(t), t) \end{cases}\]

Rather than relying on double integration of acceleration, which quickly accumulates errors. A state-space model would allow me to describe the system using equations that include both the state (e.g., position, velocity, orientation) and its evolution over time. The Kalman filter is used to fuse sensor data and noise reduction.

Furthermore, I want to introduce live tracking besides pre-recorded file imports.