• Non ci sono risultati.

Il simulatore della dinamica del robot

Il simulatore della dinamica realizzato da Van Der Wardt (2010) modella il comportamento fisico del robot in acqua. La sua realizzazione `e stata effettuata attraverso le seguenti fasi:

1. la creazione del modello della fisica del robot e dell’ambiente marino (ossia le correnti del mare e i venti) tramite la piattaforma Simulink,

2. la conversione dei modelli in codice C++, per mezzo dello strumento Real Time Workshop di MATLAB,

3. l’integrazione del codice con un’interfaccia grafica, mostrata in figura 3.5 preposta alla verifica del funzionamento del simulatore.

Figura 3.5: Interfaccia grafica per il simulatore della dinamica del robot Il modello della dinamica `e descritto per mezzo di uno schema matematico che descrive il movimento del robot in acque aperte: esso riceve in input la velocit`a di rotazione delle due eliche del robot e l’angolo del timone, producendo come risultato la velocit`a, la velocit`a angolare e l’accelerazione angolare del robot. Il modello dell’ambiente marino genera i venti e le correnti per mezzo del metodo della passeggiata aleatoria (random walk).

Il codice sorgente del simulatore si compone di due parti: il lato client e il lato server. Il lato client legge i dati di input del robot, che sono elaborati dal modello convertito in C++, e quindi invia i risultati prodotti al lato server, per mezzo di un socket. Il lato server inizialmente crea l’interfaccia grafica usando le librerie Qt e aggiorna lo stato e i dati del robot (riportando tali aggiornamenti sulla visualizzazione dell’interfaccia grafica), ogni volta che li riceve dal client. Inoltre, il server `e in grado di simulare i sensori laser e sonar del robot.

La simulazione del laser `e gestita per mezzo di un thread separato e si basa sull’elaborazione dei calcoli per ottenere un array di distanze dagli oggetti. Tale elaborazione `e cronometrata: se il tempo impiegato dall’elaborazione `e inferiore al tempo che occorrerebbe al sensore reale, il thread viene sospeso per una quantit`a di tempo pari alla differenza tra il tempo impiegato dal sensore simulato e il tempo che avrebbe impiegato il sensore reale. Il calcolo delle distanze `e suddivisa in diversi passaggi: 1) ricava la distanza tra il robot e la linea costiera, considerando prima le distanze orizzontali; 2) si esamina verticalmente la distanza del punto precedente (in modo da tener conto dall’ampiezza dell’onda in relazione con la

posizione attuale del robot), se lungo la traiettoria considerata del raggio laser vi `e una linea costiera; 3) si considera la distanza tra una barca e il robot, inizialmente solo in orizzontale; 4) si esamina verticalmente la distanza trattata nel punto precedente, se `e intercettata una barca mentre si calcolava la distanza descritta al punto precedente.

La simulazione del sonar si comporta in modo analogo alla simulazione del laser, con la differenza degli oggetti che questo intercetta. In questo caso il sensore simulato verifica prima la presenza di terre, seguito dal controllo della presenza di barche e infine di secche. Inoltre, questa simulazione non tiene conto delle onde in quanto i movimenti di beccheggio e rollio sono troppo piccoli per influenzare il comportamento del robot.

Lo sfondo dell’interfaccia `e ricoperto dalla mappa dell’area di lavoro del robot. Tramite un insieme di controlli forniti dall’interfaccia, `e possibile avviare la simulazione dell’ambiente, modificando manualmente la direzione e velocit`a di venti e/o correnti del mare e/o l’ampiezza e la lunghezza dell’onda e il periodo del moto ondoso, ossia il tempo che intercorre tra due onde consecutive. L’interfaccia grafica permette di definire il percorso da far seguire al robot, secondo due modalit`a differenti: follow-line, ossia il robot deve seguire semplicemente la linea descritta da due punti inseriti dall’utente (un punto di partenza e uno di arrivo), e waypoint, in base alla quale il robot deve raggiungere la nuova destinazione inserita, a partire dalla sua posizione corrente. Un altro controllo posseduto dall’interfaccia permette di inserire delle imbarcazioni, come ostacoli, nella posizione desiderata dall’utente o dei fondali bassi; per ciascuna imbarcazione `e possibile impostare delle caratteristiche differenti, come dimensioni, velocit`a e direzione, mentre per ciascun fondale `e possibile definire solo dimensioni e direzione. Inoltre, ad ogni istante, l’interfaccia aggiorna e visualizza:

• le propriet`a del robot (riquadro in bianco posto a destra nella figura 3.5), come angoli della direzione attuale, del beccheggio, del rollio, velocit`a, ecc.; • ci`o che il laser e il sonar vedono (riquadri posti rispettivamente in basso a

sinistra e in basso a destra della figura 3.5);

• nel riquadro blu in basso in figura 3.5, l’andamento del moto ondoso rispet- to alla posizione attuale del robot, secondo le propriet`a precedentemente impostate per l’ambiente, accompagnato dalla traiettoria tracciata dal laser per quell’istante (linea rossa).

ibrida che prevede che vengano sfruttati i dati reali provenienti dal robot, affinch´e le componenti hardware e software vengano testate assieme alle interazioni esistenti tra le parti;

virtuale genera i dati del robot via software, in modo da testare il software che gira sul robot, il cui errato funzionamento potrebbe danneggiare il robot stesso.

Quando il simulatore funziona in modalit`a ibrida, l’interfaccia grafica permette di definire la posizione del robot, la destinazione che si intende far raggiungere al robot e il numero di ostacoli. Dal momento che, in questo caso, il software del robot e il simulatore si trovano su due macchine differenti, la comunicazione con il robot avviene tramite il modulo comunicazione wireless via socket TCP. In questa configurazione, il simulatore pu`o lavorare con i dati reali o simulati dei motori e/o dei sensori di distanza del robot; nel caso in cui fossero simulati, la comunicazione avverrebbe, nel primo caso per mezzo di un socket TCP, via WiFi, mentre nel secondo caso via CAN bus.

Diversamente, quando il simulatore funziona in modalit`a virtuale, il software del robot e il simulatore stesso stanno sulla stessa macchina e, in tal caso, le comunicazioni sono stabilite esclusivamente tramite socket UDS. In base alla definizione di questa configurazione, i dati dei motori, dei sensori e della dinamica del robot sono prodotti dal simulatore.

Documenti correlati