Introduzione
sue estensioni, è riuscito a sviluppare il Golog, un linguaggio per lo sviluppo di
programmi ad alto livello di astrazione per controllori di robot.
Questo linguaggio è molto potente, tuttavia ha delle carenze, che si sta
cercando di superare, mediante lo sviluppo di estensioni allo stesso. Lo scopo di
queste estensioni è quello di sopperire a mancanze quali, l'assenza di reattività e di
capacità di gestire azioni concorrenti, o l'insufficiente flessibilità.
Contemporaneamente, negli ultimi anni, allo Space System Laboratory del
MIT è stato sviluppato ed implementato un linguaggio per il controllo di sistemi che
sostanzialmente si muove nella stessa direzione, il Reactive Model-based
Programming Language (RMPL).
Questo linguaggio è stato studiato per le missioni spaziali della NASA; per cui
deve rispondere ad una serie di requisiti quali flessibilità, affidabilità e capacità di
recovering, e si è cercato di ottenere tutto ciò proprio grazie alle caratteristiche di
reattività ed al paradigma model-based; anche esso come il Golog permette di
sviluppare programmi ad alto livello di astrazione.
In questo lavoro di tesi si è cercato di unire i punti di forza dei due linguaggi,
RMPL e opportune estensioni del Golog, per sviluppare un sistema di controllo per
robotica di salvataggio. La robotica di salvataggio è quella branca della robotica che
si occupa della progettazione di agenti che possano svolgere compiti d'aiuto per le
squadre di soccorso in scenari di emergenza (per esempio, a seguito di terremoti), e,
a tal fine le caratteristiche già menzionate quali reattività e flessibilità si rendono
necessarie se non addirittura indispensabili.
Il lavoro svolto si snoda quindi in una prima fase di studio dei linguaggi a
disposizione, per catturarne le caratteristiche essenziali e distintive, una fase di
formalizzazione dei costrutti individuati e ritenuti necessari, ed infine una fase di
5
Introduzione
implementazione di un interprete che risponda ai requisiti, concludendo con lo
sviluppo di un sistema di controllo che mostri le potenzialità del linguaggio.
L'organizzazione in capitoli della tesi segue sia l'evoluzione del lavoro appena
esposta, sia il filo logico presentato nella prima parte di questa introduzione. In
particolare, il primo capitolo presenterà una breve introduzione al contesto ed alle
motivazioni che hanno portato allo svolgimento di questo lavoro di tesi.
Nel secondo capitolo si parlerà della robotica e degli agenti, mediante una
presentazione delle caratteristiche e della classificazione dei possibili tipi di
ambiente in cui l'agente può trovarsi ad agire.
Il terzo capitolo tratterà l'argomento del controllo di sistemi; in esso, dopo una
breve introduzione, si parlerà del concetto di architettura evidenziando una possibile
architettura adatta al dominio della robotica di salvataggio; verrà quindi presentata
la pianificazione, partendo dalla pianificazione classica, evidenziandone i limiti,
introducendo la pianificazione reattiva al fine di superarli e terminando con brevi
cenni sul monitoraggio del piano.
Nei capitoli successivi verrà affrontato più nello specifico il lavoro oggetto
della tesi, infatti, nel quarto capitolo si parlerà del Golog, dapprima introducendo il
situation calculus, ossia il formalismo per la descrizione della conoscenza ed il
ragionamento, che rappresenta la base per il linguaggio, successivamente entrando
nel merito del linguaggio vero e proprio, trattando anche alcune delle sue estensioni;
ci si soffermerà particolarmente su quelle che permettono l'uso di azioni
concorrenti.
Nel quinto capitolo verrà introdotto il linguaggio RMPL, presentando le sue
caratteristiche ed i suoi costrutti.
Nel penultimo capitolo si formalizzeranno tutti i costrutti che sono stati trovati
6
Introduzione
interessanti nei linguaggi studiati ed inoltre, se ne introdurranno di completamente
nuovi per raggiungere a pieno l'obiettivo di questo progetto di tesi; si inizierà con i
costrutti del RMPL per poi passare al construtto che permette al sistema il
raggiungimento di condizioni desiderate, concludendo con quello per il recovery a
partire da situazioni di fallimento.
L'ultimo capitolo infine presenterà l'implementazione, iniziando con la
struttura dell'applicazione, descrivendo quindi l'architettura del sistema di controllo
ed infine l'applicazione al contesto degli scenari d'emergenza, prima utilizzando
solamente i costrutti tradizionali e poi sfruttando le caratteristiche introdotte nel
presente lavoro, evidenziando così le differenze ed i vantaggi che si ottengono.
7
1. Contesto e motivazioni
1. Contesto e motivazioni
L'oggetto di questo lavoro di tesi riguarda la robotica di salvataggio (rescue
robotics), ossia quella branca della robotica che si occupa della progettazione di
agenti che possano svolgere compiti d'aiuto per le squadre di soccorso. Tipici
scenari d'impiego sono incidenti, disastri urbani ed esplosioni. In particolare, lo
scopo è quello di raggiungere aree a cui gli operatori umani non possono arrivare,
per motivi quali spazi ridotti, fiamme o luoghi soggetti a possibile collasso
strutturale.
Gli obiettivi di questi robot rientrano essenzialmente nelle seguenti categorie:
trovare vittime sopravvissute al disastro, eventualmente con azioni di
primo soccorso, come ad esempio il monitoraggio di alcune funzioni
vitali, ed eventualmente la somministrazione di qualche farmaco;
cercare percorsi che possano essere sfruttati successivamente dagli
operatori delle squadre di soccorso;
ispezionare l'ambiente alla ricerca di altri elementi quali, ad esempio,
materiali pericolosi.
Uno dei principali casi di utilizzo di robot di salvataggio è stato messo in atto a
seguito del disastro dell'11 settembre 2001 nel World Trade Center a New York;
dopo tale evento molti ricercatori si sono interessati al settore del rescue robotics,
facendogli raggiungere quindi, in questi ultimi anni, un notevole sviluppo.
Oltre agli Stati Uniti, anche il Giappone è molto attivo in questo settore; infatti,
in questo paese si vorrebbero sfruttare agenti di questo tipo per interventi a seguito
8
1. Contesto e motivazioni
dei terribili terremoti a cui esso è soggetto.
A partire dal 2000 il National Institute of Standards and Technology (NIST),
insieme al Japan National Special Project for Earthquake Disaster Mitigation in
Urban Areas, ha dato vita a competizioni per robot per ricerca e salvataggio in
ambiente urbano (Urban Search And Rescue Robot, USAR Robot), ossia la
RoboCup Rescue [21]; essa è un importante banco di prova per le nuove
infrastrutture robotiche progettate per la partecipazione a missioni di salvataggio ed
ha assunto un ruolo centrale a livello internazionale per la rescue robotics. In queste
competizioni un operatore umano può seguire le attività del robot solamente
mediante le attività di percezione e gli stati interni del robot stesso.
Il NIST ha sviluppato tre scenari di test appositamente per le competizioni di
RoboCup Rescue; essi sono denotati da tre colori giallo, arancione e rosso a seconda
del loro grado di difficoltà:
l'arena gialla rappresenta un ambiente interno con danni strutturali
limitati;
l'arena arancione è un ambiente multilivello con la presenza di
macerie;
l'arena rossa è la più complessa in quanto presenta un ambiente
multilivello notevolmente danneggiato.
Lo scopo della competizione è localizzare il maggior numero di vittime
nell'arena (la cui presenza è simulata mediante dispositivi e manichini), e a tal fine,
è necessario che il robot effettui diverse attività tra cui: esplorare l'ambiente e
provvedere alla stesura di una mappa, evitare ostacoli, cercare le vittime e segnalarle
correttamente sulla mappa, descrivendo anche le loro condizioni. Per simulare
9
1. Contesto e motivazioni
l'urgenza dettata da uno scenario reale di emergenza, è stato stabilito un limite
temporale massimo per ogni gara di 20 minuti.
10
2. La robotica e gli agenti intelligenti
2. La robotica e gli agenti intelligenti
2.1 Introduzione alla robotica
La robotica cognitiva è una scienza che studia i comportamenti degli esseri
intelligenti e cerca di sviluppare delle metodologie che permettano ad una macchina
(robot), dotata di opportuni dispositivi atti a percepire l'ambiente circostante ed
interagire con esso (sensori e attuatori), di eseguire dei compiti specifici [25]. È una
disciplina relativamente nuova, che affonda le sue radici nell'antico desiderio
dell'uomo di costruire strumenti che possano liberarlo da compiti troppo faticosi,
noiosi o pericolosi. Anche se la robotica è una branca dell'ingegneria, in essa
confluiscono gli studi di molte discipline sia di natura umanistica come biologia,
fisiologia, linguistica e psicologia che scientifica quali automazione, elettronica,
fisica, informatica, matematica e meccanica.
La robotica cognitiva, proprio in virtù della sua natura interdisciplinare, trova
applicazioni in molteplici contesti, questo ha fatto sì che nascessero varie sotto-
discipline fra le quali però raramente esiste una netta linea di demarcazione; solo
per citarne alcune:
la biorobotica, ossia l'utilizzo di robot in campo medico;
la domotica, cioè l'automazione applicata all'ambiente domestico, tra
gli sviluppi a breve termine più interessanti ci sono le tecnologie di
aiuto in casa ai portatori di handicap mentali o fisici;
la robotica evoluzionistica, metodologia che, attraverso lo studio di
algoritmi evolutivi, tenta di realizzare robot sempre più versatili in
11
2. La robotica e gli agenti intelligenti
modo da rendere meno essenziale il supporto umano;
la robotica spaziale, che oltre a sviluppare tecnologie e metodologie
destinate all'impiego di robot fuori dall'atmosfera terrestre, ha
raggiunto dei risultati utili quali, ad esempio, le sonde esplorative
impiegate in diverse missioni sui pianeti del sistema solare ma anche
robot più tradizionali come il famoso braccio manipolatore dello
Space Shuttle o quello di sembianze umane destinato alla ISS che
verrà utilizzato in sostituzione degli astronauti nelle attività
extraveicolari;
la robotica di salvataggio, ossia la progettazione di agenti che possano
svolgere compiti d'aiuto per le squadre di soccorso umane; essi sono
solitamente impiegati in situazioni in cui far agire un operatore umano
sarebbe eccessivamente rischioso;
robot da competizione, ossia tornei in cui robot, singoli o in squadra, si
sfidano con lo scopo di promuovere la ricerca nel campo
dell'intelligenza artificiale; la più famosa a livello internazionale è la
RoboCup. Il nome RoboCup è la contrazione del nome completo
della competizione, ossia “Robot Soccer World Cup”; tuttavia durante
il suo svolgimento non vengono solo effettuate gare tra squadre di
calcio formate da robot, ma anchecompetizioni riguardanti anche la
robotica di salvataggio, questa lega è chiamata RoboCupRescue.
Tutti questi settori della robotica hanno comunque un aspetto comune, ossia lo
sviluppo e l'utilizzo di operatori non umani il cui scopo è attuare un comportamento
razionale al fine di raggiungere i propri scopi; essi prendono il nome di agenti
12
2. La robotica e gli agenti intelligenti
intelligenti.
2.2 Gli agenti intelligenti
Un agente può essere semplicemente definito come un'entità che agisce [18];
in particolare gli agenti artificiali hanno caratteristiche che li contraddistinguono dai
semplici programmi. Queste caratteristiche, che un agente non necessariamente
deve possedere tutte, sono, solo per citarne alcune:
la capacità di operare con controllo autonomo,
essere in grado di percepire l'ambiente,
persistere in una attività per un lungo arco di tempo,
adattarsi al cambiamento.
La proprietà distintiva di tali sistemi è sicuramente un superiore livello di
autonomia, dove, con questo termine, si intende la capacità di svolgere un compito
senza ricorrere all’intervento del progettista, mantenendo il controllo sul proprio
stato interno e sulle proprie strutture dati. In particolare, un agente deve essere in
grado di eseguire azioni complesse in maniera autonoma, con il fine di raggiungere
i propri obiettivi; deve cioè garantire il comportamento desiderato anche in presenza
di disturbi, ossia sotto condizioni di variabilità ambientale.
Il fatto che gli agenti siano attivi significa che essi sanno quando dovrebbero
agire e quando invece devono semplicemente aggiornare il loro stato (al contrario
degli oggetti passivi che hanno bisogno che qualche entità esterna ordini loro come
agire); tale autonomia riduce la complessità del controllo, poiché le decisioni su
quali azioni debbano essere eseguite sono delegate ad entità autonome. Ciò
permette alla selezione, di rispondere allo stato effettivo dell’agente, piuttosto che
13
2. La robotica e gli agenti intelligenti
alla percezione di questo stato che può avere una qualche entità esterna.
Un agente è, quindi, un sistema (hardware e/o software) progettato affinché
operi autonomamente in un ambiente, in modo da soddisfare le proprie specifiche di
progetto.
Strettamente legato al concetto di agente è il concetto di azione in un dato
ambiente (environment), che può essere reale o virtuale; l'agente interagisce con
questo percependone le caratteristiche mediante i suoi sensori ed agendo su di esso
grazie agli attuatori; ciò gli conferisce una certa flessibilità.
La flessibilità [28] di comportamento si muove lungo due cordinate, fra loro
ortogonali: ambiente e obiettivi. La flessibilità rispetto agli obiettivi indica la
possibilità di cambiarli, o di averne più di uno contemporaneamente, condizione
molto differente da quella di un sistema che rispetti semplicemente le proprie
specifiche; in altre parole, ad un agente intelligente non occorre dire che cosa fare,
ma che cosa deve ottenere come risultato finale della propria attività. In questo
ulteriore livello si può racchiudere il significato della caratteristica aggiuntiva di
“intelligenza”.
La flessibilità di un agente scaturisce dalle seguenti caratteristiche:
Proattività
Autonomia
Reattività
Razionalità
La proattività, conosciuta anche come comportamento orientato all’obiettivo,
indica la capacità di porre in atto un comportamento che conduca, appunto, al
raggiungimento di un dato obiettivo. Fondamentale, a questo scopo, è la capacità di
14
2. La robotica e gli agenti intelligenti
sintetizzare ed eseguire azioni o sequenze di azioni (denominate piani) in funzione
dell’obiettivo e della situazione di partenza. Ricade nel comportamento proattivo
anche la capacità di modificare, se possibile, i propri piani, adattandoli alle mutevoli
condizioni di un ambiente dinamico.
Con il concetto di autonomia si intende la capacità dell’agente di saper
scegliere le azioni da eseguire per il raggiungimento di un obiettivo assegnato senza
interventi esterni diretti; in una accezione più ampia anche la scelta degli obiettivi
rientra nell'ambito dell'autonomia dell'agente.
La reattività è l'abilità di monitorare l’ambiente per individuare eventi di
interesse e rispondere in modo tempestivo con una opportuna scelta di azioni da
eseguire; mentre la razionalità indica la proprietà di un agente di saper agire per il
raggiungimento dei propri obiettivi.
Ai concetti esposti possono essere aggiunti quelli di capacità sociale, legato
ad un contesto più ampio in cui coesistono ed operano più entità autonome che
possono agire in competizione o cooperazione a seconda che gli obiettivi siano
comuni o meno; ed apprendimento, ossia la possibilità che un agente possa
apprendere nuove nozioni derivanti dalla sua attività precedente, e, sulla base di
queste, decidere se modificare il proprio comportamento per adattarsi ad eventuali
cambiamenti nell’ambiente circostante.
L'agente percepisce l'ambiente mediante la cosiddetta sequenza percettiva;
essa rispecchia la successione completa di ciò che si è rivelato all'agente durante
tutta la sua esistenza, ed è sulla base di questa che dipende la scelta delle azioni che
l'agente dovrà compiere in un determinato istante. La corrispondenza tra le possibili
sequenze percettive e l'azione da intraprendere è conosciuta come funzione agente,
15