Skip to content
All projects
PathPilot: Autonomous Navigation & Pathfinding System
Web Appcompleted

PathPilot: Autonomous Navigation & Pathfinding System

Sep 20234 months
2 worldsdemonstrated in both simulation and on real hardware, re-planning around obstacles in real time

Overview

PathPilot is where algorithms meet hardware. It plans optimal routes with Dijkstra and A*, then lets you watch and steer the robot from a browser — the map, the planned path, and the obstacles it's reacting to, all in real time. A Flask backend runs the planning and talks to robotics hardware over ROS, while OpenCV turns a camera feed into obstacle data.

Tech Stack

frontend
ReactNext.js
backend
PythonFlask
other
ROSOpenCVDijkstraA*

Challenges

  • Making pathfinding reliable in environments that change while the robot is moving.
  • Visualizing planning and navigation live, without lag, in a browser.
  • Fusing sensor and camera input into obstacle detection the planner can use.
  • Bridging a web stack and real robotics hardware so they speak the same language.

Solution

A* and Dijkstra handle route planning; a React dashboard renders the map and path and lets an operator intervene. Flask executes the algorithms and relays commands to hardware via ROS, while OpenCV processes the camera feed for obstacles — so the system re-plans as the world changes instead of blindly following a stale route.

Outcome

PathPilot navigated complex spaces with minimal hand-holding in both simulation and real-world demos, re-routing on the fly when obstacles appeared. Watching a planned path redraw itself around a surprise obstacle — live, in the browser — was the moment it stopped feeling like a class project.

What I'd do differently

A* and Dijkstra are great on a known grid but struggle with continuous, uncertain spaces. I'd move to sampling-based planners (RRT*) for smoother real-world paths and add a proper localization stack (SLAM) instead of assuming a clean map — the gap between "works in sim" and "works on hardware" was almost entirely localization.

Built with

ReactNext.jsPythonFlaskDijkstraA*ROSOpenCV