Inspiration
A route can look clear on a map and still fail on the ground. Potholes, muddy paths and construction barriers can appear before navigation maps reflect them. These temporary obstacles can turn a short walk into an unexpected detour, especially for people with limited mobility.
We wanted walking routes to respond to changing conditions. Cornell’s campus gave us a focused setting to build and demonstrate ClearPath.
What it does
ClearPath combines a walking map with temporary hazard reports.
Users can search for Cornell landmarks or drop start and destination pins, compare routes and see estimated walking times. Once a route starts, the planner collapses to keep the map visible.
Users can report obstacles, uneven ground or closures. Motion processing identifies impact candidates, while our native mobility bridge analyzes permitted health measurements for changes in walking patterns.
New reports update connected maps and can prompt users to accept or dismiss a detour. Reports gradually lose influence as they age, helping prevent outdated information from permanently affecting routes.
How we built it
We built the interface with JavaScript and Leaflet, using OpenStreetMap data to construct Cornell’s walking network. Our current graph contains 6,008 directed walking edges.
A Node.js backend validates incoming evidence, matches coordinates to nearby paths and broadcasts hazard updates through WebSockets. Dijkstra’s algorithm calculates routes using current edge costs.
Finite hazard penalties decay exponentially:
$$ P(t)=P_0\,2^{-(t-t_0)/T_{1/2}} $$
Here, (P_0) is the initial routing penalty and (T_{1/2}) is its half-life. Hard closures remain impassable until verification or expiry. Walking estimates use physical distance and walking speed, separately from hazard penalties.
Our motion pipeline standardizes samples at 50 Hz and applies rotation, jerk and pulse-width checks.
Capacitor connects the app to native Swift and Kotlin code for motion sensing, HealthKit and Health Connect. Raw health measurements stay on the phone; only derived, location-matched anomalies are submitted. Browser motion samples also undergo processing on the backend.
Challenges we faced
The hardest challenge was interpreting uncertain evidence. A phone bouncing in a bag can resemble an impact, and a person slowing down may simply be navigating a crowd.
Location accuracy creates another difficulty. Distinguishing someone walking through a hazard from someone stepping around it requires more precision than ordinary phone GPS reliably provides. Our spatial analysis leaves uncertain passages inconclusive.
We also worked through asynchronous UI problems. Delayed location responses and route requests could overwrite newer choices. We added cancellation and lifecycle handling, preserved active routes during failed updates, and restored keyboard focus when controls changed.
Accomplishments we're proud of
- Built a working Cornell walking network with 6,008 directed edges.
- Combined manual reporting, motion processing and decaying hazard costs.
- Added live map updates and user-controlled detour proposals.
- Implemented mobile search, independent start/end pins and walking estimates.
- Built native Android and iOS integrations.
- Passed 162 automated tests and Android/iOS build checks.
What we learned
We learned that routing is only part of the problem. A useful system also needs clear uncertainty handling, fresh evidence and understandable recovery when connections fail.
We also learned to separate software validation from real-world validation. Automated tests and successful native builds establish software behavior and compilation. Physical-device sensing and hazard-detection accuracy still require field testing.
What's next for ClearPath
We want to conduct labeled campus walks, measure detection precision and recall, and improve positioning.
We also plan to add persistent storage, stronger report corroboration and mobility-specific routing rules. ClearPath currently demonstrates pedestrian routing. Complete wheelchair accessibility routing remains future work.
Built With
- capacitor
- css
- docker
- esbuild
- githubactions
- healthconnect
- healthkit
- html
- javascript
- kotlin
- leaflet.js
- node.js
- openstreetmap
- render
- swift
- websockets
Log in or sign up for Devpost to join the conversation.