• Non ci sono risultati.

Progettazione interfaccia uomo-macchina per robot antropomorfi in applicazioni di correzioni profili

N/A
N/A
Protected

Academic year: 2021

Condividi "Progettazione interfaccia uomo-macchina per robot antropomorfi in applicazioni di correzioni profili"

Copied!
120
0
0

Testo completo

(1)

UNIVERSITÀ DI PISA

Facoltà di Ingegneria

Laurea Specialistica in Ingegneria dell’Automazione

Tesi di laurea

Candidato:

Federico Agostinelli

____________________

Relatori:

Prof. Ing. Lorenzo Pollini

____________________

Prof. Ing. Andrea Caiti

____________________

Ing. Giuseppe D’Urzo

____________________

INTERFACCIA UOMO-MACCHINA PER

ROBOT ANTROPOMORFI IN

APPLICAZIONI DI CORREZIONI PROFILI

Sessione di Laurea del 05/06/2007

Archivio tesi Laurea Specialistica in Ingegneria dell’Automazione Anno accademico 2006/2007

(2)

INDICE FIGURE... 4

SOMMARIO ... 6

INTRODUZIONE ... 7

1 CURVE NELLO SPAZIO ... 11

1.1 FORMA ALGEBRICA E GEOMETRICA DI UNA CURVA... 12

1.2 DERIVATA PRIMA E DERIVATA SECONDA DI UNA CURVA... 17

2 SPLINE... 19

2.1 EQUAZIONE DI UNA CURVA CUBICA IN FUNZIONE DELLE DERIVATE SECONDE. ... 19

2.2 EQUAZIONI CHE DESCRIVONO IL COMPORTAMENTO ELASTICO DI UNA TRAVE... 20

2.3 SPLINE PARAMETRICA CUBICA COMPOSTA... 25

2.4 INTERPOLAZIONE DI FUNZIONI AD UNA VARIABILE... 25

2.5 RISOLUZIONE DI UN SISTEMA AVENTE MATRICE TRIDIAGONALE SIMMETRICA CON DIAGONALE PRINCIPALE DOMINANTE... 29

2.6 INTERPOLAZIONE DI CURVE NEL PIANO... 31

2.7 INTERPOLAZIONE DI CURVE NELLO SPAZIO... 33

2.8 MINIMA DISTANZA TRA UN PUNTO E UNA CURVA... 34

2.8.1 Metodo di Newton ... 35

3 QD HMI... 38

3.1 INTRODUZIONE ALL’AMBIENTE ROBOT... 38

3.1.1 Principali tipi di variabili ... 41

3.1.2 Sistema di coordinate ... 41

3.2 CARATTERISTICHE DELL’APPLICATIVO QDHMI... 44

3.2.1 Punti totali... 49

3.2.2 Percentuale di esecuzione e stima del tempo rimanente ... 49

3.2.3 Personalizzare l’esecuzione della sequenza... 50

3.2.3.1 File di partenza ...50

3.2.3.2 File di arresto...50

3.2.3.3 Punto di partenza ...51

3.2.3.4 Punto di arresto...51

3.2.4 Ripresa dell’esecuzione... 51

3.2.5 Modifica dei parametri di velocità ... 52

3.2.6 Correzione del profilo di lavorazione ... 52

3.3 COMUNICAZIONE TRA IL ROBOT E QDHMI... 52

3.3.1 Classe CrossComm ... 53

3.3.2 C++ gestito ... 54

3.3.3 Tipi di dati gestiti ... 55

3.3.4 Puntatori gestiti... 57

3.3.5 Puntatori gestiti in classi non gestite ... 57

3.3.6 Utilizzo di oggetti gestiti nelle applicazioni MFC... 58

3.3.7 Aggiungere la libreria Cross3krc.dll al progetto MFC ... 60

3.4 STRUTTURA DEL FILE QDSRC... 60

3.4.1 N_I_TOT ... 61

3.4.2 VEL_MODE ... 61

3.4.3 N_I... 63

3.4.4 ORD ... 64

3.4.5 PUN... 64

3.5 STRUTTURA DEL FILE QD_HMI.SRC... 65

3.6 TECNICA DEL DOPPIO BUFFER PER L’ESECUZIONE DELLE ISTRUZIONI... 66

4 ALGORITMO PER LA CORREZIONE DEI PROFILI ... 71

4.1 INTRODUZIONE AL PROBLEMA... 73

4.2 TASTATURA... 78

4.2.1 Scelta dei punti di tastatura ... 78

4.2.2 Metodo automatico per la scelta del numero di punti da tastare ... 84

(3)

4.3.2 Punti da tastare ... 97

4.3.3 Punti tastati ... 98

4.3.4 Parametro di precisione... 99

4.4 CORPO DELL’ALGORITMO... 100

4.5 INFLUENZA DEL PARAMETRO DI PRECISIONE... 103

4.6 USCITA... 105

4.7 INTEGRAZIONE DI QDHMI CON L’ALGORITMO DI CORREZIONE DEI PROFILI... 106

5 ESEMPIO... 112

(4)

INDICE FIGURE

Figura 0-2: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti. ... 8

Figura 1-1: Elementi caratterizzanti una curva nello spazio ... 12

Figura 2-1: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti. ... 21

Figura 2-2: Interpolazione di una funzione mediante spline ... 28

Figura 2-3: Interpolazione di una curva nel piano mediante spline... 32

Figura 2-4: Interpolazione di una curva nello spazio mediante spline. ... 33

Figura 2-5: Principali elementi utili per il calcolo della minima distanza tra un punto e una curva. ... 34

Figura 2-6: Interpretazione grafica del metodo di Newton... 36

Figura 3-1: Gestione della memoria nel robot. ... 38

Figura 3-2: Passi per l’esecuzione manuale di un file SRC la cui dimensione supera sia quella massima possibile per un singolo file sia quella totale disponibile al controllo del robot. ... 40

Figura 3-3: Assi e versi di rotazione del robot ... 42

Figura 3-4: Significato dei valori A, B e C ... 43

Figura 3-5: Sistemi di coordinate robot... 43

Figura 3-6: Schermata principale di QD HMI. ... 44

Figura 3-7: Kuka Control Panel (KCP) del robot. ... 45

Figura 3-8: visualizzazione dei tasti del KCP utilizzati per l’attivazione dei pulsanti del programma QD HMI. ... 45

Figura 3-9: Esecuzione automatica di un singolo file da parte dell’applicativo QD HMI. ... 46

Figura 3-10 esecuzione automatica di un’intera lavorazione da parte dell’applicativo QD HMI... 48

Figura 3-11: Comunicazione tra il robot e il programma QD HMI... 52

Figura 3-12: Flusso del programma ed intervento esterno dell’utente in caso di modalità automatica... 62

Figura 3-13: del programma ed intervento esterno dell’utente in caso di modalità semi-automatica... 63

Figura 3-14: Flusso di esecuzione del programma nel robot e nell’applicativo QD HMI... 69

Figura 4-1: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti. ... 71

Figura 4-2: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti ed alla forza peso... 72

Figura 4-3: Oggetto ideale privo di deformazioni ... 73

Figura 4-4: Oggetto deformato con concavità verso l’alto. ... 74

Figura 4-5: Oggetto deformato con concavità verso il basso... 75

Figura 4-6: Oggetto deformato con profilo ad onda. ... 75

Figura 4-7: Diagramma di flusso per modificare un file di lavorazione ... 77

Figura 4-8: Profilo deformato ... 79

Figura 4-9: Spline ed errori con 5, 7 e 9 punti di supporto ... 80

Figura 4-10: Profilo deformato. ... 81

Figura 4-11: Interpolazione ed errore commesso con 7, 9, 11 punti di supporto del profilo... 82

Figura 4-12: Interpolazione ed errore commesso con sei punti di supporto opportunamente posizionati. ... 83

Figura 4-13: Interpolazione ed errore commesso con sei punti di supporto opportunamente posizionati. ... 83

Figura 4-14: fase di verifica e tasteggio in due punti scelti dall’algoritmo ... 85

Figura 4-15: fase di verifica e tasteggio in quattro punti scelti dall’algoritmo e visualizzazione dell’errore commesso ... 87

Figura 4-16: Spline ed errore generati con nove punti scelti utilizzando l’algoritmo. ... 88

Figura 4-17: Spline ed errore generati con 17 punti scelti utilizzando l’algoritmo. ... 89

Figura 4-18: Diagramma di flusso dell’algoritmo automatico di tastatura ... 91

Figura 4-19: Passi dell’algoritmo automatico di tastatura ... 92

Figura 4-20: fasi di verifica del terzo e quarto passo... 94

Figura 4-21: Spline ed errore con 17 punti di tastatura... 95

Figura 4-22: fase di verifica del terzo passo... 95

Figura 4-23: fase di verifica del quarto passo... 96

(5)

Figura 4-25: Comparazione degli errori tra i due algoritmi... 96

Figura 4-26: Quattro possibili punti di tastatura. ... 98

Figura 4-27: visualizzazione del profilo ideale e di quattro punti da tastare (azzurro) a cui corrispondono i quattro punti tastati (verde). In rosso è visualizzato solo il profilo di taglio... 99

