<- Portfolio

TARAF: Trail Recovery and Path Finding System

A GPS-free wearable navigation system for recording and retracing a walked path using a foot-mounted IMU, ESP32 hardware, ESKF-based estimation, computer-vision validation, and offline optimizer tooling.

Intro

TARAF began with a personal question: what would it mean to get lost safely? Modern hikers often rely on GPS, cell service, expensive handheld devices, or subscription-backed navigation tools. Those tools are useful, but they are not always available, affordable, or self-contained.

The project turned that desire to explore into a practical backup navigation system. TARAF records a walked path with a foot-mounted IMU and estimates how to return without relying on external infrastructure.

Purpose

The goal is not to replace GPS everywhere. The goal is to investigate a trusted, self-contained wearable system for moments when GPS-dependent tools become unreliable: dense tree cover, canyons, poor visibility, disconnected terrain, or a dead phone.

A hiker needs to trust the device. That means the project is as much about validation as it is about sensing. Raw IMU integration drifts quickly, so TARAF includes both the embedded sensing system and the tools needed to measure how wrong the estimate is.

System overview

The current system includes:

  • Foot-mounted IMU unit using ESP32-class hardware and a BNO055 IMU
  • Wrist-mounted display concept for return guidance
  • BLE communication between units
  • Path recording and return guidance logic
  • Side-profile computer-vision validation with ArUco markers
  • Offline analysis and optimizer tooling in Python

The estimator pipeline covers calibration, filtering, stride and stance detection, zero-velocity and zero-angular-rate updates, and an Error-State Kalman Filter (ESKF) with quaternion-based attitude representation.

Design decisions

The project was scoped like a product trade study, not just a controls exercise. The Pugh chart kept the early hardware choices tied to practical constraints: low cost, available parts, enough performance for a prototype, and a path toward better sensors later.

DecisionSelected directionWhy it fit the prototypeTradeoff / next step
MCU familyESP32-class boardsCheap, available, BLE-capable, strong enough for logging and first firmwareHigher idle power than low-power MCU families
IMUBNO055Available 9-DoF module with simple integration for a capstone prototypeNot the ideal long-term navigation sensor
ValidationSide-profile ArUco trackingDirect external reference for foot motion during repeatable indoor testsNeeds cleaner trials and more route types
EstimatorESKF with ZUPT/ZARUMatches the foot-mounted inertial navigation problem and gives explicit correction pointsNeeds movement-aware tuning for turns, stops, and curves
OptimizationOffline ML/config searchLets collected trials shape estimator parameters instead of guessingGeneralization depends on better labeled data

Implementation

Embedded platform

The foot unit pairs an ESP32-class microcontroller with a BNO055 IMU. The BNO055 was chosen because it was cheap, available, and practical for a first prototype, not because it is the ideal long-term sensor. The system polls sensor output, timestamps samples, filters duplicate readings, and logs data for estimator development and validation.

I2C was a reasonable prototype bus because the BNO055 output rate was around 100 Hz and the firmware polling was around 175 Hz. The limiting problem was not raw bus speed; it was drift, stance detection, duplicate samples, timing, and whether the estimate matched an external reference. SPI would only become worth the wiring and integration cost if the project moved to a faster or more capable IMU.

Stride detection and ZUPT/ZARU

Zero Velocity Update (ZUPT) and Zero Angular Rate Update (ZARU) are the main drift-suppression mechanisms. During stance phases, the foot is assumed to be briefly stationary, so the estimator can inject a zero-velocity correction and limit accumulated drift.

State estimation

The core estimator is an Error-State Kalman Filter. The current completed work includes the ESKF, ZUPT/ZARU correction logic, and an offline optimizer that tests estimator configurations against collected walking data.

Ground truth

The validation setup uses side-profile computer vision. A large ArUco marker is placed on the right calf while the IMU is mounted on the foot. Camera tracking gives an external reference for the walked trajectory across repeatable tests. The longest indoor test distance so far is 17.27 m.

Movement-aware tuning

The next controls goal is to classify movement segments and select estimator behavior for each segment. A person may be stopped, walking straight, deviating from a straight path, or moving through an arc. TARAF should eventually detect those transitions, use hysteresis to avoid jitter, and build the path from movement-specific blocks.

Technical details

ParameterCurrent notes
MicrocontrollerESP32-class hardware, including Waveshare ESP32-C6 / ESP32-S3 boards to verify
IMUBNO055, used as an available low-cost prototype sensor
IMU outputAbout 100 Hz from the BNO055
PollingAround 175 Hz, with duplicate readings filtered
EstimatorError-State Kalman Filter
Drift correctionZUPT + ZARU
OrientationQuaternion representation
Ground truthSide-profile ArUco + OpenCV validation
Offline MLRandom Forest and SVM experiments in Python
LanguagesC / C++ firmware, Python analysis

The attached poster gives the one-page capstone view of the system for quick scanning. The Pugh chart is included for the design-selection trail behind the embedded and sensor decisions.

Validation

The system has reached an integrated proof-of-concept stage with working sensing, path recording, estimator logic, and validation tooling. The offline optimizer can tune configurations against collected data. Person-specific tests can perform much better than generalized tests, while generalized results are still affected by bad or inconsistent trials.

The most important active work is improving generalization: collecting cleaner movement classes, detecting transitions between movement types, and applying estimator settings that match the kind of motion being measured.

Future work

  • Improve step and stance detection over varied paces
  • Expand tests across straight lines, heading changes, arcs, stops, users, and routes
  • Build movement-specific estimator configurations
  • Explore complementary and particle-filter approaches
  • Replace the BNO055 with a more capable sensor if the project continues
TARAF ESP32 sensor board
BNO055 IMU hardware for the foot unit. The point at this stage is reliable logging for estimator development.