Skip to content
← All work

P—05 Case study · AI & ML

3D Motion Tracking System

Role

Embedded ML Engineer

Status

completed

Started

Jan 2026

Last activity

Jan 2026

Stack

11 technologies

Overview

End-to-end gesture recognition pipeline for Arduino Nano 33 BLE Sense using TensorFlow Lite Micro. Captures 6-axis IMU data at 100Hz, trains a Keras neural network (714→50→15→4), and deploys quantized TFLite inference in under 2ms on an ARM Cortex-M4 microcontroller with 92% accuracy across 4 gesture classes.

Outcomes

12.3KB

Model Size

<2ms

Inference

92%

Accuracy

7.9%

RAM Used

Impact

  1. 01Deployed full ML model in 12.3KB on ARM Cortex-M4 with only 256KB RAM — 36.5KB to 12.3KB via post-training quantization
  2. 02Achieved <2ms inference latency and 92% accuracy across 4 gesture classes (punch, upper, slash, stab)
  3. 03Built complete embedded ML pipeline: data collection firmware → Keras training → TFLite conversion → Arduino deployment
  4. 04Designed 70% confidence threshold achieving <2% false positive rate with only 7.9% RAM utilization

Features

01

Edge AI on MCU

Full ML inference on ARM Cortex-M4 with 256KB RAM — model compressed to 12.3KB via post-training quantization

02

TFLite Quantization

36.5KB float32 model → 12.3KB int8 quantized — 66% size reduction with <1% accuracy loss

03

6-Axis IMU Fusion

100Hz accelerometer + gyroscope data capture on Arduino Nano 33 BLE Sense with onboard LSM9DS1 sensor

04

2ms Inference

Sub-2ms per inference on Cortex-M4 — model architecture: 714→50→15→4 with int8 quantized operations

05

Data Collection Firmware

Custom Arduino firmware for IMU data capture, labeling, and serial transmission to host for training

06

Confidence Gating

70% confidence threshold eliminates uncertain predictions — <2% false positive rate at only 7.9% RAM utilization

Architecture

Data collection: Arduino Nano 33 BLE Sense captures 6-axis IMU (accelerometer + gyroscope) at 100Hz → serial transmission to host. Training: Python/Keras pipeline normalizes IMU data and trains a 4-layer DNN (714→50→15→4) with ReLU activations and 20% dropout. Deployment: Model converted to TFLite int8 via post-training quantization → flashed to Arduino via Arduino IDE. Inference: TFLite Micro interpreter runs on Cortex-M4 with <2ms latency and 7.9% RAM usage. A 70% confidence threshold gates predictions to minimize false positives.

Stack

PythonTensorFlowKerasTensorFlow Lite MicroArduinoCC++NumPyPandasscikit-learnMatplotlib

Development log

  1. · Started

    Edge AI motion tracking for resource-constrained hardware

    Edge-AI gesture and motion tracking pipeline built for resource-constrained hardware.