Descrizione breve: Simulazione di robot mobile per scenari di search & rescue post-terremoto sviluppata in Unity3D con ML-Agents.
Tagline: Dal disastro virtuale alla resistenza artificiale.
ResQBot è un progetto sviluppato con Unity3D e il pacchetto ML-Agents per simulare missioni di salvataggio urbano post-terremoto.
Il robot (agente RL) deve:
- esplorare la mappa generata proceduralmente,
- evitare macerie e ostacoli,
- raggiungere i civili e portarli in salvo nella safe zone (ospedale).
L’agente è addestrato tramite reinforcement learning.
Le operazioni di search and rescue sono fondamentali in contesti post-catastrofe.
Scopo del progetto è addestrare un agente autonomo a:
- trovare e attivare civili dispersi,
- condurli in sicurezza alla safe zone,
- completare la missione evitando collisioni.
- Robot ResQBot: prefab posizionato davanti alla caserma dei vigili del fuoco.
- Persone da salvare: spawnate in punti casuali, seguono il robot dopo l’attivazione.
- Ostacoli e macerie: prefab randomici (barriere, detriti, bidoni), collisione → fallimento.
- Barriere di confinamento: “muri invisibili” per vincolare la navigazione.
Uno script EnvironmentGenerator.cs:
- genera dinamicamente persone e ostacoli,
- applica regole di distanza minima e validazione su NavMesh,
- assicura che ogni episodio sia risolvibile (robot può raggiungere tutti i civili e condurli alla safe zone).
- Stato iniziale Idle, attivazione tramite trigger collider quando il robot si avvicina.
- Modalità Follow con offset casuali per evitare accodamenti.
- Arresto definitivo in safe zone.
- TargetSelector: sceglie se puntare a una nuova persona o tornare in safe zone in base ai costi di percorso.
- Pathfinder: calcola i percorsi con Unity NavMesh.
- Percorsi aggiornati dinamicamente con fallback se bloccati.
- Reset episodio con nuova generazione di mappa.
- Condizioni di chiusura: successo (tutti salvati), fallimento (collisione, timeout, stallo), replay manuale.
- Ricompense modellate su: progresso verso checkpoint, attivazione civili, consegna in safe zone, completamento missione.
- Penalità per collisioni, regressione, inattività.
- Osservazioni interne: direzione, velocità, numero follower.
- Sensori RayPerception3D: rilevano ostacoli e persone.
- Comandi continui: avanzare/indietreggiare, curvare sinistra/destra.
- Menu principale: Start, Info, Quit.
- HUD in-game: timer, contatore salvataggi, pulsanti per Home/Camera/Video.
- Telecamere: terza persona, prima persona, vista zenitale.
- Missione Compiuta: schermata di completamento con replay o ritorno al menu.
- Run 1: scenario fisso → apprendimento “a memoria”.
- Run 2: scenario variabile → generalizzazione ma instabilità.
- Run 3: fix e miglioramenti → policy più coerente.
- Run 4: training esteso (8M passi) → policy stabile e deterministica, reward > 300.
La documentazione completa è disponibile nella cartella docs/:
- ResQBot.pdf — Relazione dettagliata sul progetto ResQBot
- Migliorare gestione dei follower multipli
- Integrazione con sensori avanzati (es. LIDAR simulato)
- Training multi-agente in scenari collaborativi
- Validazione in ambienti 3D realistici
Andrea Aceto - 📧 a.aceto6@studenti.unisa.it — LinkedIn
Mario Cicalese — 📧 m.cicalese21@studenti.unisa.it — LinkedIn
Irene Gaita — 📧 igaita3107@gmail.com — LinkedIn
- Motore di simulazione: Unity3D
- Framework RL: Unity ML-Agents
- Pathfinding: Unity NavMesh
- GUI: Unity UI Toolkit