Skip to content

About

Component-based autonomous navigation, room localization, door traversal, and AI semantic mapping for OmniRobot in Webots.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

443 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ODFE_robotics – Component-Based Autonomous Mobile Robotics

RoboComp Simulator Language

This repository contains the software codebase, control algorithms, and academic documentation for the practical projects developed in the Robotics and Advanced Robotics courses at the University of Extremadura (Escuela Politécnica de Cáceres), taught by Prof. Pablo Bustos García.

The codebase implements a complete reactive and deliberative navigation pipeline for the OmniRobot mobile platform in the Webots simulation environment, using Component-Based Software Engineering (CBSE) principles enabled by the RoboComp robotics framework.


🎓 Academic Context

  • Institution: Universidad de Extremadura – Escuela Politécnica de Cáceres (Spain)
  • Degree: Grado en Ingeniería Informática en Ingeniería de Computadores
  • Subject: Robótica y Robótica Avanzada (2025/2026)
  • Instructor: Prof. Pablo Bustos García (RoboLab)
  • Authors:
    • Ismael González Loro (igonzaleoa@alumnos.unex.es)
    • Samuel Corrionero Fernández (scorrion@alumnos.unex.es)
    • José Pulido Delgado (jopulidod@alumnos.unex.es)

📄 Full Academic Report: docs/main.pdf | LaTeX Source


🏛 System Architecture & CBSE Paradigm

The software follows a modular Component-Based Software Engineering (CBSE) architecture. Individual software components communicate asynchronously or synchronously using Ice (Internet Communications Engine) middleware and RoboComp interface definitions (IDSL / CDSL).

               +-------------------+
               |  Lidar3D Sensor   |
               +---------+---------+
                         | (3D Point Cloud)
                         v
+--------------+   +-----+------+   +-------------------+
|  OmniRobot   |<--| Webots     |<--| Chocachoca /      |
|  (Actuators) |   | Bridge     |   | Localiser / FSM   |
+--------------+   +-----+------+   +---------+---------+
                         ^                    |
                         | (Manual Override)  v
               +---------+---------+   +------+------------+
               | JoystickPublish   |   | Aspirator GUI     |
               +-------------------+   | Telemetry Metrics |
                                       +-------------------+

🚀 Projects & Activities Overview

Activity Component Description & Key Algorithms Video Demos
Activity 1 1_chocachoca Sweeping Robot: Reactive floor coverage algorithm using a 4-state FSM (SPIRAL, TURN, FORWARD, FOLLOW_WALL) with 2-stage LiDAR filtering and linear braking laws. -
Activity 2 2_localiser Geometry-Based Localiser: $SE(2)$ rigid pose correction in rectangular rooms using RANSAC line extraction, Hungarian corner association, and SVD linearized least-squares solving. 🎥 Video (Local) | ☁️ Drive
Activity 3 3_multiRoom Visually-Guided Door Traversal: Autonomous door detection and multi-room crossing using dot-product orientation ambiguity resolution, sticky world targets, and a Gaussian-modulated motion controller. 🎥 Video (Local) | ☁️ Drive
Activity 4 4_multiroom_advanced Multi-Room Autonomous Navigation & AI: Ultra-Localiser with 200-hypothesis grid search, real-time Topological Graph mapping, priority door selection, and PyTorch CNN MNIST room digit recognition. 🎥 Video (Local) | ☁️ Drive

📂 Repository Structure

ODFE_robotics/
├── docs/                        # Complete IEEE academic paper and media
│   ├── main.pdf                 # Compiled IEEE conference paper
│   ├── main.tex                 # LaTeX source file
│   └── multimedia/              # Experimental plots, diagrams, and video files
│       ├── task2/localiser_demo.mp4
│       ├── task3/multiroom_simulation.mp4
│       └── task4/multiroom_simulation.mp4
│
├── tasks/                       # Core course activities
│   ├── 0_pretasks/              # Initial RoboComp & Qt introductory exercises
│   ├── 1_chocachoca/            # Activity 1: Reactive sweeping robot
│   ├── 2_localiser/             # Activity 2: Geometry-based room localiser
│   ├── 3_multiRoom/             # Activity 3: Single-door room crossing
│   └── 4_multiroom_advanced/    # Activity 4: Multi-room topological graph & AI
│
└── others/                      # Utilities & startup scripts
    └── initializeComponents/    # Automated component launch configuration

🛠 Technology Stack & Tools

  • Operating System: Ubuntu Linux 22.04 LTS
  • Programming Languages: C++23, Python 3.10
  • Frameworks & Libraries:
    • RoboComp: Component middleware and IDSL generation tools.
    • Webots 2023+: Professional 3D mobile robot simulator.
    • Qt6: Real-time Graphical User Interfaces (GUI) and event management.
    • Eigen3: High-performance matrix manipulation and linear solvers (SVD).
    • OpenCV 4: Color space conversion and contour segmentation.
    • PyTorch: Deep learning inference engine for MNIST digit recognition.
  • Build System: CMake $\ge 3.16$ & Make

⚡ Quick Start & Execution

  1. Clone the repository:

    git clone https://github.com/CoferSamuel/ODFE_robotics.git
    cd ODFE_robotics
  2. Build a specific activity (e.g., Activity 2 Localiser):

    cd tasks/2_localiser
    cmake -B build -DCMAKE_BUILD_TYPE=Release
    make -C build -j$(nproc)
  3. Run the component (with Webots running):

    ./bin/localiser etc/config

About

Component-based autonomous navigation, room localization, door traversal, and AI semantic mapping for OmniRobot in Webots.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages