Rogue Navigator implements a behavior-based obstacle avoidance system for a Pioneer P3DX differential-drive robot inside a fully enclosed arena. Built with Python and the CoppeliaSim ZMQ Remote API, the robot navigates a 15m × 15m environment with 32 boundary walls and 38 inner obstacles using a reactive control loop, no map, no sensors, no memory.
The project is inspired by how early game AI works: an agent with no knowledge of its world still needs to keep moving and react to whatever it runs into. The robot detects collisions by monitoring displacement, backs up, picks a random direction, and keeps going.
- Reactive Navigation: Detects obstacles by tracking displacement per control cycle, no proximity sensors required
- Randomized Avoidance: Turn direction and duration are randomized on every obstacle hit to prevent the robot from looping
- Full Arena Enclosure: 32 boundary wall sections cover all four edges with no gaps
- Dense Obstacle Layout: 38 inner walls placed at varied angles create a challenging navigation environment
- Modular Codebase: Scene setup, navigation logic, layout data, and settings are all separated into their own files
- Programmatic Scene Building: The entire arena is constructed through the Python API with no manual scene editing in CoppeliaSim
| Technology | Purpose |
|---|---|
| Python 3 | Control script language |
| CoppeliaSim EDU | Robot simulation environment |
| ZMQ Remote API | Python-to-simulator communication |
| Pioneer P3DX | Differential-drive robot model |
- Python 3.8 or higher
- CoppeliaSim EDU installed on your machine
- ZMQ Remote API client library
git clone https://github.com/krislette/rubutiks.git
cd rubutiks
pip install coppeliasim-zmqremoteapi-client# Make sure CoppeliaSim is open before running
python main.pyThe script will stop any existing simulation, build the scene, and start autonomous navigation. Press Ctrl+C to stop.
Note: Model paths in
robot_sim/config/settings.pypoint to the default CoppeliaSim EDU installation directory on Windows. Update them if your installation path is different.
rubutiks/
├── robot_sim/
│ ├── scene.py # Loads and positions the robot, floors, and walls
│ └── navigation.py # Reactive control loop and obstacle avoidance logic
├── config/
│ ├── settings.py # Model file paths and speed constants
│ └── layout.py # Floor tile positions and wall layout data
├── main.py # Entry point
├── README.md # This one this one this one youre reading it rn
└── requirements.txt # Project requirement package(s) [though just 1 in this case]