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.
- 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)
- Ismael González Loro (
📄 Full Academic Report: docs/main.pdf | LaTeX Source
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 |
+-------------------+
| 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: |
🎥 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 |
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
- 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
-
Clone the repository:
git clone https://github.com/CoferSamuel/ODFE_robotics.git cd ODFE_robotics -
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)
-
Run the component (with Webots running):
./bin/localiser etc/config