Figura 4-28: Prima figura: distanza tra due punti di lavorazione. Seconda figura: aggiunta di due ulteriori punti da parte dell’algoritmo per rispettare il vincolo sulla distanza ... 100

Figura 4-29: Spline generate utilizzando i punti di lavoro, i punti tastati e i punti da tastare... 101

Figura 4-30: Calcolo del vettore errore qr, applicazione al punto di lavorazione pi per determinare il punto di lavorazione n in presenza di deformazione... 102

Figura 4-31: Profilo di lavorazione (rosso) modificato dall’algoritmo (viola)... 103

Figura 4-32: Profilo di lavorazione modificato con l’aggiunta di 355 punti. ... 104

Figura 4-33: Profilo di lavorazione modificato con l’aggiunta di 17 punti. ... 104

Figura 4-34: Profilo di lavorazione modificato con l’aggiunta di 2 punti. ... 105

Figura 4-35: Finestra principale per la correzione dei profili. ... 106

Figura 4-36: Possibile configurazione dei sistemi di riferimento $WORLD e $BASE... 108

Figura 4-37: Ingrandimento dello strumento utilizzato per la tastatura ... 108

Figura 4-38: visualizzazione della direzione di tastatura su profili differenti... 109

Figura 4-39: Configurazione del robot durante la fase di tastatura ... 110

Figura 4-40: Stessa posizione di figura() ma con una rotazione del polso ... 111

Figura 5-1: oggetto “ideale” e oggetto “reale”... 112

Figura 5-2: Programma per la realizzazione dell’oggetto ideale e deformato ... 113

Figura 5-3: programma che simula una lavorazione di taglio sull’oggetto ideale ... 114

Figura 5-4: Stesso programma di figura applicato all’oggetto deformato... 114

Figura 5-5: Punti ideali di tastatura... 115

Figura 5-6: Visualizzazione del primo e ultimo punto di lavorazione necessari per indicare la lista dei punti di lavorazione da modificare ... 116

Figura 5-7: Direzione di tastatura del punto numero 5... 116

Figura 5-8: Due fotogrammi della fase di tastatura ... 117

Figura 5-9: Spline generate dall’algoritmo di correzione dei profili ... 118

Figura 5-10: Programma di lavorazione modificato dall’algoritmo di correzione dei profili... 119

(6)

SOMMARIO

Il lavoro di tesi consiste nel correggere file di lavorazione creati su oggetti “ideali” senza cioè nessuna deformazione, per adattarli agli oggetti “reali” che possono deformarsi a causa di forze esterne. Lo strumento di interpolazione utilizzato per ricostruire il profilo reale e ideale dell’oggetto è la curva spline cubica naturale nello spazio. I punti di supporto per generare il profilo ideale dell’oggetto attraverso la spline sono scelti utilizzando programmi CAD-CAM. I punti di supporto per ricostruire il profilo reale deformato dell’oggetto, invece, sono presi attraverso una fase di tastatura. Sfruttando la conoscenza delle due curve spline è possibile quindi calcolare l’entità della deformazione e modificare i punti di lavorazione che giacciono sul profilo deformato, per adattarli alla nuova forma che ha assunto l’oggetto a causa delle forze esterne che agiscono su di esso. Inoltre è presentato un programma utilizzabile con robot KUKA, che consente di eseguire file di lavorazioni molto grandi risolvendo i problemi di memoria presenti se si usufruisce direttamente il software del robot. In più, il programma aggiunge molte funzionalità tra le quali la possibilità di riprendere l’esecuzione dopo un arresto ed, appunto, quella di correggere i profili di lavorazione.

ABSTRACT

The thesis consists in correcting the working file created on “ideal” objects without any deformation, to suit them for the “real” objects that can get deformed because of external forces. The interpolation used for reconstructing the real and ideal profile of the object is the natural cubic spline curve in the space. The support’s points to produce the ideal profile of the object through the spline are selected using CAD-CAM programs. The support’s points to reconstruct the real deformed profile of the object, are taken, instead, through a phase of touching. Knowing the two spline, is possible to calculate the entity of the deformation and to modify the working points that lie on the deformed profile to suit them for the new form that the object has assumed because of the external forces that act on it. Besides, is introduced a program that can be used with KUKA robot and that allows to execute very big working file resolving the memory’s problems if one uses directly the robot’s software. Anymore, the program adds a lot of functionalities among which the possibility to resume the execution after the stop and to correct the working profile.

(7)

INTRODUZIONE

Lavorazioni su oggetti come la sgrossatura, finitura, taglio, saldatura, verniciatura... sono molto frequenti nella robotica. I programmi di lavorazione creati con opportuni software sono predisposti per un oggetto “ideale”, che non ha subito alcuna deformazione. Le deformazioni che possono verificarsi sono di diversa natura: dalla forza peso dello stesso oggetto alle forze e momenti generati per bloccarlo ad un piano di lavoro. Le figure () mostrano alcune tipiche lavorazioni eseguite con robot antropomorfi nelle quali è elevata la precisione richiesta.

Se un file di lavorazione preparato per un oggetto ideale è applicato su un oggetto che in realtà è deformato, il risultato finale non sarà ottimale e, in alcuni casi, risulterà deleterio rispetto a quello desiderato, proporzionale all’entità della deformazione. Ad esempio, l’utensile che esegue un taglio utilizzando il getto dell’acqua deve trovarsi ad una certa altezza dalla superficie. Se a causa della deformazione la distanza aumenta, la potenza e la velocità dell’acqua potrebbero non

(8)

essere più sufficienti. Se si è a conoscenza del fatto che in alcune aree l’oggetto può essere alterato, è possibile cercare di modificare il programma di lavorazione in quelle zone specifiche, in modo da adattarlo alla forma reale assunta dall’oggetto. La figura () mostra una trave incernierata su due punti a cui vengono applicati due momenti flettenti tendenti a deformarla.

Figura 0-2: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti.

È dimostrabile che le formule che descrivono il comportamento di una trave fissata agli estremi sono simili alle equazioni di una curva cubica in funzione delle derivate seconde. Se, inoltre, si conoscessero i valori dei due momenti M e 0 M1, la curva assumerebbe esattamente la stessa

forma della trave deformata. Poiché nella realtà i due momenti non sono conosciuti, il problema è risolto attraverso la tastatura. Infatti, tastando due punti arbitrari del profilo deformato e risolvendo un sistema, è possibile utilizzare una spline come mezzo di interpolazione e ricavare una curva che abbia esattamente la stessa forma della trave. Sugli oggetti reali agiscono però forze di diversa natura e risulta quindi difficile trovare forme matematiche che possano rappresentare dei profili deformati nello spazio. Questo problema è risolto tastando punti del profilo reale in numero sufficiente per poterlo ricostruire e utilizzando la spline come strumento per interpolare i punti a disposizione.

(9)

Attraverso software CAD-CAM si è a conoscenza della forma ideale dell’oggetto sotto lavorazione e quindi la posizione che assume ogni suo punto nello spazio. Attraverso una fase di tastatura con cui il robot determina alcuni punti appartenenti all’oggetto deformato viene, invece, ricostruita la forma reale. conoscendo la forma ideale e la forma reale, si determina l’entità dello scostamento causato dalla deformazione dell’oggetto. Una volta calcolato l’errore, si modifica il programma di lavorazione originale per utilizzarlo sull’oggetto reale. La ricostruzione del profilo deformato attraverso la tecnica di interpolazione e la modifica del programma di lavorazione sono compiti svolti da due algoritmi differenti.

Nel primo capitolo è descritto lo strumento matematico di base utilizzato dalla spline: una curva nello spazio. In particolare sono esposte le forme matematiche con le quali si definiscono le curve (geometrica e algebrica) e alcune delle sue proprietà.

Il secondo capitolo è dedicato alla spline. La spline è il mezzo di interpolazione impiegato per trovare una curva nello spazio, passante attraverso alcuni punti prestabiliti. È descritto un procedimento per determinare un punto appartenente alla spline che si trova a distanza minima rispetto ad un’altro punto fornito in ingresso.

Il terzo capitolo è dedicato al programma QD HMI. Inizialmente è introdotto l’ambiente del robot specificandone i tipi delle variabili utilizzate, i sistemi di riferimento presenti e le convenzioni utilizzate per descrivere le orientazioni. Sono, in seguito, mostrate le caratteristiche e i vantaggi che rendono l’applicativo QD HMI uno strumento molto importante per eseguire programmi robot in alternativa all’esecuzione diretta degli stessi attraverso il controllo del robot. Dopodichè, la descrizione passa all’analisi della comunicazione tra l’applicativo e il robot: è introdotta la classe di interfaccia denominata CrossComm che permette la comunicazione e la procedura da seguire per poterla utilizzare in ambiente MFC.

Il quarto capitolo descrive l’algoritmo utilizzato per correggere un profilo di lavorazione realizzato su un oggetto ideale per adattarlo allo stesso oggetto che ha, invece, subito una deformazione. Sono indicati gli ingressi necessari al funzionamento dell’algoritmo e l’uscita prodotta. Un paragrafo è dedicato alla scelta di un importante ingresso da cui dipende in modo particolare il corretto esito dell’algoritmo: la lista dei punti da tastare. È inoltre introdotto, analizzandone vantaggi e svantaggi, un possibile algoritmo di tastatura automatica che evita la scelta da parte dell’utente del numero e della posizione che devono avere i punti da tastare. È infine presentata l’integrazione tra l’algoritmo sulla correzione dei profili e il programma QD HMI.

