Inspiration
We took how Strava/AllTrails gave you data based on how your run/hike went and made the opposite - a predictive tool to tell you how your activity is going to go.
What it does
Takes user inputs (age, weight, fitness level, hiking speed) and trail details (distance, elevation gain, difficulty) and uses a machine learning model to predict your estimated time, pace, calories burned, and fatigue score before you start. Optionally, you can enter start/end GPS coordinates and it fetches the actual trail route from OpenRouteServiceAPI, auto-fills distance and elevation, and generates an elevation-vs-time graph showing uphill and downhill sections. The predicted pace is then sent over USB serial to an ESP32-C6 wearable with an OLED screen and vibration motor - during the hike/run it tells you if you're on pace, need to speed up, or slow down with distinct vibration patterns.
How we built it
Built a physics based engine that models pace, energy spent, and fatigue from distance, elevation, difficulty, fitness, and activity type Used that engine to generate 100,000 synthetic hiking/running scenarios as training data Trained a Random Forest regression model to predict time from those scenarios Flask backend serves predictions via a REST API, with hot-reloading so the model can be retrained without restarting the server HTML/CSS/JS frontend sends user inputs to Flask (where the Python calculations are ran) and displays predictions plus the elevation graph OpenRouteService API integration fetches real trail routes with elevation data from GPS coordinates and generates a Matplotlib elevation profile graph (color coded by uphill/downhill) ESP32-C6 (XIAO) wearable with an OLED display and servo motor for vibration, connected over USB serial Receives the target pace from the Flask server and provides real time feedback using GPS based pace comparison and haptic vibration patterns CAD'd and 3d printed frame for electronics
Challenges we ran into
LiPo batteries we had didn't provide enough power to sustain the ESP32, had to engineer a chassis for AA batteries to power our wrist device
Accomplishments that we're proud of
Successfully training a ML model based on functions we created Obtaining accurate results from said model Engineering a comfortable and aesthetic wearable container for our electronics & power source
What we learned
Machine learning Any project you choose will be significantly harder than you expect How to work with external APIs How to connect python scripts to Arduino through USB-C connections
What's next for PaceSetter
Add updated pace based off current slope the user is climbing
- Higher slope = slower expected pace & vice-versa Add LoRa for emergency signals
Log in or sign up for Devpost to join the conversation.