Autonomous Mobile Robot

A ROS2-powered mobile robot designed to navigate maze-like environments, detect thermal sources, and perform targeted engagement tasks.

Watch Demo

The Challenge

Problem Definition

This project simulates a thermal response scenario where an autonomous robot must navigate a new foreign enviroment, identify "hot" targets, and engage them. The system operates under strict time, power, and processing constraints, requiring a fully integrated solution for exploration, detection, and action.

Mission Objectives

The robot must autonomously map the environment, detect and localize multiple heat sources using thermal and LiDAR data, and then navigate to each source to perform a targeted launch, all within a 25-minute window.

Diagram of the maze environment

Core Capabilities

Autonomous Exploration & SLAM

Utilizes the ROS2 Nav2 stack and frontier exploration to independently map unknown environments and build a real-time occupancy grid.

Real-time Mapping Visualization

Thermal Source Detection

Employs dual AMG8833 thermal cameras and KMeans clustering to detect, fuse, and localize distinct heat sources in the environment.

Heat Source Clustering Visualization

Ramp Detection via IMU

IMU detects steep ramps; robot cancels path, backs off, and marks the area to avoid unsafe traversal.

IMU Ramp Detection

Targeted Engagement

After mapping, the robot navigates to each heat source, aligns itself, and activates a dual-flywheel launcher to accurately fire a projectile.

Projectile Launch Mechanism

Software Architecture

The Global Controller

The `GlobalController` node is the brain of the robot, responsible for high-level decision-making and subsystem coordination.

  • State Management: Manages the robot's operational state (e.g., `Initializing`, `Exploratory_Mapping`) using a Python Enum for robust, predictable behavior.
  • Sensor Integration: Subscribes to LiDAR, IMU, odometry, and thermal data to build a comprehensive world model.
  • Action Client: Interfaces with the Nav2 server to send navigation goals and monitor their execution status.

Multi-Threaded Execution

A multi-threaded design ensures the robot remains responsive by handling tasks concurrently without blocking.

  • Fast Loop (10 Hz): A high-frequency timer for real-time sensor checks, such as IMU interrupt detection for hazards like ramps.
  • Control Loop (1 Hz): A slower loop for deliberate actions like finding the next frontier or sending a navigation goal.
  • Background Tasks: A thread pool offloads heavy computations like occupancy grid processing, keeping the main loops free.

Technology Stack

  • ROS2 Humble
  • Python
  • C++
  • Nav2 Stack
  • SLAM
  • Gazebo
  • RViz
  • tf2_ros
  • scikit-learn (KMeans)
  • NumPy
  • Live Gameplay

    See It In Action

    This video demonstrates the final hardware in action. Watch as four players navigate the map, drop bombs, and compete in real-time. The demo highlights the fluid animation, responsive controls, and the successful implementation of the multiplayer UART link.

    Watch Demo (2 mins)↗