Il quinto capitolo presenta un esempio applicativo in cui è utilizzato l’algoritmo di correzione dei profili. Nell’esempio sono descritti tutti i passaggi effettuati: dalla realizzazione degli oggetti

(10)

utilizzati per il test fino alla modifica, sfruttando l’algoritmo, del programma di lavorazione per poterlo applicare all’oggetto deformato.

(11)

1 CURVE NELLO SPAZIO

Una curva nello spazio è rappresentata da un insieme di punti le cui coordinate sono in funzione di equazioni matematiche continue ad un parametro della forma:

) (u x x= ) (u y y= (1.1) ) (u z z=

Il parametro u varia nell’intervallo [0,1]. La curva è delimitata da due punti definiti che corrispondono ai valori di u = 0 e u = 1, il verso positivo della curva è dato da valori di u crescenti.

Un punto nello spazio è trattato come un vettore p(u) le cui componenti corrispondono alle coordinate del punto. Con la notazione pu(u) si rappresenta il vettore tangente alla curva nel punto p(u) che ha coordinate x(u), y(u), z(u), ed è ricavato differenziando p(u) rispetto al parametro u: du u d u u ( ) ) ( p p = (1.2)

Le componenti del vettore sono

du u dx xu = ( ) du u dy yu = ( ) (1.3) du u dz zu = ( )

Tutto questo è illustrato nella Figura

(12)

Figura 1-1: Elementi caratterizzanti una curva nello spazio

1.1 Forma algebrica e geometrica di una curva

La forma algebrica di una curva parametrica cubica (PC) è rappresentata da tre polinomi di terzo grado: z z z z y y y y x x x x a u a u a u a u z a u a u a u a u y a u a u a u a u x 0 1 2 2 3 3 0 1 2 2 3 3 0 1 2 2 3 3 ) ( ) ( ) ( + + + = + + + = + + + = (1.4)

Il parametro indipendente u varia nell’intervallo [0,1] rendendo limitato il segmento di curva. L’insieme dei 12 coefficienti chiamati coefficienti algebrici

          z z z z y y y y x x x x a a a a a a a a a a a a 0 1 2 3 0 1 2 3 0 1 2 3 (1.5)

(13)

E’ possibile riscrivere le tre equazioni nella forma vettoriale più compatta: 0 1 2 2 3 3 ) ( a a a a p u = u + u + u+ (1.6) con           = ) ( ) ( ) ( ) ( u z u y u x u p ,           = z y x a a a 3 3 3 3 a ,           = z y x a a a 2 2 2 2 a ,           = z y x a a a 1 1 1 1 a ,           = z y x a a a 0 0 0 0 a (1.7)

dove p(u) è il vettore posizione di un punto qualsiasi appartenente alla curva e a3,a2,a1,a0 sono

gli equivalenti vettoriali dei coefficienti algebrici scalari. Le componenti di p(u) corrispondono alle coordinate cartesiane del punto.

La restrizione sulla variabile parametrica u (scalare) risulta essere

[ ]

0,1 ∈

u (1.8)

I coefficienti algebrici non sempre rappresentano il modo più conveniente per controllare la forma di una curva nelle situazioni tipiche della modellazione, ne aiutano a una comprensione intuitiva di una curva. La forma geometrica di una curva PC nello spazio è più adatta a questo proposito. È possibile definire una curva PC attraverso le condizioni agli estremi. Per una curva nello spazio, è possibile scegliere fra varie condizioni: coordinate degli estremi, tangenti, curvatura, torsione, oltre alle condizioni dipendenti delle derivate di ordine maggiore. Utilizzando gli estremi p(0), p(1) e i corrispondenti vettori tangenti (0) u(0)

du dp =p e ) 1 ( ) 1 ( du u

dp =p , si ottengono dalla (1.6) le seguenti equazioni

3 2 1 1 3 2 1 0 0 3 2 ) 1 ( ) 0 ( ) 1 ( ) 0 ( a a a p a p a a a a p a p + + = = + + + = = u u (1.9)

(14)

Per ottenere p(0), si sostituisce semplicemente u = 0 nella (1.6). Per ottenere p(1), si sostituisce u = 1 nell’equazione (1.6). Infine, si differenzia p(u) rispetto a u, e ancora si sostituisce u = 0 e u = 1 nell’equazione risultante per pu(u) per ottenere pu(0) e pu(1).

Risolvendo questo sistema di quattro equazioni in quattro incognite, possiamo ridefinire i coefficienti algebrici in funzione delle condizioni al contorno

) 1 ( ) 0 ( ) 1 ( 2 ) 0 ( 2 ) 1 ( ) 0 ( 2 ) 1 ( 3 ) 0 ( 3 ) 0 ( ) 0 ( 3 2 1 0 u u u u u p p p p a p p p p a p a p a + + − = − − + − = = = (1.10)

Sostituendo queste espressioni ai coefficienti della (1.6) e riordinando i termini si ottiene

) 1 ( ) ( ) 0 ( ) 2 ( ) 1 ( ) 3 2 ( ) 0 ( ) 1 3 2 ( ) ( 3 2 3 2 3 2 u 3 2 u u u u u u u u u u u p p p p p = − + + − + + − + + − (1.11)

Effettuando le seguenti sostituzioni

2 3 4 2 3 3 2 3 2 2 3 1 ) ( 2 ) ( 3 2 ) ( 1 3 2 ) ( u u u F u u u u F u u u F u u u F − = + − = + − = + − = (1.12) La (1.6) diventa ora ) 1 ( ) ( ) 0 ( ) ( ) 1 ( ) ( ) 0 ( ) ( ) ( 1 2 3 u 4 u u F u F u F u F u p p p p p = + + + (1.13)

Eliminando la notazione funzionale e utilizzando indici inferiori e superiori per rappresentare la differenziazione, rispettivamente rispetto a u e al valore dell’estremo u, la (1.13) diventa

u u F F F F1p0 2p1 3p0 4p1 p= + + + (1.14)

(15)

Questa rappresenta la forma geometrica e p0,p1,pu0,pu1 sono detti coefficienti geometrici. I

termini F sono chiamate funzioni di miscelamento. In Figura 1.1 sono mostrati gli elementi base dell’espressione geometrica vettoriale di una curva PC nello spazio.

Si noti che sarebbe possibile scegliere due punti e due vettori tangenti qualsiasi, poiché si è specificato il valore corrispondente della variabile parametrica u. In effetti, sarebbe anche possibile scegliere quattro vettori tangenti e nessun punto, oppure tre vettori tangenti e un punto. Ciascuno punto deve avere un valore u differente, e lo stesso vale per ogni vettore tangente. Il fatto è che ci sono 12 gradi di libertà (quattro vettori con tre componenti ciascuno) che devono essere specificati per definire in modo univoco e non ambiguo le equazioni della curva. È più opportuno comunque specificare queste variabili negli estremi di una curva, caratterizzati da u = 0 e u = 1. Inoltre, quando si uniscono molte curve estremo per estremo ottenendo curve più complesse, è opportuno controllare le condizioni in questi punti.

Si noti che le curve PC sono direzionali, essendo generate da valori successivi della variabile parametrica u. È importante capire che è possibile ottenere curve identiche con sequenze invertite dei valori di u. La decisione su quale estremo della curva definire p o 0 p1 è arbitraria, a

meno che non vi sia qualche vincolo esterno (di tipo computazionale, e così via) che faccia preferire un verso specifico.

In precedenza si è sottolineato come la forma matriciale sia la forma più compatta per rappresentare una curva pc, e in tal modo le operazioni geometriche e le analisi sono effettuate tramite semplice manipolazione di matrici. La (1.6) può essere scritta come prodotto di due matrici

[

]

[

]

T u u u 3 2 1 0 2 3 1 a a a a p= ⋅ (1.15) Ponendo

[

3 2 1

]

u u u = U e A=

[

a3 a2 a1 a0

]

T, la (1.15) diviene UA p= (1.16)

Trattando la forma geometrica in modo analogo si ottiene

[

]

[

u u

]

T F F F F1 2 3 4 p0 p1 p0 p1 p= (1.17)

(16)

Ora sia F=

[

F1 F2 F3 F4

]

e

[

]

T u u 1 0 1 0 p p p p B= la (1.17) diviene FB p= (1.18)

Dove A è la matrice dei coefficienti algebrici e B è la matrice dei coefficienti geometrici o delle condizioni al contorno. È possibile ottenere facilmente una relazione fra la forma algebrica e quella geometrica. Dalla (1.12) si ottiene

[

(2 3 3 2 1) ( 2 3 3 2) ( 3 2 2 ) ( 3 2)

]

u u u u u u u u u − + − + − + − = F (1.19)

Il termine a destra della (1.19) si può esprimere come

[

]

            − − − − ⋅ = 0 0 0 1 0 1 0 0 1 2 3 3 1 1 2 2 1 2 3 u u u F (1.20)

La matrice 4 x 4 è chiamata matrice universale di trasferimento ed è denotata con M:

UM

F= (1.21)

Sostituendo la (1.21) nella (1.18) si ottiene

UMB p= (1.22) Così MB A= (1.23) Inversamente A M B= −1 (1.24)

(17)

Dove             = − 0 1 2 3 0 1 0 0 1 1 1 1 1 0 0 0 1 M (1.25)

Perciò, le (1.23) e (1.24) consentono una rapida conversione della forma algebrica a quella geometrica.

In questo testo la forma più usata per le curve è la (1.22). Per completezza,

UMB

p(u)= (1.26)

Si noti che le matrici U, F e M sono identiche per tutte le curve pc e che solo le matrici A e B sono diverse per ogni curva, dato che dipendono dalla forma e dalla posizione.

1.2 Derivata prima e derivata seconda di una curva

Per determinare la derivata prima e seconda di una curva pc è necessario calcolare i seguenti rapporti: 2 2 ) ( ) ( du u d du u d uu u p p p p = = (1.27)

Considerando la forma algebrica si ottiene:

1 2 2 3 2 3a u a u a u + + = p (1.28) 2 3 2 6a u a uu + = p (1.29)

Considerando invece la forma geometrica si ottiene:

u u u u u u u F F F F1p0 2p1 3p0 4p1 p = + + + (1.30)

(18)

u uu u uu uu uu uu F F F F1 p0 2 p1 3 p0 4 p1 p = + + + (1.31) In forma compatta B F p B F p uu uu u u = = (1.32)

Eseguendo le differenziazioni indicate degli elementi della matrice F si ottiene:

(

) (

) (

) (

)

[

u u u u u u u u

]

u 2 3 1 4 3 6 6 6 6 2 2 2 2 − + − + − − = F (1.33)

(

) (

) (

) (

)

[

12 −6 −12 +6 6 −4 6 −2

]

= u u u u uu F (1.34)

Le formule (1.32) possono essere trasformate in modo analogo alla (1.26)

B UM p B UM p uu uu u u = = (1.35) Con

[ ]

0,1 ∈ u (1.36) Dove             − − − − = 0 1 0 0 2 4 6 6 3 3 6 6 0 0 0 0 u M (1.37)             − − − − = 2 4 6 6 6 6 12 12 0 0 0 0 0 0 0 0 uu M (1.38)

(19)

2 SPLINE

Le curve spline costituiscono probabilmente il metodo più comunemente utilizzato nell’industria aeronautica e navale. Esse derivano il loro nome da uno strumento utilizzato per il disegno tecnico chiamato, appunto, spline, costituito da una bacchetta di plastica o di altro materiale che possa essere facilmente flesso in modo da passare esattamente per una serie di punti, detti punti di controllo, precedentemente localizzati sul disegno. Alcuni pesi, detti duck, fanno in modo che la spline assuma una posizione fissa così che il disegnatore possa seguirne i contorni e tracciare la curva continua passante per i punti desiderati. Una curva spline può quindi essere disegnata in modo da passare per un numero qualsiasi di punti; inoltre il cambiamento di curvatura lungo la spline stessa è graduale e non si verificano cappi.

Il metodo di interpolazione utilizzato per ricostruire il profilo deformato di un oggetto è ricaduto sulle spline in quanto è possibile dimostrare che esiste una equivalenza matematica tra le equazioni di una curva parametrica cubica con le formule che descrivono la deformazione di una semplice trave ai cui estremi sono applicati due momenti flettenti. È possibile anche verificare che una curva spline passante per un numero arbitrario di punti di supporto con continuità 2

C (senza irregolarità nella derivata seconda), può essere rappresentata esattamente mediante curve cubiche parametriche composte.

2.1 Equazione di una curva cubica in funzione delle derivate seconde.

Trovare l’espressione di una curva parametrica in funzione delle derivate seconde risulta utile per dimostrare l’analogia che sussiste tra le formule che descrivono una cubica e quelle per la deformazione elastica di una trave.

Occorre quindi determinare p in funzione di p , 0 p1, uu 0 p , uu 1 p dove puu =d2p du2 .

Dalle (1.32) e (1.34) sostituendo i valori di u =0 e u =1 si ottiene:

u u uu 1 0 1 0 0 6p 6p 4p 2p p =− + − − (2.1) u u uu 1 0 1 0 1 6p 6p 2p 4p p = − + + (2.2)

(20)

Dalle equazioni precedenti si ricavano pu0 e u 1 p :

(

uu uu

)

u 1 0 1 0 0 2 6 1 p p p p p =− + − + (2.3)

(

uu uu

)

u 1 0 1 0 1 2 6 1 p p p p p =− + + + (2.4)

Le espressioni (2.3) e (2.4) si sostituiscono all’equazione (1.13) ottenendo l’espressione di p in funzione delle derivate seconde.

(

)

(

)

uu

(

)

uu u u u u u u u 1 3 0 2 3 1 0 6 1 2 3 6 1 1 p p p p p= − + + − + − + − (2.5)

In questo caso la matrice F risulta:

[

]

=

(

)

(

− + −

)

(

)

 = F F F F u u u u u u u F 1 2 3 4 3 2 3 6 1 2 3 6 1 1 (2.6)

Riscrivendo la (2.5) in modo più compatto

uu uu F F F F1p0 2p1 3p0 4p1 p= + + + (2.7) e in forma matriciale

[

uu uu

]

T 1 0 1 0 p p p p F p= ⋅ (2.8)

2.2 Equazioni che descrivono il comportamento elastico di una trave

È possibile dimostrare che le equazioni che descrivono il comportamento di una trave fissata agli estremi sono simili alla (2.7).

(21)

Figura 2-1: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti.

L’angolo α della tangente è considerato positivo in senso antiorario a partire dall’asse x, la flessione δ , invece, è considerato positivo nello stesso verso dell’asse y. La trave flessa giace sul piano x-y.

Dalle (2.7) si ricavano le espressioni delle componenti x e y in funzione delle derivate seconde

(

)

(

)

(

)

(

)

(

)

uu

(

)

uu uu uu y u u y u u u uy y u y x u u x u u u ux x u x 1 3 0 2 3 1 0 1 3 0 2 3 1 0 6 1 2 3 6 1 1 6 1 2 3 6 1 1 − + − + − + + − = − + − + − + + − = (2.9)

Definiamo le seguenti ipotesi:

1. Non sono flessioni rispetto alla direzione y nei punti di supporto. 2. La lunghezza della trave non subisce variazioni.

3. Le flessioni sono piccole abbastanza da poter esprimere x come funzione lineare della lunghezza L.

(22)

Queste possono essere espresse matematicamente come: 0 0 0 0 0 1 1 1 0 0 0 = = = = = = uu uu x y L x x y x (2.10)

Sostituendo le (2.10) alle (2.9) si ottiene

uL x= (2.11) oppure L x u= (2.12) e

(

)

(

)

[

]

(

)

{

uu uu

}

y u u y u u y 1 3 0 3 1 1 6 1 − + − − − = (2.13) Poiché u u x x y du dx du dy dx dy y = = = (2.14)

e dalle (2.11) e (2.13) si calcola che

L

(23)

(

)

[

]

(

)

{

uu uu

}

u u y u y y 2 1 0 2 1 3 1 1 3 6 1 − + + − − = (2.16)

Sostituendo si determina l’espressione

(

)

[

]

(

)

{

uu uu

}

x y u y u L y 1 2 0 2 1 3 1 1 3 6 1 − + + − − = (2.17)

La derivata seconda di y rispetto a x, xx

y , può essere espressa in questo modo

(

)

( )

u 2 u uu uu u u u u u xx x y x y x x x y y = = − (2.18) Dove

( )

= =0 = u u u uu L x x (2.19)

( )

u u

(

)

uu uu uu uy y u y y = = 1− 0 + 1 (2.20)

Sostituendo (2.19) e (2.20) nella (2.18) si ottiene

(

)

[

uu uu

]

xx

uy

y

u

L

y

=

1

2

1

0

+

1 (2.21)

Sostituendo infine u= x L nelle (2.13), (2.17) e (2.21) si ottiene

            +       − =                 −       +         +       − − =                 −       +               − −       − = uu uu xx uu uu x uu uu y L x y L x L y y L x y L x L y y L x L x y L x L x y 1 0 2 1 2 0 2 1 3 0 3 1 1 1 3 1 1 3 6 1 1 1 6 1 (2.22)

(24)

Se si confrontano le equazioni precedenti con quelle della trave, si può notare la similitudine tra esse:             +       − =                 −       +         +       − − =                 −       +               − −       − = 1 0 1 2 0 2 1 3 0 3 2 1 1 1 1 3 1 1 3 6 1 1 1 6 M L x M L x EI R M L x M L x EI M L x L x M L x L x EI L i i i i i i i i i i i α δ (2.23)

Le relazioni risultano identiche se vengono utilizzate queste espressioni

EI L M yuu 2 0 0 = (2.24) EI L M yuu 2 1 1 = (2.25)

I valori dei due momenti flettenti nella realtà non sono conosciuti a priori. Il problema precedente può essere risolto tastando due punti arbitrari del profilo e sostituendo i valori nella

prima equazione delle (2.22). Si ottiene così un sistema di due equazioni in due incognite (y0uu e

uu y1 ):                 −       +               − −       − =                 −       +               − −       − = uu k k uu k k k uu j j uu j j j y L x L x y L x L x y y L x L x y L x L x y 1 3 0 3 1 3 0 3 1 1 6 1 1 1 6 1 (2.26)

(25)

Che risolto fornisce i valori delle incognite:

(

)

(

)

(

)

(

)

(

)

(

)

(

)

(

)

k j k k k j j j j k uu k j k k k j j j j k uu x x x x L y x L x x L y x L L y x x x x L y x L x x L y x L L y −         − − − − + − = −         − + − − + = 2 2 2 2 2 1 2 0 (2.27)

Se questi valori sono sostituiti nelle formule (2.22) si ricava l’equazione della curva che ha la stessa forma della trave deformata, il valore della derivata prima e della derivata seconda.

È possibile ottenere lo stesso risultato utilizzando come mezzo di interpolazione la spline: infatti una volta tastati due punti e ricavati i valori delle derivate seconde nel primo e nell’ultimo punto risolvendo il sistema (2.26) si può costruire una curva che passa esattamente nei quattro punti conosciuti e che abbia la stessa forma della trave deformata. Nei prossimi paragrafi verrà affrontato lo studio della spline come metodo di interpolazione.

2.3 Spline parametrica cubica composta

Il problema che affronteremo ora può essere formulato nel seguente modo: dato un insieme di punti aventi coordinate note in un sistema di riferimento arbitrario, si vuole determinare un insieme di curve parametriche cubiche raccordate agli estremi in modo da formare una curva composta passante per i punti dati e che simuli il comportamento di una spline. L’insieme dei punti dati può essere ricavato da misurazioni di forme fisiche, come modelli in legno, metallo o argilla della nuova carrozzeria di un’automobile, oppure lo scafo di una nave o delle ali di un aereo. Qualunque sia la loro derivazione, si ipotizza che sia possibile ordinare tali punti in modo da poter determinare una spline che li interpoli sequenzialmente.

2.4 Interpolazione di funzioni ad una variabile

Per tracciare una funzione che interpoli un numero N di punti di supporto del piano (x,y) con polinomi interpolanti successivi di terzo grado:

(26)

i i i i i i i i x a x x a x x a x x a p 2 1 0 2 3 3( ) ( ) ( ) ) ( = − + − + − + (2.28)

dobbiamo imporre le seguenti condizioni di continuità dei polinomi stessi, delle loro derivate prime e seconde in ogni punto di supporto:

1 ,..., 1 ) (x = y i= N− pi i i (2.29) 1 ,..., 1 ) (x+1 = y+1 i= N− pi i i (2.30) 2 ,..., 1 ) ( ) ( ' 1 1 1 ' − = = + + + p x i N x pi i i i (2.31) 2 ,..., 1 ) ( ) ( '' 1 1 1 '' − = = + + + p x i N x pi i i i (2.32)

Dalle equazioni (2.29), (2.30) e (2.32) con qualche conto si ricavano le espressioni dei parametri del generico polinomio pi(x) in funzione delle derivate seconde:

1 ,..., 1 ) ( 6 ) ( ) ( 1 '' 1 '' 1 3 = − − − = + + + N i x x x p x p a i i i i i i i (2.33) 1 ,..., 1 2 ) ( '' 2 = i= N− x p a i i i (2.34)

[

]

1 ,..., 1 6 ) ( 2 ) ( ) ( ) ( '' 1 '' 1 1 1 1 1 = − − − − − − = + + + + + N i x p x p x x x x y y a i i i i i i i i i i i (2.35) 1 ,..., 1 0 = y i= N− a i i (2.36)

Le espressioni delle derivate seconde si ricavano imponendo la condizione (2.31):

1 ,..., 2 ) ( ) ( 6 ) ( ) ( 6 ) ( ) ( ) ( ) ( 2 ) ( ) ( 1 1 1 1 1 '' 1 1 '' 1 1 1 '' 1 1 − = − − − − − = − + − + − − − + + + + + − + − − − N i x x y y x x y y x p x x x p x x x p x x i i i i i i i i i i i i i i i i i i i i (2.37)

Questo sistema ha N incognite e N-2 equazioni. Per risolverlo è necessario imporre due condizioni al contorno.

(27)

Dalla scelta di queste condizioni dipende il tipo di spline cubica:

• Naturale derivata seconda nulla nei punti estremi.

• Derivata seconda assegnata derivata seconda assegnata nei punti estremi.

• Derivata seconda adiacente derivate seconde nei punti p1 pn proporzionali rispettivamente a quelle nei punti p2 pn-1.

• Derivata prima assegnata derivata prima assegnata nei punti estremi.

• Periodica derivata prima (seconda) uguale nei punti estremi.

Organizzando le equazioni (2.37) in forma matriciale si ottiene:

×                     − − − − − − − − − − − − − − − − − − − − − − − − − ) ( ) ( 2 ) ( 0 0 0 0 0 0 ) ( ) ( 2 ) ( 0 0 0 0 0 0 ... ... ... 0 0 0 0 0 0 ) ( ) ( 2 ) ( 0 0 0 0 0 0 ) ( ) ( 2 ) ( 0 0 0 0 0 0 ) ( ) ( 2 ) ( 1 2 2 1 2 1 3 1 3 2 4 5 3 5 3 4 3 4 2 4 2 3 2 3 1 3 1 2 N N N N N N N N N N N N x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x                                   − − − − − − − − − − − − − − − − − − − − =                           − × − − − − − − − − − − − − − − − ) ( ) ( 6 ) ( ) ( 6 ) ( ) ( 6 ) ( ) ( 6 ... ... ... ... ) ( ) ( 6 ) ( ) ( 6 ) ( ) ( 6 ) ( ) ( 6 ) ( ) 1 ( ... ... ) 4 ( ) 3 ( ) 2 ( ) 1 ( 2 1 2 1 1 1 3 2 3 2 2 1 2 1 2 3 2 3 3 4 3 4 1 2 1 2 2 3 2 3 '' '' 1 '' 4 '' 3 '' 2 '' 1 N N N N N N N N N N N N N N N N N N x x y y x x y y x x y y x x y y x x y y x x y y x x y y x x y y N p N p p p p p (2.38)

Se la scelta adottata è il tipo di spline cubica naturale, una volta fissata la condizione 0 ) ( ) 1 ( '' '' 1 = p N =

p N si eliminano la prima e l’ultima colonna ottenendo una matrice tridiagonale

(28)

(

) (

)

(

)

(

) (

)

(

)

(

)

(

)

(

) (

)

(

)

(

)

                   − − − − − − − − − − − − − − − − − − − − − 2 2 1 2 1 3 1 3 2 3 5 3 4 3 4 2 4 2 3 2 3 1 3 2 0 0 0 0 2 0 0 0 0 ... ... ... 0 0 0 0 0 2 0 0 0 0 2 0 0 0 0 2 N N N N N N N N N N x x x x x x x x x x x x x x x x x x x x x x x x (2.39)

Risolvendo il sistema si determinano i valori delle derivate seconde nei punti di supporto che sostituiti alle equazioni (2.33), (2.34), (2.35) e (2.36) permettono di ricavare i coefficienti dei vari polinomi di terzo grado che costituiscono la spline.

Come esempio è mostrato la funzione che interpola i seguenti 10 punti:

p1=(-4,1),p2=(-1.5,5), p3(0,2), p4(4.5, 7), p5 (7,0) p6(8.5, -5) p7(12,6) p8(15,0) , p9(16,2), p10(20,-6) -5 0 5 10 15 20 -6 -4 -2 0 2 4 6 8 x y

(29)

2.5 Risoluzione di un sistema avente matrice tridiagonale simmetrica con

diagonale principale dominante

Una matrice tridiagonale generica risulta essere di forma seguente:

                    = − − − − k k k k k p l u p l u p l u p l u p T 1 1 1 2 3 3 2 2 2 1 1 1 0 0 0 0 0 0 0 0 ... ... ... 0 0 0 0 0 0 0 0 0 0 0 0 (2.40)

Dove i p sono gli elementi della diagonale principale, i l quelli della diagonale inferiore ed i u i

quelli della diagonale superiore.

La matrice in considerazione risulta inoltre essere a diagonale dominante. Per questo motivo è possibile fattorizzarla nella forma LR in modo tale che la risoluzione del sistema sia molto semplice.

L’ultima importante caratteristica della matrice in analisi è la simmetria, cioè:

1 ,...., 1 − = =u i k li i (2.41)

Per risolvere in maniera efficiente il sistema osserviamo che:

• Una matrice tridiagonale simmetrica T può essere convenientemente rappresentata da due vettori:

o p con le componenti p per i i=1,....k

o u con componenti u per i i=1,...k−1

• La fattorizzazione più conveniente è quella LDLT

Nella fattorizzazione LDL la matrice L ha gli elementi della diagonale uguali a 1 e la T sottodiagonale composta dagli elementi l con i i=1,...k−1 mentre la matrice D è diagonale e

(30)

composta dagli elementi d con i i=1,...k.Svolgendo formalmente il prodotto T LDL otteniamo la matrice:                 + + − − − − − − 1 2 1 1 1 1 1 1 2 1 2 1 1 1 1 1 0 0 0 ... ... 0 0 0 ... ... ... 0 0 0 ... 0 0 0 n n n n n n n d l d l d l d d l d l d l d d (2.42)

Dalle matrici (2.40) e (2.42) ricaviamo l’algoritmo per ricavare le componenti l e i d i

1 1 p d = (2.44) 1 , 1 1 1 2 2 1 2 1 1 − =       ⋅ − = ⋅ − = − = − = = + + + + + k i u l p u d u p d d u p d l p d d u l i i i i i i i i i i i i i i i i i i K (2.43)

Una volta ricavate tutte le componenti è possibile riscrivere la matrice LDLT

come prodotto LR cioè di una matrice triangolare inferiore L e una matrice triangolare superiore R=DLT. Ottenuta la fattorizzazione LR della matrice il sistema:

noti p

LR⋅ i'' = (2.45)

È risolto mediante due semplici sistemi successivi

noti Lz= (2.46) z p R⋅ i'' = (2.47) Dove

(31)

                    =                     = − − − − − k k k k k k d l d l l d l d l l l l 0 0 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 ... ... 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 ... 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 2 2 2 1 1 1 2 2 1 R L (2.48)

Il primo sistema sarà risolto utilizzando il seguente algoritmo:

1 1 noti z = (2.49) k i noti l noti zi = i− i−1⋅ i−1 =2,...., (2.50)

Il secondo sistema potrà essere risolto con l’algoritmo:

k k k d z p'' = (2.51) 1 ,...., 1 '' 1 '' − = ⋅ − = + k i d p l z p i i i i i (2.52)

2.6 Interpolazione di curve nel piano

Nel caso in cui l’interpolazione avviene su un insieme di punti appartenenti ad una curva nel piano, dunque non necessariamente una funzione, occorre associare un parametro u∈[0,1] crescente ad ogni punto di supporto in base al verso desiderato della curva stessa. Un metodo per realizzare le condizioni precedenti è il seguente:

0 1 = u (2.53) N i y y x x u ui i ( i i ) ( i i 1)2 2,..., 2 1 1+ − + − = = − − − (2.54) N i u u u N i i = =1,..., (2.55)

Con questi valori si creano due spline aventi come ascisse dei punti di supporto le u e come i

(32)

Si ottengono così due funzioni interpolanti: ) ( ) ( 2 1 u f y u f x = = (2.56)

Facendo variare il parametro u nell’intervallo [0,1] si ricavano i punti (x,y) della curva interpolante.

Come esempio è mostrata la funzione che interpola i seguenti 10 punti:

p1=(-4,1),p2=(-1.5,5), p3(0,2), p4(4.5, 7), p5 (12,4) p6(8.5, -5) p7(2,0) p8(2,10) , p9(5,8), p10(20,6) -5 0 5 10 15 20 -10 -8 -6 -4 -2 0 2 4 6 8 x y

(33)

2.7 Interpolazione di curve nello spazio

Se la curva da interpolare appartiene allo spazio occorre modificare il metodo precedente tenendo in considerazione per ogni punto anche la coordinata z. Il parametro u che varia sempre nell’intervallo [0,1] sarà calcolato nel seguente modo:

0 1 = u (2.57) N i z z y y x x u ui i ( i i ) ( i i ) ( i i 1)2 2,..., 2 1 2 1 1+ − + − + − = = (2.58) N i u u u N i i = =1,..., (2.59)

Dopodiché si crea oltre alle due spline precedenti x= f1(u),y= f2(u) anche la spline z= f3(u).

Facendo variare il parametro u nell’intervallo [0,1] si ricavano i punti (x,y,z) della curva interpolante.

Come esempio è mostrata la funzione che interpola i seguenti 10 punti:

p1=(-4,1,-5),p2=(-1.5,5,-2), p3(0,2,0), p4(4.5,7,3), p5 (12,4,6) p6(8.5, -5,7.5) p7(2,0,10) p8(2,10,13) , p9(5,8,15), p10(20,6,20) -5 0 5 10 15 20 -10 -5 0 5 10 -5 0 5 10 15 20 z

(34)

2.8 Minima distanza tra un punto e una curva

La minima distanza tra un punto q dato e una curva p(u) si determina trovando un punto p

appartenente alla curva tale che il vettore (p – q) sia perpendicolare al vettore tangente pu nel punto p (figura 2-5).

Figura 2-5: Principali elementi utili per il calcolo della minima distanza tra un punto e una curva.

Le condizioni richieste si esprimono come segue:

q p dmin = − (2.60) Quando 0 ) ( − ⋅ u = p q p (2.61)

La (2.61) si potrebbe semplificare se si trasla l’origine del sistema di coordinate in q; ciò non influisce sulla forma della curva o sulla distanza minima.

(35)

La (2.61) diventa 0 = ⋅ u p p (2.62)

Questo influisce sui coefficienti algebrici di una curva cubica parametrica (pc) come segue:

q a a a a a a a a + + + ⇒ + 2+ 1 + 0 − 2 3 3 0 1 2 2 3 3u u u u u u (2.63)

I coefficienti geometrici sono trasformati in modo analogo:

[

u u

]

T

[

u u

]

T 1 0 1 0 1 0 1 0 p p p p q p q p p p ⇒ − − (2.64)

Si noti che i coefficienti algebrici di pu non vengono modificati con questa trasformazione:

1 2 2 3 2 3a a a pu = u + u+ (2.65) Estendendo la (2.62) e mettendo in evidenza le componenti si ottiene:

0 ) ( ) ( ) ( ) ( ) ( ) (u x u + y u y u +z u z u = x u u u (2.66)

che per una curva PC risulta essere un polinomio quintico denotato semplicemente come f(u). I valori di u che rendono questa espressione uguale a zero rappresentano i punti sulla curva che possono essere più vicini a un dato punto nello spazio. Si devono verificare queste soluzioni ed eliminare quelle massime.

Per trovare le radici del polinomio si può utilizzare il metodo di Newton.

2.8.1 Metodo di Newton

Il metodo di Newton è un metodo ad un punto e si applica per approssimare uno zero

α

di una funzione f(u) se è derivabile con continuità in tutto un intorno di α .

(36)

Assumiamo di essere vicino alla radice α e che il valore iterativo iniziale di u, indicato con ui

non abbia fornito una soluzione, allora si può ricavare un nuovo valore per u da:

) ( ) ( 1 i u i i i u f u f u u+ = − (2.67)

L’iterata u è individuata dal punto di incontro della tangente alla curva i y= f(u) nel punto

( )

[

ui f ui

]

n

p( )≡ , (Fig) con l’asse delle ascisse. Per questo motivo il metodo di Newton viene

anche denominato metodo delle tangenti.

Figura 2-6: Interpretazione grafica del metodo di Newton.

La convergenza del metodo è di tipo locale, si verifica quindi se u si trova in un intorno di 0

α

di raggio ρ abbastanza piccolo.

Applicando il metodo di Newton alla funzione f(u) che è data dalla (2.66) è necessario calcolare la sua derivata:

u u uu u u uu u u uu u z z zz y y yy x x xx u f ( )= + + + + + (2.68)

(37)

Il processo iterativo indicato termina quando viene raggiunto un valore di f(ui+1) tale che

(

ui+1

)

−α <ε

f con ε piccolo quanto desiderato. Ciò non rappresenta la soluzione esatta, ma solo un’approssimazione con l’accuratezza desiderata.

(38)

3 QD HMI

3.1 Introduzione all’ambiente robot

Un programma KRL può essere composto da file di tipo SRC o file DAT.

Il file “SRC” è il file con il codice di programma vero e proprio. Il file “DAT” contiene invece i dati specifici di programma.

Ci sono due limitazioni sostanziali nell’uso diretto di file “SRC”:

1. La dimensione totale della memoria che il robot mette a disposizione per l’esecuzione dei programmi.

2. La dimensione del singolo file SRC.

In Figura 3-1 è mostrata la gestione della memoria nel robot

Figura 3-1: Gestione della memoria nel robot.

Una partizione dell’hard disk è destinata al controllo del robot. In questa porzione di memoria si trovano i file SRC che devono essere eseguiti. Un file SRC creato o copiato nel controllo del robot è automaticamente compilato. Se nella fase di compilazione si verificano alcuni errori, sono segnalati all’utente il quale potrà gestirli nel modo più opportuno. Il file con il codice di

Hard Disk

(39)

programma può essere selezionato per l’esecuzione solo in caso di una corretta compilazione: ovverosia se non si verificano errori.

La dimensione della porzione di memoria destinata all’esecuzione dei programmi è limitata, circa 16 MB, di conseguenza non è possibile creare o copiare all’interno della stessa un numero elevato di file. Un’altra limitazione riguarda la dimensione del singolo file che non può superare il valore di circa 4 MB.

Un file di lavorazione avente una dimensione elevata deve necessariamente essere suddiviso in tanti file minori di 4 MB. Nonostante la possibilità di dividere il file, se la sua dimensione supera la memoria disponibile al controllo del robot, la lavorazione non potrà essere eseguita interamente. In questo caso è necessario procedere manualmente con i seguenti passi:

1. Copiare nel controllo il massimo numero possibile di file in accordo alla memoria disponibile al controllo del robot.

2. Eseguire i file copiati.

3. Alla fine dell’esecuzione eliminare dal controllo i file eseguiti.

4. Ripetere i primi tre punti con i restanti file della lavorazione fino alla sua completa realizzazione.

Nell’esempio che segue è riportato un possibile scenario. La memoria disponibile per l’esecuzione dei programmi è 9 MB, il file di lavorazione “nomeFile.src” ha dimensione 18 MB. In questo caso il file di lavorazione è maggiore di 4 MB e quindi deve essere suddiviso in file con dimensione minore. Una divisione fattibile risulta: 1) “nomeFile1.src” di 4 MB, 2) “nomeFile2.src” di 4 MB, 3) “nomeFile3.src” di 4 MB, 4) “nomeFile4.src” di 4 MB, 5) “nomeFile5.src” di 2 MB. Poiché il file è maggiore della memoria disponibile al controllo l’esecuzione non può avvenire interamente ed occorre procedere con i passi indicati in precedenza. Nell’esempio riportato il numero massimo di file che possono essere eseguiti contemporaneamente è due in quanto la memoria disponibile al controllo è 9 MB ed i file occupano 4 MB. In figura 3-2 sono mostrati i passi eseguiti per completare interamente la lavorazione:

