This project presents a maze-solving robot inspired by the Micromouse competition. The robot autonomously navigates and solves mazes using an optimized flood-fill algorithm, tracing the shortest path from start to target in minimum time. The robot logic is implemented in C++ and runs on an Arduino Nano microcontroller, interfacing with infrared sensors and encoder motors for real-time navigation and wall detection.
- Shortest path tracing using optimized
flood-fill
algorithm and from start to target. - Real-time wall detection with three
GP2Y0A41SK0F
infrared sensors. - Precise movement control using encoder motors and PID control
- Custom double-layer PCB designed for compact integration
- EEPROM-based map storage for persistent maze data
- 3D-printed PLA chassis for lightweight and robust structure
- Dynamic path replanning for real-time recovery from new obstacles or sensor inconsistencies
- Microcontroller: Arduino Nano (
ATmega328
) - Sensors: 3×
GP2Y0A41SK0F
sharp infrared sensors - Motors: 2×
N20
6
V500
RPM Encoder Motors - Motor Driver:
TA6586
Dual H-Bridge - Battery: 2×
3.7V
1250
mAh LiPo cells (in series) - Wheels: N20 motor rubber small wheels
- Castor Wheel: N20 castor robot ball wheel
- Custom PCB: Fabricated along with from scratch designing Arduino Nano on
EasyEDA
, integrating all components- With Scratch Arduino Nano - PCB\Gerber_Scratch_nano.zip - Assembeled Arduino Nano - PCB\Gerber_to_assemble_nano.zip
- Custom Chassis: Designed with
Solidworks
, and withPolyLactic Acid
CAD\Assem11 - Copy.SLDASM
- Flood-Fill Algorithm: Optimized for speed and efficiency, with comparison to standard flood-fill for performance gains
- Wall following Algorithm: Tried Basic wall following algorithm based on breadth first search.
- PID Control: Utilizes motor encoder feedback for precise motor control and accurate positioning
- Wall Detection: Real-time distance calculation and alignment using IR sensors
- EEPROM Storage: Maze mapping data stored and updated in Arduino Nano’s EEPROM (1 KB)
- Reset Capability: EEPROM data can be reset for new maze runs
- Wiring: Connect components as per the circuit diagram.
- Programming: Upload the C++ code to the Arduino Nano using Arduino IDE.
- Prof. Soumya Bagchi – Assistant Professor, Department of Physics, IIT ISM Dhanbad
- Palak Kumari – Computer Science & Engineering
- Prasoon Krishna Yadav – Electronics and Communication Engineering
- Prayag Asrani – Mechanical Engineering
- Pratyush Tripathi – Electrical Engineering
- Abhirup Choudhury – Mathematics and Computing
- Micromouse History
- Monk, S. (2012). Programming Arduino: Getting Started with Sketches. McGraw-Hill Education.
- Arduino Nano Datasheet
- IEEE Micromouse History
- Micromouse Maze Solving Algorithm (IEEE)
- Nishi, T., & Yasuda, T. (1990). A study on algorithms for Micromouse competitions. Robotics and Automation Journal.
- Elger, D. (1987). Wall-Following Algorithms for Autonomous Robots. Control Systems Magazine.
- Brooks, R. A. (1986). A robust layered control system for a mobile robot. IEEE Journal of Robotics and Automation.
- Arduino Nano Board Information
- Arduino Nano Pinout
- TA6586 Motor Driver Datasheet
- GP2Y0A41SK0F IR Sensor Datasheet
- Arduino Nano Schematics
- Arduino Nano Eagle File
- Flood Fill Algorithm Comparison
For more details, see the full project report and source files in this repository.