About the project
The Warehouse Robot Management System simulates a mixed fleet moving across an N×N warehouse floor. Every robot has a start cell and a goal cell, and a central planner moves all robots one step at a time until each one reaches its goal without two robots occupying the same space.
Robot types
- Humanoid and Driver are ground robots and share the floor.
- Quadrotor is aerial. It flies in its own layer, so it only conflicts with other quadrotors.
How a step works
- Plan: each robot picks the next cell toward its goal, closing the X gap first, then Y.
- Detect: two robots in the same layer that want the same cell are in conflict.
- Resolve: the robot closer to its goal (Euclidean distance) goes; the other waits. Ties are a coin flip.
- Apply: all moves happen at once, then the next step begins.
Repo rules vs Safer rules
- Repo rules match the Python code. Pairs are checked once, so a yield can create a new conflict that goes unseen, and robots parked on their goals can block others forever.
- Safer rules re-check until no conflicts remain, catch head-on swaps, and let blocked robots sidestep or plan a path around parked robots.
Reading the log
- DETECT a conflict was found. YIELD, SIDESTEP, REROUTE, DETOUR show how it was handled.
- CRASH two robots ended up in the same cell or passed through each other.
- DEADLOCK no robot could move for 6 steps.
Built with Python, object-oriented design and matplotlib in the original repo. This page runs the same planner in the browser.