(40)

Figura 3-2: Passi per l’esecuzione manuale di un file SRC la cui dimensione supera sia quella massima possibile per un singolo file sia quella totale disponibile al controllo del robot.

Hard Disk

Controllo

Mem disp: 1 MB

Controllo

Mem disp: 1 MB

Controllo

Mem disp: 7 MB nomeFile1.src nomeFile3.src nomeFile4.src nomeFile5.src

Hard Disk

Hard Disk

nomeFile2.src 1° Passo Copia ed esecuzione di nomeFile1.src e nomeFile2.src 2° Passo Copia ed esecuzione di nomeFile3.src e nomeFile4.src 3° Passo Copia ed esecuzione di nomeFile5.src Eliminazione nomeFile1 e nomeFile2 Eliminazione nomeFile3 e nomeFile4 Eliminazione nomeFile5

Hard Disk

Controllo

Mem disp: 9 MB

(41)

3.1.1 Principali tipi di variabili

I principali tipi di variabili nel linguaggio di programmazione KUKA sono:

• INT: Il tipo di dato INT rappresenta un sottoinsieme dei numeri interi. L’intervallo dei numeri rappresentato è

[

231,231 1

]

− −

• REAL: Con il tipo REAL è possibile rappresentare numeri con virgola mobile cioè rappresentati da una mantissa e da un esponente in forma normalizzata (ad esempio 0.0985 è riprodotto come 0.98500000 E-01). L’intervallo dei numeri rappresentabile è

