Skip to content
 
 

Latest commit

 

History

32 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESIBOT: Autonomous Mobile Robot Platform

A comprehensive ROS2-based autonomous mobile robot system combining real-time hardware control, multi-sensor fusion, computer vision, and a modern web-based monitoring dashboard.

Project Overview

ESIBOT is an autonomous mobile robot system developed at ESI (École Supérieure d'Informatique). The platform integrates:

  • Real-time Hardware Control: Direct serial communication with robot motors and actuators
  • Multi-Sensor Fusion: IMU (MPU-6050), Ultrasonic Radar (360°), and encoder odometry
  • Camera Integration: Raspberry Pi camera stream processing with OpenCV
  • Navigation & Localization: TF2-based coordinate frame management and odometry calculation
  • Modern Dashboard: React-based web UI for real-time robot monitoring and control
  • ROS2 Ecosystem: Built on ROS2 Humble for reliability and modularity

Documentation

The full technical report and presentation poster are available in docs/:


System Architecture

┌─────────────────────────────────────────────────────────┐
│                    Web Dashboard (React)                │
│              (Real-time monitoring & control)           │
└──────────────────────┬──────────────────────────────────┘
                       │
        ┌──────────────┼──────────────┐
        │              │              │
   ┌────▼─────┐  ┌────▼────┐  ┌─────▼──────┐
   │ROS Bridge│  │ROS Nodes│  │Launch Files│
   │(WebSock) │  │(Python) │  │            │
   └────┬─────┘  └────┬────┘  └─────┬──────┘
        │             │              │
   ┌────▼─────────────▼──────────────▼────┐
   │          ROS2 Middleware (DDS)       │
   └────┬─────────────┬──────────────┬────┘
        │             │              │
   ┌────▼──┐  ┌──────▼──────┐  ┌───▼────┐
   │Sensors│  │Hardware Ctrl│  │Camera  │
   │       │  │             │  │        │
   ├──────┤  ├─────────────┤  ├────────┤
   │IMU   │  │Motor Driver │  │RPi Cam │
   │Radar │  │Serial Link  │  │OpenCV  │
   │Encode│  │GPIO         │  │Stream  │
   └──────┘  └─────────────┘  └────────┘

Project Structure

ROS2 Workspace: esibot_ws/

esibot_ws/src/
├── esibot_bringup/
│   ├── esibot_driver.py          # Main hardware interface & odometry
│   ├── launch/
│   │   └── esibot_driver.launch.py
│   └── Publishes: /odom, /tf, /battery
│
├── esibot_camera/
│   ├── esircam_node.py            # Raspberry Pi camera stream bridge
│   ├── launch/
│   │   └── esibot_camera.launch.py
│   ├── config/
│   │   └── camera_params.yaml
│   └── Publishes: /camera/image_raw, /camera/compressed
│
├── esibot_sensor/
│   ├── mpu_node.py                # MPU-6050 IMU (Accel + Gyro)
│   ├── encoder_node.py            # Wheel encoder odometry
│   ├── radar_node.py              # 360° Ultrasonic radar
│   ├── radar_node_360.py          # Multi-sensor radar variant
│   ├── mpu_odom.py                # IMU-based odometry fusion
│   ├── launch/
│   │   └── radar.launch.py        # Integrated sensor launch with RViz
│   ├── config/
│   │   ├── esibot_sensor.yaml
│   │   ├── radar_params.yaml
│   │   ├── config.rviz
│   │   └── radar.rviz
│   └── Publishes: /imu, /radar, /odom
│
├── esibot_description/
│   ├── urdf/
│   │   └── esibot.urdf.xacro      # Robot kinematic model
│   ├── launch/
│   │   └── rsp.launch.py          # Robot state publisher
│   └── Publishes: /tf, /joint_states
│
├── esibot_ui/
│   └── dashboard_node.py          # Backend dashboard service (WIP)
│
└── esibot_vision/
    └── vision_node.py             # Computer vision pipeline (WIP)

Hardware Requirements

Component Specification Purpose
Main Controller Raspberry Pi 4 Model B (4/8GB) Main computing unit running ROS 2 (Ubuntu 22.04)
Motor Driver L298N Controls direction and speed of the DC motors
Drive Motors DC Motor (×2) Wheel drive
Caster Wheel Passive caster wheel Chassis support and balance
Servo Motor MG946R (positional) Controls rotation of the ultrasonic sensor array
Sensors MPU-6050 6-axis IMU — linear acceleration and angular velocity
Sensors Ultrasonic Distance Sensor V2 (×4) Measures distance to obstacles (pseudo-LiDAR array)
Sensors Optical Encoders (×2) Measures wheel rotation for odometry
Camera Raspberry Pi Camera Module V2 Live video stream for vision and monitoring
Power Source 3.7V battery cells (×6) 2 sets of 3 cells in series, sets in parallel → 12V
Voltage Regulation DC-DC Buck Converter, 12V → 5/6V (×2) One rail powers the servo, one powers the Pi/encoders/ultrasonics
Voltage Regulation Capacitor, 4700μF/25V Stabilizes voltage and reduces noise
Serial Link USB/UART Hardware communication

Software Prerequisites

System Requirements

  • OS: Ubuntu 22.04+ (ROS2 Humble compatible)
  • ROS2: Humble distribution
  • Python: 3.10+
  • Node.js: 18+ (for dashboard)

Install ROS2 Humble

# https://docs.ros.org/en/humble/Installation.html
sudo apt update
sudo apt upgrade
# [Follow official ROS2 Humble installation guide]

Install Build Tools

sudo apt install -y \
  build-essential \
  cmake \
  git \
  colcon \
  python3-dev \
  python3-pip

Install Runtime Dependencies

sudo apt install -y \
  python3-serial \
  python3-pip \
  rviz2 \
  ros-humble-tf2-ros

pip3 install \
  opencv-python \
  numpy \
  requests \
  mpu6050-raspberrypi \
  RPi.GPIO

Install Dashboard Dependencies

cd dashboard/esibot-ui
npm install

Installation & Setup

1. Clone the Repository

git clone <repository-url> ~/esibot_project
cd ~/esibot_project

2. Set Environment Variables

# Add to ~/.bashrc or ~/.zshrc
export ROS_DOMAIN_ID=10
export ROS_DISTRO=humble

# Source ROS setup
source /opt/ros/humble/setup.bash

3. Initialize ROS2 Workspace

cd esibot_ws
source /opt/ros/humble/setup.bash

Building the Project

Build All Packages

cd esibot_ws
export ROS_DOMAIN_ID=10
colcon build
source install/setup.bash

Build Specific Package

# Example: Build only bringup package
colcon build --packages-select esibot_bringup

# Build with verbose output
colcon build --packages-select esibot_sensor --verbose

Clean Build (if needed)

rm -rf build install log
colcon build

Running Components

Terminal 1: Source Environment

cd ~/esibot_project/esibot_ws
source /opt/ros/humble/setup.bash
export ROS_DOMAIN_ID=10
source install/setup.bash

Launch Robot Driver (Hardware Interface)

ros2 launch esibot_bringup esibot_driver.launch.py

Launch Sensors & Visualization

# With RViz (recommended for development)
ros2 launch esibot_sensor radar.launch.py

# Headless (without RViz)
ros2 launch esibot_sensor radar.launch.py use_rviz:=false

Launch Camera Stream

ros2 launch esibot_camera esibot_camera.launch.py

Launch Robot Description & TF Tree

ros2 launch esibot_description rsp.launch.py

Launch Dashboard UI

cd dashboard/esibot-ui
npm run dev -- --host 
# Dashboard available at http://localhost:5173

Technology Stack

  • Frontend Framework: React 19+
  • Build Tool: Vite
  • Styling: TailwindCSS
  • ROS Integration: ROSlib (WebSocket bridge)
  • Authentication: Supabase Email/Password + Google OAuth
  • Visualization: ROS2D, EaselJS
  • Routing: React Router v7

Team

ESIBOT was developed by a team of Computer Science students (Computer Systems track) at the École Nationale Supérieure d'Informatique (ESI):

BADAOUI Ikram · SAIDI Selma · HIMEUR Idris · DIAR Adem · CHATTAH Salsabila · MARMOUZE Nor Elhouda · BERKAT Cheraz


About

ROS 2 differential-drive robot with SLAM, Nav2 navigation, ultrasonic pseudo-LiDAR, and computer vision. Streams live camera video and is remotely monitored and controlled through a React web dashboard. Built on Raspberry Pi 4.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages