• Non ci sono risultati.

Composizione del percorso

Nel documento Guida ottima per un veicolo subacqueo (pagine 32-45)

5. Prima legge di guida

5.1. Principio

5.1.2. Composizione del percorso

L’algoritmo di composizione del percorso, necessita di tre punti: uno di partenza ( ), un way-point ( ) ed uno di arrivo ( ). Una volta generato il path fino al superamento del way- point ( ) è possibile aggiungere un nuovo punto ( ), trasformando cosi l’ultimo punto del percorso nel nuovo punto di partenza ( ), il precedente punto di arrivo nel prossimo way- point ( ), ed il nuovo punto ( ) diventerà il nuovo traguardo.

In questo modo è possibile cominciare a generare il percorso prima di averlo completamente pianificato oppure consente di modificarlo fino all’ultimo momento, ovvero fino a quando non si arriva al nuovo punto di partenza .

Ecco a seguire la descrizione dell’algoritmo a partire da quello per eseguire una virata, per passare poi a quello per il cambio di profondità.

5.1.2.1. Curva

Con riferimento a Figura 22, partendo dalla condizione di moto rettilineo ( ) in direzione è necessario individuare la trasizione in grado di portare il veicolo nella condizione di moto rettilineo ( ) in direzione . Questo comporta la conoscenza dell’angolo di variazione di heading , angolo compreso fra i due moti rettilinei. La trasizione realizzata con il minor numero di manovre è quella che prende dalla libreria delle virate la manovra che porta il veicolo dalla condizione di moto rettilineo a quella di moto circolare uniforme che và mantenuta per il tempo , dopo di che inizierà la manovra che porterà il veicolo nella condizione finale .

I punti di cambio fra manovre e trim sono indicati con le lettere mentre invece con le linee continue sono rappresentati i trim ( , moti di regime), mentre le linee tratteggiate indicano le manovre ( , transitori).

Figura 22 Composizione di una virata

Figura 23 Heading change delle manovre di ingresso/uscita dalla curva

Ricordando che le manovre ed comportano una variazione di heading rispettivamente di e ( finale delle manovre di ingresso/uscita dalla curva, generate a partire da veicolo che punta verso Nord) si ottiene che il costing time è quel tempo di mantenimento del moto circolare uniforme , necessario a virare di mantenendo velocità angolare costante . Quindi:

( 24 )

Nel caso in cui si ha tempo negativo. Questo significa che gli heading change delle manovre di ingresso/uscita dalla curva comportano da soli una virata maggiore di quella richiesta, e quindi si ha lo scarto della tripletta manovra / trim / manovra in esame.

Dopo aver calcolato , tempo di mantenimento del trim, è possibile calcolare le distanze ed che identificano i punti rispettivamente di ingresso ed uscita dalla curva.

Definiti i versori come i versori che puntano rispettivamente da a e da a è possibile calcolare i vettori che costituiscono 3 lati del poligono :

Figura 24 Heading change delle manovre di ingresso/uscita dalla curva

̅̅̅̅ ( ) ̅̅̅̅ ( ) . / ̅̅̅̅ . / ( 25 )

Dato che le manovre sono state pre-calcolate offline partendo da veicolo puntato verso Nord, è necessario ruotarle dell’angolo iniziale attraverso la matrice di rotazione ( ). Nella rotazione del trim invece è necessario aggiungere anche la rotazione di , angolo di variazione di heading durante la manovra . Come si può vedere da Figura 24 con si intende il vettore che và dal punto iniziale a quello finale della manovra , mentre è quello relativo alla manovra .

Con si indica la DCM (Direction Cosine Matrix) relativa all’inizio del trim , mentre è la velocità in assi Body mantenuta durante il trim. La è il tensore che lega la velocità angolare, il vettore di rotazione e la sua velocità ( ) ̇ [1]. In generale si ha:

( ) ∫ ( ) ( 26 )

In pratica la parte . / serve a calcolare il vettore distanza complessivamente percorso durante il moto circolare uniforme (trim). Questo permette di calcolare quindi anche la distanza ̅̅̅̅ percorsa durante .

Si può a questo punto scrivere l’equazione di chiusura del poligono:

( 27 )

Ricavando cosi le due incognite ed attraverso la formula:

( ) [ ( ) ( ) ] ( 28 ) Con

È necessario a questo punto scartare tutte le triplette di manovra / trim / manovra che presentano delle coppie , maggiori dello spazio disponibile fra i vari way-point. Questo controllo viene svolto valutando sul solo piano le disequazioni:

‖ ‖ ‖ ‖

( 29 )

Questa procedura viene eseguita per tutti i set di triplette manovra / trim / manovra. Riassumendo le varie triplette devo rispettare i vincoli:

1) | | | | di heading change delle manovre minore dell’heading change richiesto per la virata.

2) ‖ ‖ , ‖ ‖ di virata sufficientemente rapida da “entrare” nello spazio fra la posizione attuale e i due way-point.

3) Percorso che passa entro il range di due volte la lunghezza del veicolo dal way-point. Nel caso in cui ciò non accada allora è sufficiente virare in direzione opposta facendo un giro completo ripetendo cioè la procedura appena illustrata ma con . Il risultato è mostrato in Figura 25.

Quest’ultima soluzione seppur non molto elegante offre la possibilità di avere sempre delle triplette accettabili fra cui scegliere perchè permette di virare dell’angolo desiderato dopo il passaggio dal waypoint, molto utile quindi nel caso di punti molto vicini fra loro.

Oltre a questa seconda serie di triplette di manovre e trim vengono calcolate anche quelle con heading fix (Figura 26), che antepongono cioè le manovre ed in direzione opposta, in modo da avere una variazione di orientazione dovuta alle manovre che risulti complessivamente nulla.

A questo punto è sufficiente prendere la tripletta desiderata fra tutte quelle generate. Il criterio usato è quello del tempo minimo di percorrenza da a . Potrebbero essere usati in alternativa criteri di minima energia o di minima distanza di passaggio dal waypoint.

5.1.2.2. Cambio di profonfidà

Nel caso in cui la posizione attuale ed il way-point successivo si trovino a profondità diverse, allora è necessario, prima dell’eventuale virata, eseguire un cambio di profondità.

Nella libreria generata offline esistono 2 tipi di soluzioni diverse a questo problema. Il primo metodo, quello della rampa, viene utilizzato nel caso in cui fra la posizione attuale ed i way-point vi sia spazio sufficiente per una rampa e l’eventuale virata. Il secondo metodo, quello della

Per primo viene descritto l’algoritmo di inserimento della rampa per il quale Figura 27 è presa a riferimento.

Partendo dalla condizione di moto rettilineo ( ) in direzione ma a profondità è necessario individare la trasizione in grado di portare il veicolo nella condizione di moto rettilineo ( ) sempre in direzione ma a profondità .

Per prima cosa viene calcolato di quanto è necessario salire/scendere di profondità:

( 30 )

Per ogni tripletta di manovra / trim / manovra si calcola la durata del trim di salita (moto rettilineo uniforme con angolo di ):

. /

( 31 )

Con si intendono le variazioni di profondità ottenute eseguendo le manovre di ingresso/uscita dalla rampa.

Con il tempo è possibile calcolare la distanza percorsa durante il trim:

( 32 )

da cui la distanza complessiva percorsa durante il cambio di profondità risulta:

( 33 )

Figura 28 Cambi di profondità delle manovre di ingresso/uscita dalla rampa

dove con e si intendono rispettivamente le distanze percorse durante le manovre di ingresso/uscita dalla rampa, ovvero la loro posizone finale (essendo generate partendo dall’origine).

Fra le varie triplette viene scelta in questo caso, quella che richiede il minor tempo di esecuzione a patto che sul piano si rispetti la condizione:

‖ ‖ ( 34 )

ovvero che fra la posizione attuale ( ) ed il way-point ( ) vi sia spazio sufficiente a garantire l’inserimento della rampa e della eventuale virata successiva.

Nel caso in cui nessuna rampa di quelle in libreria fosse in grado di rispettare tale vincolo, si renderà necessario utilizzare una spirale invece di un rampa più una virata. Quest’ultima infatti consente di superare il way-point, effettuare il cambio di profondità e poi correggere l’heading continuando con una virata. Viene ora illustrato più nel dettaglio l’algoritmo con Figura 29 da prendere come riferimento.

Analogamente al caso della rampa si calcola l’altezza di cui variare la profondità come:

( 35 )

Conoscendo le variazioni di profondità dovute alle 3 manovre si ha che il tempo di mantenimento del moto a spirale è:

. /

( 36 )

Volutamente è stato omesso il termine poichè è sempre nullo (corrisponde all’uscita dalla virata ed ingresso in ).

Dato il tempo si ottiene l’heading change della spirale:

(

)

( 37 )

A questo punto è possibile calcolare l’angolo da coprire durante la virata che risulta essere:

( ) . / ( 38 )

La prima parte ( ) è l’angolo totale di virata, girando in direzione opposta in modo da poter passare direttamente da , la seconda parte ( ) è la somma degli heading change dovuti alle tre manovre più il trim a spirale.

Il tempo di mantenimento della virata risulta essere:

( 39 )

I versori sono tali da puntare rispettivamente da a e da a . A questo punto è possibile calcolare i vettori che costituiscono cinque dei lati del poligono proiettato sul piano :

̅̅̅̅ ( ) ̅̅̅̅ ( ) . / ̅̅̅̅ . / ̅̅̅̅ . / ( ) ̅̅̅̅ . / ( 40 )

Analogamente al caso della virata, di formula (25), le sono rotazioni necessarie a portare i vari vettori nella giusta orientazione, poichè tutti sono calcolati a partire da angolo di yaw nullo, cioè puntando verso Nord. Le invece facendo riferimento a formula (26) servono a calcolare il vettore distanza percorso durante i trim di virata e spirale.

Si può quindi scrivere l’equazione di chiusura del poligono sul piano :

( 41 )

Come nel caso della semplice curva si ricavano le due incognite ed attraverso la formula:

( )

[

( )

( ) ]

5.1.2.3. Esempio

Viene ora mostrato un esempio di percorso costituito da 6 punti, per simulare l’inizio di un percorso di tipo snake, normalmente usato per scansionare il fondale in cerca di reperti o altro.

Con riferimento a Figura 30, il percorso parte dall’origine, quadratino blu, i way-point sono i quadratini verdi, mentre quello rosso è il traguardo. I cerchi color magenta intorno ai way-point rappresentano il range di due volte lunghezza veicolo. Le virate sono tutte di e si alternano virate con heading fix a quelle con loop inverso. Il motivo per cui non vengono usate le curve dirette è che per virate di 90° passerebbero troppo lontane dai way-point. Le virate con loop inverso sono necessarie perchè non vi è spazio sufficiente fra un punto ed il successivo.

Per quanto riguarda Figura 31, si può vedere in corrispondenza della prima virata una picco negativo della velocità di imbardata e subito dopo un suo aumento positivo, indice del fatto che è stata inserita una virata con heading fix. Durante le virate sono facilmente individuabili i trim, ovvero le parti in cui la velocità di imbardata è costante.

Di questo percorso è presente anche un filmato realizzato con MATLAB, per i dettagli si rimanda all’appendice.

Nel documento Guida ottima per un veicolo subacqueo (pagine 32-45)

Documenti correlati