[

±1.1E−38,±3.4E+38

]

• BOOL: Questo tipo di variabile assumono soltanto due valori: TRUE e FALSE. Sono utili per descrivere stati logici come ad esempio gli ingressi e uscite.

• CHAR: Il tipo di dato CHAR rappresenta un carattere ASCII.

• FRAME: Il tipo FRAME è una struttura composta da 6 REAL (X,Y,Z,A,B,C). I primi tre valori (X,Y,Z) rappresentano la posizione nello spazio, mentre gli ultimi tre (A,B,C) sono valori utili per descrivere l’orientamento nello spazio.

• E6POS: La struttura E6POS è composta oltre che dagli elementi caratterizzanti il tipo di dati FRAME, da altri sei valori reali (E1,E2,E3,E4,E5,E6) utilizzati per comandare altrettanti assi addizionali come, ad esempio, il track o la tavola girevole.

3.1.2 Sistema di coordinate

La posizione e l’orientazione di un punto nello spazio può essere espresso mediante due distintivi sistemi di riferimento: specifico per asse e cartesiano.

(42)

In un sistema di riferimento specifico per asse la posizione e l’orientazione di un punto sono espressi attraverso i valori di ogni asse del robot. Per un robot a sei assi rotazionali occorre, quindi, indicare tutti e sei i valori degli angoli per determinare un punto nello spazio con un’orientazione desiderata. In figura 3-3 sono indicati gli assi coinvolti per un robot a sei assi rotazionali.

