Official repository for the "Robotic Systems" course - A comprehensive collection of path planning algorithms and robotic simulation tools.
Authors: Federica Di Dio, Kimberly Caziero (kimberly327 on GitHub)
Questo repository contiene implementazioni di algoritmi fondamentali per sistemi robotici, con particolare focus su:
- Path Planning: Algoritmi per la pianificazione di percorsi in ambienti 2D
- Configuration Space: Gestione delle dimensioni del robot e inflazione degli ostacoli
- Visualizzazione: Strumenti per la rappresentazione grafica degli algoritmi
- Simulazione: Integrazione con Godot per simulazioni robotiche
Contiene le implementazioni principali degli algoritmi robotici:
shape.py: Classi per rappresentare forme geometriche rettangolariPoint: Punti 2D con operazioni matematicheLineSegment: Segmenti di lineaPolygon: Ostacoli rettangolari con algoritmi di contenimento ottimizzaticreate_rectangular_obstacle(): Factory function per creare ostacoli
visibility_graph.py: Implementazione del Visibility Graph Path Planner- Supporto per robot con dimensioni specifiche
- Approccio Configuration Space (C-Space)
- Algoritmo di Dijkstra ottimizzato con tie-breaking
- Visualizzazione interattiva con matplotlib
- Confronto tra robot puntiforme e robot con dimensioni
basic.py: Sistemi dinamici di basecart.py: Modelli per sistemi cart (carrelli)controllers.py: Controllori per sistemi roboticipolar.py: Sistemi in coordinate polaritrajectory.py: Generazione e gestione di traiettorie
dataplot.py: Utilità per plotting e visualizzazione dati
dds.py: Implementazione DDS per comunicazione distribuita
path_control_visibility_graph.ipynb: Jupyter notebook dimostrativo per:- Tutorial interattivo sul Visibility Graph
- Esempi pratici di path planning
- Visualizzazioni step-by-step degli algoritmi
Progetto Godot per simulazioni robotiche interattive:
robot.gd: Script principale del robotBody.gd: Controllo del corpo del robotLeftWheel.gd/RightWheel.gd: Controllo delle ruoteworld.tscn: Scena principale del mondo di simulazionerobot.tscn: Modello del robot/Components/DDS: Integrazione DDS per comunicazione
- Visibility Graph: Algoritmo completo per percorsi ottimali
- Configuration Space: Gestione automatica delle dimensioni del robot
- Visualizzazione Dual: Mostra sia ostacoli fisici che C-Space inflazionato
- Performance Ottimizzate: Algoritmi O(1) per forme rettangolari
- Documentazione Dettagliata: Spiegazioni matematiche e implementative
- Jupyter Notebooks: Tutorial interattivi passo-passo
- Visualizzazioni: Grafici chiari per comprendere gli algoritmi
- Esempi Pratici: Casi d'uso realistici e comparazioni
- Separazione delle Responsabilità: Ogni modulo ha uno scopo specifico
- Riusabilità: Componenti indipendenti e combinabili
- Estensibilità: Struttura che facilita l'aggiunta di nuovi algoritmi
- Type Safety: Type hints complete per debugging efficace
pip install numpy matplotlib jupyterfrom lib.path_planner.visibility_graph import VisibilityGraph
from lib.utils.shape import create_rectangular_obstacle
# Crea ostacoli
obstacles = [
create_rectangular_obstacle(2, 2, 2, 1),
create_rectangular_obstacle(6, 1, 1, 3)
]
# Crea planner con dimensioni robot
planner = VisibilityGraph(obstacles, robot_width=0.8, robot_length=1.0)
# Pianifica percorso
start = (0, 0)
goal = (8, 8)
path, distance = planner.plan_path(start, goal)
# Visualizza risultato
planner.visualize_graph(start, goal)jupyter notebook cart2D/path_control_visibility_graph.ipynb- Apri Godot Engine
- Importa il progetto da
godot/cart2D_no_physics_project/ - Esegui la scena
world.tscn
Ogni modulo include documentazione dettagliata:
/lib/path_planner/DOC.md: Visibility Graph implementation/lib/utils/SHAPE_DOC.md: Shape utilities documentation
Questo repository è ideale per:
- Corsi di Robotica: Material didattico completo
- Ricerca: Base solida per algoritmi avanzati
- Prototipazione: Sviluppo rapido di sistemi di navigazione
- Simulazione: Test di algoritmi in ambiente controllato
- Supporto per ostacoli non rettangolari
- Algoritmi di path planning aggiuntivi (A*, RRT)
- Integrazione con sensori reali
- Estensione a ambienti 3D
Sviluppato per il corso "Robotic Systems" - Focus su algoritmi di path planning e simulazione robotica