TinyNav: End-to-End TinyML for Real-Time Autonomous Navigation on Microcontrollers
Paper β’ 2603.11071 β’ Published β’ 1
YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Real-time posture classification, spine risk prediction, and adaptive health coaching using IMU + load cell + thermal sensor fusion.
| # | Feature | Status | Accuracy/Performance |
|---|---|---|---|
| 1 | Real-time posture classification | β | 95.48%+ ML accuracy (ensemble voting) |
| 2 | Long-term spine risk prediction | β | RULA-based + exponential decay accumulator |
| 3 | Personalised sitting behaviour model | β | Learns fatigue onset, break patterns per user |
| 4 | Smart micro-break recommendations | β | Adaptive, score-based urgency (not fixed timer) |
| 5 | Exercise suggestion system | β | 20+ exercises mapped to specific posture issues |
| 6 | Hybrid sensor fusion | β | IMU + load cell + thermal (14-channel fusion) |
| 7 | Fatigue & drowsiness detection | β | CoP variance + micro-movement analysis |
| 8 | Daily/weekly posture score dashboard | β | 0-100 score with hourly breakdown + trends |
| 9 | Injury risk alert system | β | Acute + chronic + trend-based alerts |
| 10 | Cloud integration (AWS IoT Core) | β | MQTT/TLS, DynamoDB, Lambda scoring |
| 11 | Multi-user recognition | β | Weight signature + k-NN (3-shot enrollment) |
| 12 | Gamification system | β | Points, streaks, badges, leaderboard |
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SENSOR LAYER β
β MPU6050 (50Hz) β 4Γ HX711 Load Cells β AMG8833 β
β 6-axis IMU β Weight Distribution β Thermal β
ββββββββββ¬ββββββββββ΄βββββββββββ¬ββββββββββββββ΄βββββββ¬ββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β EDGE INFERENCE (ESP32-S3) β
β Feature Extraction β TFLite INT8 / Random Forest β
β <30ms inference β <50KB model β 14 input channels β
ββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β UART / Local WiFi
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β INTELLIGENCE LAYER (Raspberry Pi) β
β β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β β Ensemble β β RULA Risk β β Fatigue β β
β β Classifier β β Scorer β β Detector β β
β β (98%+ F1) β β (1-7 scale) β β (CoP+IMU) β β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β β User β β Break β β Exercise β β
β β Recognition β β Engine β β Suggester β β
β β (k-NN) β β (Adaptive) β β (Targeted) β β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
β β Spine Risk β β Gamification β β Injury β β
β β Predictor β β Engine β β Alerts β β
β β (Long-term) β β (Points/Bdge) β β (3-tier) β β
β ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ β
ββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββ
β MQTT / TLS
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CLOUD LAYER (AWS) β
β IoT Core β DynamoDB (telemetry) β Lambda (daily scores) β
β β SNS (critical alerts) β S3 (raw data backup) β
β β API Gateway β Dashboard Web App β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
micromlgen β C header for ESP32 (<5KB, <5ms inference)See HARDWARE_BOM.md for complete bill of materials and wiring diagram.
Key sensors:
pip install numpy scipy scikit-learn xgboost tensorflow matplotlib pandas joblib
python -m smart_chair.main
from smart_chair.ml_models.posture_classifier import EnsemblePostureClassifier
from smart_chair.data_collection.synthetic_data_generator import generate_dataset, subject_based_split
dataset = generate_dataset(n_subjects=20, samples_per_posture_per_subject=500)
train, test = subject_based_split(dataset)
clf = EnsemblePostureClassifier()
clf.train(train["imu_data"], train["load_data"], train["labels"],
test["imu_data"], test["load_data"], test["labels"])
clf.save("posture_model.joblib")
smart_chair/
βββ config/settings.py # All system constants and parameters
βββ utils/feature_engineering.py # Feature extraction pipeline (14 channels)
βββ data_collection/
β βββ synthetic_data_generator.py # Physics-based synthetic data
β βββ protocol.py # Real data collection procedure
βββ ml_models/
β βββ posture_classifier.py # Ensemble + MLSTM-FCN classifiers
β βββ spine_risk_predictor.py # RULA scorer + fatigue detector + alerts
β βββ user_recognition.py # Multi-user recognition + personalized model
β βββ break_recommendation.py # Adaptive break engine + exercise suggester
β βββ gamification.py # Points, badges, streaks, leaderboard
βββ cloud/aws_iot_integration.py # MQTT client + AWS infrastructure
βββ firmware/esp32_firmware.ino # ESP32-S3 Arduino firmware
βββ HARDWARE_BOM.md # Parts list + wiring diagram
βββ main.py # System orchestrator (Raspberry Pi)
| Paper | Contribution | ArXiv |
|---|---|---|
| SitPose | Ensemble posture classification (F1=98.2%) | 2412.12216 |
| MLSTM-FCN | Multivariate time series architecture | 1801.04503 |
| FusionActNet | Static/Dynamic dual-expert IMU classification | 2310.02011 |
| SSL-Wearables | Self-supervised pre-training for HAR | 2206.02909 |
| UniMTS | Foundation model for IMU (zero-shot) | 2410.19818 |
| DULA/DEBA | Differentiable ergonomic assessment | 2205.03491 |
| TinyNav | TFLite Micro on ESP32 (<30ms) | 2603.11071 |
| AuthentiSense | Few-shot biometric user authentication | 2302.02740 |
| Edge Impulse | TinyML MLOps platform | 2212.03332 |
MIT License β Free for personal and commercial use.