Figura 3-3: Assi e versi di rotazione del robot

In un sistema di coordinate cartesiano la posizione di un punto nello spazio è espresso attraverso tre distinti valori delle coordinate x, y e z. Per raggiungere un punto con l’orientazione desiderata occorre indicare altri tre parametri denominati A,B e C. Questi parametri sono espressi in gradi e rappresentano le rotazioni rispettivamente attorno a z, y e x nel seguente ordine:

1. Rotazione attorno a z dell’angolo A.

2. Rotazione attorno al nuovo asse y dell’angolo B. 3. Rotazione attorno al nuovo asse x dell’angolo C.

(43)

La figura 3-4 mostra il significato delle rotazioni precedenti

Figura 3-4: Significato dei valori A, B e C

Nel robot KUKA sono definiti quattro differenti sistemi di coordinate (figura 3-5):

1. Sistema di coordinate mondo 2. Sistema di coordinate robot 3. Sistema di coordinate utensile 4. Sistema di coordinate base

(44)

Il sistema di coordinate mondo (variabile $WORLD di tipo FRAME) non si muove con il movimento del robot (fisso) e rappresenta il sistema di riferimento origine per un robot.

Il sistema di coordinate robot (variabile $ROBROOT di tipo FRAME) è posizionato alla base dello stesso ed è riferito al sistema di coordinate mondo. È utilizzato come sistema di riferimento per la struttura meccanica del robot.

