This project is being reworked at the moment. Progress is slowed down because 1. I’m still mostly in the research phase, and 2. the IMU I received is not the one I expected :/ 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. I aim to develop a tracking system for 3D movement, particularly bouldering, using conventional IMUs and video data. The project consists of two distinct parts:

  1. A User interface which allows one to visualize the recorded data and gather various metrics for recorded climbs.

  2. Wearable IMU’s, which serve to record or broadcast movement data with 9-DoF.

and a ton of code which glues everything together :D

Interface showcase

Current State

As of now, a UI is implemented in 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
  • file imports

So far, the focus has primarily been on IMU-based tracking. However, pure IMU-based tracking runs into the well-known drifting problem when trying to reconstruct 3D trajectories from acceleration data.

Future changes

The project is currently being redesigned with a hybrid tracking approach in mind. Instead of relying solely on IMUs, I plan to combine:

  • camera-based pose estimation
  • wearable 9-DoF IMUs
  • a state-space model for the underlying dynamical system and sensor fusion
\[S := \begin{cases} \dot{x}(t) = f(x(t), u(t),t) \\ y(t) = g(x(t), u(t), t) \end{cases}\]

The idea is that the vision system provides global body position data, while the IMUs contribute motion information. This could/should reduce drift and allow more stable 3D trajectory reconstruction. On the implementation side, I also plan to move the project fully to Python, integrating:

  • pose estimation
  • 3D trajectory rendering
  • plotting
  • custom IMU firmware and streaming

using DearPyGui, Raylib Python and Google’s Mediapipe. The long-term goal is to support:

  • live tracking in addition to pre-recorded file imports
  • drift-corrected 3D trajectory reconstruction and
  • comparison between different climbs and climbers