PythonSignal ProcessingEmbedded SystemsMachine LearningData AnalysisMicroPythonSwift

Skiing IMU Data Analysis

Building a custom skiing motion sensor and analysis pipeline from scratch

2026
6 min read
Skiing IMU Data Analysis
PythonSignal ProcessingEmbedded SystemsMachine LearningData AnalysisMicroPythonSwift

Skiing IMU Data Analysis

Overview

This project focuses on building a skiing motion analysis pipeline completely from scratch. The idea started with the question of whether skiing technique and movement patterns could be captured using a custom-built inertial measurement unit (IMU) sensor setup and later analyzed using signal processing and machine learning methods.

The project combines several areas that I wanted to explore more deeply:

  • ·embedded systems
  • ·sensor fusion
  • ·IMU data processing
  • ·signal analysis
  • ·unsupervised learning
  • ·data visualization
  • ·sports analytics

The system consists of:

  1. ·a custom-built physical skiing sensor
  2. ·firmware running directly on the microcontroller
  3. ·data logging infrastructure
  4. ·a tracking and labeling application
  5. ·a future machine learning pipeline for automated analysis

The long-term goal is to automatically identify skiing patterns, label skiing data, and eventually provide insights into skiing technique, movement quality, and performance optimization.


Motivation

I have always enjoyed skiing and found it interesting how much information is hidden in body movement and ski dynamics. At the same time, I wanted to explore embedded systems and sensor-based machine learning projects beyond purely software-focused work.

Instead of only using existing smartwatch or phone sensors, I wanted to build a dedicated skiing sensor from scratch and fully understand:

  • ·how IMUs behave
  • ·how sensor fusion works
  • ·how noisy real-world data looks
  • ·how embedded logging systems are designed
  • ·how motion patterns can be extracted from raw signals

Another motivation was understanding how difficult real-world ML data collection actually is. Collecting usable sensor data, synchronizing timestamps, calibrating sensors, and obtaining labels turned out to be significantly more challenging than training the actual models.

The project also became an opportunity to combine multiple technical areas into one larger system:

  • ·hardware
  • ·firmware
  • ·signal processing
  • ·mobile tracking
  • ·machine learning
  • ·visualization

Technical Approach

The project follows an end-to-end pipeline:

  1. ·collect skiing motion data using a custom IMU logger
  2. ·store high-frequency sensor data on-device
  3. ·synchronize and label skiing sessions
  4. ·preprocess and analyze signals
  5. ·extract movement features
  6. ·experiment with unsupervised learning approaches
  7. ·eventually generate skiing feedback and visualizations

The physical sensor setup is based on:

  • ·RP2350-Zero microcontroller
  • ·BNO055 9-axis IMU
  • ·MicroSD storage
  • ·USB-C battery pack

The firmware is written in MicroPython and records:

  • ·Euler orientation
  • ·quaternions
  • ·acceleration
  • ·angular velocity
  • ·gravity vectors
  • ·calibration information

The logger samples data at 50 Hz and stores timestamped CSV sessions directly to the SD card.

In parallel, I created a lightweight Swift tracking application that allows runs to be timestamped and labeled manually after skiing sessions. These labels are intended to bootstrap later machine learning experiments.

Architecture

The project intentionally separates:

  • ·data collection
  • ·labeling
  • ·processing
  • ·modeling

to allow experimentation with different analysis approaches later.


Challenges

One of the biggest challenges was realizing how difficult real-world sensor data collection actually is.

Unlike clean benchmark datasets, skiing data introduces:

  • ·vibration
  • ·inconsistent movement
  • ·calibration drift
  • ·timestamp synchronization issues
  • ·environmental noise
  • ·missing labels

Building reliable hardware also turned out to be more difficult than expected. Small issues such as:

  • ·unstable jumper wires
  • ·SD card formatting
  • ·SPI timing problems
  • ·IMU calibration
  • ·power stability

could easily break the logging pipeline.

Another major challenge was designing a data labeling workflow. Since no labeled skiing dataset exists for the exact setup, I needed to create my own process for annotating skiing runs. The Swift application was created primarily to bootstrap this labeling process.

The project also highlighted an important machine learning challenge: obtaining high-quality labels is often significantly harder than training the models themselves.


System Design

The system consists of several independent layers.

Embedded Hardware Layer

The physical logging device contains:

  • ·RP2350 microcontroller
  • ·BNO055 9-axis IMU
  • ·SD card module
  • ·portable power supply

The firmware handles:

  • ·sensor initialization
  • ·health checks
  • ·calibration monitoring
  • ·50 Hz sampling
  • ·CSV logging
  • ·error recovery

Logging Pipeline

Data Collection

The logger records:

  • ·acceleration
  • ·gyroscope values
  • ·gravity vectors
  • ·orientation
  • ·quaternion rotation
  • ·calibration state

All sessions are timestamped and stored directly on the SD card.

Labeling Workflow

A Swift application allows:

  • ·tracking skiing sessions
  • ·attaching timestamps
  • ·manually labeling runs
  • ·creating initial training labels

These labels later become input for:

  • ·clustering
  • ·anomaly detection
  • ·movement segmentation
  • ·skiing technique analysis

Future ML Pipeline

The current long-term idea is:

  1. ·manually label a subset of runs
  2. ·train unsupervised or semi-supervised models
  3. ·automatically cluster skiing patterns
  4. ·generate interpretable skiing insights

Potential future approaches include:

  • ·clustering algorithms
  • ·temporal segmentation
  • ·sequence models
  • ·anomaly detection
  • ·representation learning

Future Improvements

There are many possible future directions for the project.

Hardware Improvements

  • ·smaller PCB-based design
  • ·waterproof enclosure
  • ·improved battery integration
  • ·higher-frequency sampling
  • ·wireless synchronization

Signal Processing

  • ·improved filtering
  • ·better drift correction
  • ·dynamic segmentation
  • ·automatic turn detection

Machine Learning

  • ·automated run labeling
  • ·skiing-style classification
  • ·anomaly detection
  • ·skill estimation
  • ·representation learning on time-series data

Visualization

  • ·interactive dashboards
  • ·skiing replay visualizations
  • ·run comparison tools
  • ·movement heatmaps

Mobile Integration

  • ·live Bluetooth streaming
  • ·automatic session synchronization
  • ·mobile analytics

One particularly interesting long-term direction would be building a system that not only visualizes skiing data but also provides actionable feedback about skiing technique and movement efficiency.