Il sistema di coordinate utensile (variabile $TOOL di tipo FRAME) ha l’origine sulla punta dell’utensile stesso. Ad ogni cambio utensile il sistema di coordinate deve essere aggiornato, in questo modo è possibile continuare ad usare il programma originario senza modifiche in quanto al calcolatore del robot è nota la posizione della punta dell’utensile.

Il sistema di coordinate base (variabile $BASE di tipo FRAME) è utilizzato come sistema di riferimento per l’oggetto in lavorazione ed è riferito rispetto al sistema di coordinate mondo. La programmazione dei movimenti del robot avvengono rispetto a questo sistema di coordinate. È possibile lavorare più oggetti in posizioni differenti con lo stesso programma modificando semplicemente la posizione del sistema di coordinate base.

3.2 Caratteristiche dell’applicativo QD HMI

L’applicativo QD HMI consente di risolvere il problema della memoria aggiungendo ulteriori funzionalità utili ad un operatore che esegue una lavorazione con un robot. L’interfaccia grafica della schermata principale si presenta come in figura:

(45)

L’interazione con l’interfaccia utente avviene attraverso l’uso sia del mouse sia del KCP del robot mostrato in figura 3-7:

Figura 3-7: Kuka Control Panel (KCP) del robot.

I pulsanti dell’interfaccia sono posizionati in modo tale da trovarsi in corrispondenza univoca con i tasti del KCP che si trovano in alto, in basso e a sinistra dello schermo a cristalli liquidi (figura 3-8).

Figura 3-8: visualizzazione dei tasti del KCP utilizzati per l’attivazione dei pulsanti del programma QD HMI.

(46)

Premendo il tasto del KCP si attiverà, quindi, l’azione corrispondente del pulsante dell’interfaccia.

QD HMI può eseguire due tipi di file differenti:

1. File con estensione SRC 2. File con estensione QDSRC

Il primo tipo di file, come specificato in precedenza, contiene il codice di programma e può essere eseguito solo se si trova nella parte di memoria destinata al controllo del robot e se non ha errori di compilazione. L’applicazione è comunque in grado di eseguire file SRC anche se si trovano nell’hard disk del robot. Infatti, automaticamente, copierà il file di lavorazione, ad esempio nomeFile.src, nella porzione di memoria gestita dal controllo, in assenza di errori di compilazione sarà eseguito e in seguito cancellato per fare spazio a successivi file (Figura 3-9).

Figura 3-9: Esecuzione automatica di un singolo file da parte dell’applicativo QD HMI.

Se il tipo di file da eseguire è SRC, sono comunque presenti le limitazioni sulla memoria anche con l’utilizzo di QD HMI. Infatti, non è consentita la copia nella memoria destinata all’esecuzione dei programmi di file con dimensione maggiore di 4 MB (limite massimo ammissibile) oppure con dimensione maggiore di quella disponibile.

Hard Disk

Controllo

Copia

Controllo

Controllo

Eliminazione nomeFile.src nomeFile.src nomeFile.src nomeFile.src

(47)

I file QDSRC sono formattati appositamente per poter essere eseguiti dall’applicazione. Sono file che il robot non riconosce e quindi non può eseguire. Devono trovarsi nell’hard disk del robot e per questo possono avere dimensione molto elevata. La limitazione presente nell’utilizzo dei file QDSRC dipende dalla memoria disponibile dell’hard disk che risulta normalmente molto maggiore dello spazio disponibile al controllo del robot. Il vantaggio che ne deriva è quello di poter eseguire lavorazioni con un numero elevato di punti senza l’obbligo di dividere il file in tanti piccoli file.

Una funzionalità di base offerta dall’applicazione è la possibilità di creare una lista di file di lavorazione. Tale lista può essere costituita indipendentemente solo da file SRC, solo da file QDSRC oppure una lista che contiene entrambi i file contemporaneamente. Il numero di file che può contenere la lista è in teoria illimitato, ma in pratica dipende dalla dimensione della memoria disponibile dell’hard disk. La possibilità di creare una lista di esecuzione costituita solo da file SRC in aggiunta al vantaggio riferito in precedenza di poter eseguire tali file anche se si trovano nell’hard disk, forniscono l’opportunità di realizzare interamente una lavorazione anche se la dimensione del file di partenza è molto elevata. Infatti, dopo aver suddiviso il file SRC della lavorazione in tanti file SRC con dimensione opportuna sarà possibile creare una lista di esecuzione che l’applicativo provvederà a eseguire. Il compito che deve svolgere per ogni file presente nella lista è indicato nei passi seguenti:

1. Copia del file nel controllo del robot.

2. Esecuzione del file se non sono presenti errori di compilazione. 3. Cancellazione del file dal controllo del robot.

La condizione necessaria affinché la lavorazione possa svolgersi interamente è che tutti i file si trovino contemporaneamente nell’hard disk.

Per verificare l’effettivo vantaggio, è ripresa la lavorazione dell’esempio precedente ed eseguita utilizzando l’applicativo QD HMI. Dopo aver creato la lista di esecuzione desiderata:

1. “nomeFile1.src” 2. “nomeFile2.src” 3. “nomeFile3.src” 4. “nomeFile4.src” 5. “nomeFile5.src”.

(48)

ed avviata la lavorazione, l’applicazione eseguirà per ogni file i passi precedentemente esposti come mostrato in figura 3-10.

Figura 3-10 esecuzione automatica di un’intera lavorazione da parte dell’applicativo QD HMI.

Controllo

Mem disp: 5 MB nomeFile1.src

Hard Disk

Eliminazione nomeFile1

Controllo

Mem disp: 5 MB nomeFile2.src

Controllo

Mem disp: 5 MB nomeFile3.src nomeFile1.src nomeFile2.src

Hard Disk

Hard Disk

nomeFile2.src nomeFile3.src nomeFile4.src nomeFile3.src nomeFile5.src 1° Passo Copia ed esecuzione di nomeFile1.src 2° Passo Copia ed esecuzione di nomeFile2.src Eliminazione nomeFile2 nomeFile1.src nomeFile4.src nomeFile5.src nomeFile2.src nomeFile3.src nomeFile4.src nomeFile5.src Eliminazione nomeFile4

Controllo

Mem disp: 5 MB nomeFile5.src nomeFile2.src

Hard Disk

nomeFile3.src 5° Passo Copia ed esecuzione di nomeFile5.src nomeFile1.src nomeFile4.src nomeFile5.src 4° Passo Copia ed esecuzione di nomeFile4.src

Controllo

Mem disp: 5 MB nomeFile4.src

Hard Disk

nomeFile1.src nomeFile2.src nomeFile3.src nomeFile4.src nomeFile5.src 3° Passo Copia ed esecuzione di nomeFile3.src Eliminazione nomeFile5

Hard Disk

nomeFile1.src nomeFile2.src nomeFile3.src nomeFile4.src nomeFile5.src

Controllo

Mem disp: 9 MB Eliminazione nomeFile3 nomeFile1.src

(49)

Durante l’esecuzione della sequenza è molto importante la possibilità di aggiungere uno o più file, sia di tipo SRC che QDSRC, alla fine della lista. Per esempio ammettiamo che una lavorazione sia composta da tre file (nomeFile1.qdsrc, nomeFile2.qdsrc e nomeFile3.qdsrc) ma soltanto nomeFile1.qdsrc e nomeFile2.qdsrc siano effettivamente disponibili. In questo caso è possibile costruire la lista con i primi due file e durante la loro esecuzione realizzare il terzo file. Una volta completata la realizzazione aggiungerlo in coda alla lista senza dover attendere la fine della lavorazione dei primi due.

Aggiungere file durante l’esecuzione è, quindi, un altro vantaggio significativo che possiede l’applicazione QD HMI.

Una caratteristica importante riferita in precedenza dei file QDSRC, è la possibilità di eseguire interamente delle lavorazioni senza l’obbligo di dividere il file. Oltre a questo possiedono altri particolari che rendono molto più conveniente il loro uso rispetto ai file SRC:

1. Punti totali.

2. Percentuale di esecuzione e stima del tempo rimanente. 3. Personalizzare l’esecuzione della sequenza.

4. Ripresa dell’esecuzione.

5. Modifica dei parametri di velocità. 6. Correzione dei profili di lavorazione.

3.2.1 Punti totali

L’esecuzione di un file QDSRC offre la possibilità di visualizzare il numero dei punti totali di movimentazione che il robot deve eseguire per terminare la lavorazione del file in esecuzione. Attraverso questa informazione l’utente può avere un’indicazione sulla dimensione della lavorazione che il robot deve compiere. Il numero dei punti totali viene sfruttato dal programma QD HMI per stimare il tempo rimante e la percentuale di esecuzione.

3.2.2 Percentuale di esecuzione e stima del tempo rimanente

La percentuale di esecuzione e la stima del tempo rimanente sono informazioni puramente statistiche e non sono necessarie al corretto funzionamento dell’applicativo. Permettono in tempo

(50)

reale di conoscere lo stato sull’esecuzione della lavorazione in corso. In particolare la percentuale di esecuzione è calcolata conoscendo il numero dei punti eseguiti associati ad una movimentazione del robot, sul totale dei punti previsti (paragrafo 3.2.1). La stima del tempo rimanente per concludere la lavorazione è ricavata conoscendo il numero dei punti di movimentazione eseguiti, il tempo impiegato dal robot per compiere i movimenti associati ai precedenti punti e il numero dei punti mancanti per completare la lavorazione. Con le informazioni precedenti la stima è semplicemente ricavata attraverso una proporzione.

3.2.3 Personalizzare l’esecuzione della sequenza

L’applicativo permette di personalizzare l’esecuzione della sequenza dei file modificando il valore di alcuni parametri. È possibile, quindi, eseguire parzialmente o totalmente la sequenza dei file impostata. I parametri modificabili sono:

1. File di partenza 2. File di arresto 3. Punto di partenza: 4. Punto di arresto

3.2.3.1 File di partenza

Il valore del file di partenza specifica il numero del file della lista da cui deve partire l’esecuzione della sequenza. Il valore dovrà essere maggiore o uguale a uno (i file sono numerati a partire da uno e non da zero) e minore o uguale al numero massimo dei file presenti nella lista.

3.2.3.2 File di arresto

Il numero immesso come file di arresto indica a quale file deve terminare l’esecuzione della sequenza. Il valore risulta maggiore o uguale del numero del file di partenza e minore o uguale al numero massimo dei file presenti nella lista. Per indicare l’ultimo file della sequenza è possibile inserire invece del valore numerico semplicemente la parola end oppure END.

Figura

Figura 2-1: Geometria di una trave fissata agli estremi soggetta a due momenti flettenti
Figura 2-2: Interpolazione di una funzione mediante spline
Figura 2-5: Principali elementi utili per il calcolo della minima distanza tra un punto e una  curva
Figura 3-8: visualizzazione dei tasti del KCP utilizzati per l’attivazione dei pulsanti del  programma QD HMI
+7

Riferimenti

Documenti correlati

The focus of this research topic is to make a special contribution to the ethnopharmacology of Asteraceae, considering their phytochemistry (as it relates to medical uses)

IN ItALIA È SeMPre PIÙ CoNSISteNte IL NUMero DI IMPIANtI FotoVoLtAICI SottoPerForMANtI, CoMe DIMoStrAto ANChe DAL CALo DI ProDUZIoNe DA FoNte SoLAre DeL 13% reGIStrAto

Naturalmente, a differenza di altri dispositivi indossabili come l’orologio o le cuffie, il calcolatore indossabile (wea- rable computer) ha tutte le funzionalità di un

La macchina di Carnot ` e formata da un ciclo in un gas perfetto, costituito da due trasformazioni isoterme (ab e dc in figura) e due adiabatiche (bc e da in figura).. E’ il

In effetti chi vuole programmare un calcolatore non usa questo linguaggio, ma usa un linguaggio cosiddetto di programmazione, che ha una struttura più vicina

502, recante &#34;riordino della disciplina in materia sanitaria, a norma dell'ari 1 della legge 23 ottobre 1992, n, 421&#34;, nel testo modificato dal decreto legislativo 7

informatica.it/tecnologie/hardware.html.. Tuttavia anche utilizzando delle cuffie per evitare che l’audio proveniente dalle casse venga captato dal microfono vi sono sempre i

Data la crescente importanza dell’interazione e dell’innovazione nei processi di sviluppo prodotto, questa ricerca si pone l’obiettivo principale di creare un metodo