Skip to content

Repository files navigation

Vision-Based Indoor Navigation — iRobot Create 3

An autonomous indoor navigation system for the iRobot Create 3, built using only a single overhead camera and computer vision — no LiDAR, no SLAM. The system detects ArUco markers to compute a homography, converts the maze image into a binary occupancy map, plans an optimal path using a modified A* algorithm, and executes it on the physical robot with real-time bumper-based replanning.

Developed as a group project for the Master's programme in Smart Systems Engineering at Hanze University of Applied Sciences (October 2025).


Team

Developed in collaboration with Reza Rahimi and Rida Karim Kaher as part of the MSc Smart Systems Engineering programme at Hanze University.

My contributions focused on the core algorithmic and software components: image processing pipeline, A* implementation and optimization, path refinement, navigation logic, and robot calibration.


System Overview

Camera Input
    │
    ▼
Undistortion (intrinsics)
    │
    ▼
Homography → Bird's-eye View (ArUco-assisted)
    │
    ▼
Binarization & Morphological Filtering
    │
    ▼
A* Path Planning (clearance + turn penalty)
    │
    ▼
Path Simplification (Douglas–Peucker)
    │
    ▼
Motion Execution (polar coordinates, differential drive)
    │
    ▼
Bumper Feedback → Replan if collision detected

Key Features

  • Homography-based top-down view using 4 ArUco markers at maze corners
  • Robust binarization pipeline — CLAHE contrast enhancement, adaptive thresholding, multi-stage morphological filtering
  • Modified A* algorithm with clearance distance (keeps robot away from walls) and turn penalty (reduces unnecessary direction changes)
  • Path simplification from ~3550 raw A* points to fewer than 20 waypoints using a custom reduction algorithm
  • Polar coordinate path translation — path expressed as (angle, distance) pairs for more reliable robot execution
  • Feedback-based replanning — bumper collision triggers backward movement and full path recomputation

Results

  • Robot successfully navigated the maze in 1 out of 3 complete test runs
  • Each full run took approximately 3 minutes including recovery and replanning intervals
  • A* path reduced from 3550 points → ~17 waypoints after simplification
  • Main challenges: wheel slip accumulation over distance, ArUco marker visibility loss during recovery

Project Structure

robot-navigation-irobot/
│
├── robot_execution_main.py          # Entry point
├── camera_functions.py              # Image capture, undistortion, homography
├── image_processing_functions.py    # Binarization pipeline
├── find_angle.py                    # Robot orientation calculation
├── start_goal_detection.py          # ArUco-based start/goal detection
├── a_star_implementation.py         # Modified A* path planning
├── path_transformation.py           # Path reduction and polar conversion
├── requirements.txt                 # Dependencies
└── README.md

Installation

git clone https://github.com/MostafaJahanian/robot-navigation-irobot.git
cd robot-navigation-irobot
pip install -r requirements.txt

Requirements: opencv-python, numpy, irobot-edu-sdk

pathlib, heapq, and asyncio are part of Python's standard library.


Usage

python robot_execution_main.py

The system will:

  1. Capture the maze image via WiFi camera
  2. Undistort and transform to bird's-eye view
  3. Binarize the image into an occupancy map
  4. Detect start and goal positions from ArUco markers
  5. Plan path using A* with clearance and turn penalty
  6. Simplify and convert path to polar coordinates
  7. Execute motion commands on the robot
  8. Replan automatically upon any bumper collision

Tech Stack

Python OpenCV NumPy iRobot Education SDK asyncio A* Algorithm ArUco Markers Computer Vision


Academic Report

A full technical report covering literature review, methodology, results, and discussion is available in the repository: report.pdf


Author

Mostafa Jahanian LinkedIn · GitHub

About

Autonomous maze navigation for iRobot Create 3 using overhead camera, ArUco markers, A* path planning, and bumper-based replanning.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages