Sei sulla pagina 1di 217

lOMoARcPSD|6740849

Appunti Robotica

Robotica (Informatica LM) (9 crediti) (Università degli Studi di Bergamo)

StuDocu no está patrocinado ni avalado por ningún colegio o universidad.


Descargado por RWEN CSC (rwen.ayesa@gmail.com)
lOMoARcPSD|6740849

Università degli studi di bergamo

Corso di laurea magistrale in ingegneria


informatica
Robotica

Appunti di robotica

Author:
Simone Giusso

14 gennaio 2019

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

ii

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Indice

1 Introduzione 5
1.1 Evoluzione della Robotica . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Robot Manipolatori . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Robot Mobili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Maggiori settori di impiego dei Robot . . . . . . . . . . . . . . . 7

2 Varibilità nei robot mobili 9


2.1 Variabilità nei robot . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Varibilità nella navigazione robotica . . . . . . . . . . . . . . . . 9
2.2.1 Motor control . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 Trajectory Following . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Motion planning . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.4 Localization . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.5 Obstacle avoidance . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Da cosa dipende la variabilità nei robot? . . . . . . . . . . . . . . 11
2.3.1 Personificazione . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.2 Collocazione . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.3 Intelligenza . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Progettazione del sistema di navigazione . . . . . . . . . . . . . . 13

3 Cinematica dei robot mobili su ruote 15


3.1 Robot mobili su ruote . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Cinematica di un robot mobile . . . . . . . . . . . . . . . . . . . 15
3.2.1 Ruote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Locomozione di un robot mobile . . . . . . . . . . . . . . . . . . 18
3.4 Differential Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.5 Triciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.6 Robot con sterzo di Ackerman . . . . . . . . . . . . . . . . . . . . 22
3.7 Carrello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.8 Robot Sincrono . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.9 Robot omnidirezionale . . . . . . . . . . . . . . . . . . . . . . . . 24
3.10 Odometria per robot differenziali . . . . . . . . . . . . . . . . . . 24

4 Software Driver for Differential Drive 29


4.1 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2 Comunicazione seriale . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Robot BART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 Controllo dei motori PWM . . . . . . . . . . . . . . . . . . . . . 30

iii

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

iv INDICE

4.5 Libreria MD25Driver . . . . . . . . . . . . . . . . . . . . . . . . . 30


4.6 Le classi RoverDriver e Navigator . . . . . . . . . . . . . . . . . . 31
4.7 Sistemi concorrenti . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.8 Sistemi Distribuiti . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5 ROS (Robot Operating System) 33


5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2 Meccanismo Publish-subscribe . . . . . . . . . . . . . . . . . . . 34
5.3 ROS package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6 Motion Control 35
6.1 Pose controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
6.2 Differential Drive pose control . . . . . . . . . . . . . . . . . . . . 35
6.3 Omnidirectional pose control . . . . . . . . . . . . . . . . . . . . 37
6.4 Trajectory Following . . . . . . . . . . . . . . . . . . . . . . . . . 38

7 Obstacle Avoidance 39
7.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2 Bug Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.3 Vector Field Histogram . . . . . . . . . . . . . . . . . . . . . . . 40
7.4 Basic Curvature Velocity Methods . . . . . . . . . . . . . . . . . 41
7.5 Dynamic Window Approach . . . . . . . . . . . . . . . . . . . . . 41
7.6 CostMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.7 Metodo dei campi potenziali . . . . . . . . . . . . . . . . . . . . . 42

8 2D Map Building 45
8.1 Errori e rumori nella misurazione . . . . . . . . . . . . . . . . . . 46
8.2 Motion Blur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
8.3 Mapping a breve e lungo termine . . . . . . . . . . . . . . . . . . 47
8.4 Mappe 2D geometriche . . . . . . . . . . . . . . . . . . . . . . . . 48
8.4.1 Telemetro laser . . . . . . . . . . . . . . . . . . . . . . . . 48
8.4.2 Retta nel piano . . . . . . . . . . . . . . . . . . . . . . . . 48
8.4.3 Segmentazione dei punti . . . . . . . . . . . . . . . . . . . 49
8.4.4 Mappa Locale e Globale . . . . . . . . . . . . . . . . . . . 50
8.5 Mappe di occupazione 2D . . . . . . . . . . . . . . . . . . . . . . 50
8.5.1 Modello dato da un sensore laser . . . . . . . . . . . . . . 50
8.5.2 Modello dato da un sensore sonar . . . . . . . . . . . . . . 51
8.6 Quadtree per mappe di occupazione 2D . . . . . . . . . . . . . . 52
8.6.1 Griglia di occupazione 2D . . . . . . . . . . . . . . . . . . 52
8.7 Mapping Topologico . . . . . . . . . . . . . . . . . . . . . . . . . 53

9 Robot Localization 57
9.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9.2 Localizzazione probabilistica . . . . . . . . . . . . . . . . . . . . . 57
9.3 Sensor aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9.4 5 passi per la localizzazione basata su mappa . . . . . . . . . . . 58
9.4.1 1. Calcolo dell’odometria . . . . . . . . . . . . . . . . . . 58
9.4.2 2. Osservazione . . . . . . . . . . . . . . . . . . . . . . . . 58
9.4.3 3. Predizione delle misure . . . . . . . . . . . . . . . . . . 59
9.4.4 4 e 5. Matching e stima . . . . . . . . . . . . . . . . . . . 59

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

INDICE v

9.5 Localizzazione e navigazione basata su marcatori . . . . . . . . . 60


9.5.1 Triangolazione lineare con orientamento del robot noto . . 60
9.5.2 Triangolazione lineare con orientamento del robot non noto 62
9.5.3 Triangolazione circolare . . . . . . . . . . . . . . . . . . . 62

10 SLAM 65
10.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.2 Localizzazione e Mapping: Elementi . . . . . . . . . . . . . . . . 65
10.3 Localizzazione e Mapping: Definizioni Generali . . . . . . . . . . 66
10.4 Il problema della localizzazione e del mapping . . . . . . . . . . . 66
10.4.1 Problema della localizzazione . . . . . . . . . . . . . . . . 67
10.4.2 Problema del mapping . . . . . . . . . . . . . . . . . . . . 67
10.5 Problema della localizzazione e del mapping simultaneo . . . . . 68
10.6 Filtro di Kalman Esteso - Introduzione . . . . . . . . . . . . . . . 68
10.6.1 Modelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
10.6.2 Modello del movimento . . . . . . . . . . . . . . . . . . . 69
10.6.3 Modello dei sensori . . . . . . . . . . . . . . . . . . . . . . 70
10.7 EFK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

11 Motion Planning 2D 71
11.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.2 Composizione dell’ambiente . . . . . . . . . . . . . . . . . . . . . 71
11.3 Spazio di configurazione . . . . . . . . . . . . . . . . . . . . . . . 71
11.4 Somme di Minkowski . . . . . . . . . . . . . . . . . . . . . . . . . 73
11.5 Conceptual Framework . . . . . . . . . . . . . . . . . . . . . . . . 74
11.6 Approcci per il Path Planning . . . . . . . . . . . . . . . . . . . . 74
11.7 Vincoli tipici per il Path Planning . . . . . . . . . . . . . . . . . 75
11.8 Metodi di Path Planning . . . . . . . . . . . . . . . . . . . . . . . 75

12 Roadmap probabilistiche 79
12.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
12.2 Completezza di un planner . . . . . . . . . . . . . . . . . . . . . 79
12.3 Roadmap probabilistiche . . . . . . . . . . . . . . . . . . . . . . . 79
12.3.1 Fase di apprendimento . . . . . . . . . . . . . . . . . . . . 80
12.3.2 Fase di Query . . . . . . . . . . . . . . . . . . . . . . . . . 82
12.3.3 Rapidly-Growing Random Trees . . . . . . . . . . . . . . 82
12.4 Strategie di Sampling per Motion Planning . . . . . . . . . . . . 82
12.4.1 Sampling Gaussiano . . . . . . . . . . . . . . . . . . . . . 83
12.4.2 Bridge Test . . . . . . . . . . . . . . . . . . . . . . . . . . 84
12.4.3 Scelta dell’algoritmo . . . . . . . . . . . . . . . . . . . . . 84
12.5 Vincoli cinematici e dinamici . . . . . . . . . . . . . . . . . . . . 85
12.5.1 Robot sottoattuati . . . . . . . . . . . . . . . . . . . . . . 85
12.5.2 Controllo basato su campionamento . . . . . . . . . . . . 86

13 Geometria nello spazio 3D 89


13.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
13.2 Traslazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
13.3 Rotazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
13.3.1 Rotazione rispetto all’asse z . . . . . . . . . . . . . . . . . 90
13.3.2 Rotazione rispetto all’asse y . . . . . . . . . . . . . . . . . 91

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

vi INDICE

13.3.3 Rotazione rispetto all’asse x . . . . . . . . . . . . . . . . . 92


13.3.4 Geometria delle rotazioni . . . . . . . . . . . . . . . . . . 93
13.3.5 Rotazioni successive rispetto alla terna corrente . . . . . . 93
13.3.6 Rotazioni successive rispetto ad una terna fissa . . . . . . 94
13.3.7 Sequenze di rotazioni . . . . . . . . . . . . . . . . . . . . . 95
13.3.8 Angoli di Yaw/Pitch/Roll . . . . . . . . . . . . . . . . . . 95
13.3.9 Angoli di Eulero I e II . . . . . . . . . . . . . . . . . . . . 96
13.4 Rototraslazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
13.4.1 Composizione di rototraslazioni . . . . . . . . . . . . . . . 97

14 Telecamere per la visione artificiale 99


14.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
14.2 Telecamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
14.2.1 Campo visivo . . . . . . . . . . . . . . . . . . . . . . . . . 100
14.2.2 Risoluzione . . . . . . . . . . . . . . . . . . . . . . . . . . 101
14.2.3 Modello pinhole . . . . . . . . . . . . . . . . . . . . . . . . 102
14.2.4 Distanza Focale . . . . . . . . . . . . . . . . . . . . . . . . 103
14.3 Calibrazione della telecamera . . . . . . . . . . . . . . . . . . . . 103
14.3.1 Proiezione prospettica . . . . . . . . . . . . . . . . . . . . 104
14.3.2 Spazio proiettivo . . . . . . . . . . . . . . . . . . . . . . . 104
14.3.3 Digitalizzazione . . . . . . . . . . . . . . . . . . . . . . . . 105
14.3.4 Trasformazione tra sistemi di riferimento . . . . . . . . . 105
14.3.5 Distorsione della lente . . . . . . . . . . . . . . . . . . . . 105

15 Visual Place Recognition 107


15.1 Segnaletica orizzontale . . . . . . . . . . . . . . . . . . . . . . . . 107
15.2 Appearance-Based Localization . . . . . . . . . . . . . . . . . . . 107
15.3 OpenFabMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

16 Elaborazioni delle immagini 111


16.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
16.2 Elaborazioni puntuali . . . . . . . . . . . . . . . . . . . . . . . . 111
16.2.1 Contrasto . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
16.2.2 Operazioni di soglia . . . . . . . . . . . . . . . . . . . . . 111
16.2.3 Istogramma . . . . . . . . . . . . . . . . . . . . . . . . . . 112
16.2.4 Contrast stretching . . . . . . . . . . . . . . . . . . . . . . 112
16.3 Equalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
16.4 Elaborazioni locali . . . . . . . . . . . . . . . . . . . . . . . . . . 114
16.4.1 Rumore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
16.4.2 Convoluzione . . . . . . . . . . . . . . . . . . . . . . . . . 114
16.5 Rilevamento dei bordi . . . . . . . . . . . . . . . . . . . . . . . . 117
16.6 Hough trasformation . . . . . . . . . . . . . . . . . . . . . . . . . 118

17 Line Following 121


17.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
17.2 Legge di controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

INDICE vii

18 Mapping 3D 123
18.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
18.2 Scanner 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
18.2.1 Flight scanner . . . . . . . . . . . . . . . . . . . . . . . . 124
18.2.2 Scanner basati su triangolazione . . . . . . . . . . . . . . 124
18.2.3 Structured light scanner . . . . . . . . . . . . . . . . . . . 125
18.3 Visione stereoscopica . . . . . . . . . . . . . . . . . . . . . . . . . 125
18.3.1 Geometria epipolare . . . . . . . . . . . . . . . . . . . . . 125
18.4 Compressione dei dati . . . . . . . . . . . . . . . . . . . . . . . . 127
18.4.1 OctTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
18.5 Generazione di Mesh 3D . . . . . . . . . . . . . . . . . . . . . . . 128
18.5.1 Triangle meshes . . . . . . . . . . . . . . . . . . . . . . . . 128
18.5.2 Lo standard Collada . . . . . . . . . . . . . . . . . . . . . 129

19 SLAM monoculare 131


19.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
19.2 Calcolo delle corrispondeze . . . . . . . . . . . . . . . . . . . . . 131
19.3 Accoppiamento feature-based . . . . . . . . . . . . . . . . . . . . 132
19.4 Algoritmo ICP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
19.5 Optical flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
19.6 Librerie per SLAM Monoculare . . . . . . . . . . . . . . . . . . . 133

20 Architettura di controllo dei robot 135


20.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
20.2 Architettura di controllo . . . . . . . . . . . . . . . . . . . . . . . 136
20.2.1 Controllo deliberativo . . . . . . . . . . . . . . . . . . . . 137
20.2.2 Controllo reattivo . . . . . . . . . . . . . . . . . . . . . . 137
20.2.3 Controllo ibrido . . . . . . . . . . . . . . . . . . . . . . . . 139

21 Pianificazione automatica 141


21.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
21.2 Tipi di pianificazione . . . . . . . . . . . . . . . . . . . . . . . . . 142
21.3 Modelli concettuali per pianificazione automatica . . . . . . . . . 142
21.3.1 Sistema stati-transizione . . . . . . . . . . . . . . . . . . . 142
21.3.2 Modello concettuale . . . . . . . . . . . . . . . . . . . . . 143
21.4 Il problema di pianificazione . . . . . . . . . . . . . . . . . . . . . 143
21.4.1 Assunzioni restrittive . . . . . . . . . . . . . . . . . . . . . 143
21.4.2 Pianificazione classica . . . . . . . . . . . . . . . . . . . . 144
21.4.3 Rilassamento delle assunzioni . . . . . . . . . . . . . . . . 144
21.5 Rappresentazioni per la pianificazione classica . . . . . . . . . . . 145
21.6 Logica del primo ordine . . . . . . . . . . . . . . . . . . . . . . . 145
21.7 Reti gerarchiche di Task . . . . . . . . . . . . . . . . . . . . . . . 146
21.7.1 Simple Task Network (STN) Planning . . . . . . . . . . . 147
21.8 Processi di decisione markoviani . . . . . . . . . . . . . . . . . . 148
21.8.1 Sistemi stocastici . . . . . . . . . . . . . . . . . . . . . . . 148
21.8.2 Aggiunte . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
21.8.3 Pianificazione come ottimizzazione . . . . . . . . . . . . . 150
21.9 Processi di decisione markoviani P.O. . . . . . . . . . . . . . . . . 151

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

viii INDICE

22 Meccanica dei robot manipolatori 153


22.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
22.2 Tipi di giunti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
22.3 Tipi di link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
22.4 Gradi di libertà . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
22.5 Spazio di lavoro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
22.6 Tipi di robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
22.6.1 Robot cartesiano . . . . . . . . . . . . . . . . . . . . . . . 156
22.6.2 Robot cilindrico . . . . . . . . . . . . . . . . . . . . . . . 156
22.6.3 Rotot sferico o polare . . . . . . . . . . . . . . . . . . . . 157
22.6.4 Robot articolato . . . . . . . . . . . . . . . . . . . . . . . 157
22.6.5 Robot SCARA . . . . . . . . . . . . . . . . . . . . . . . . 157
22.6.6 Polso di robot . . . . . . . . . . . . . . . . . . . . . . . . . 158
22.7 Precisione di un robot . . . . . . . . . . . . . . . . . . . . . . . . 158
22.8 Altre misure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

23 Programmazione KR16 161


23.1 Kuka KR-C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
23.1.1 On-line programming . . . . . . . . . . . . . . . . . . . . 161
23.1.2 Off-line programming . . . . . . . . . . . . . . . . . . . . 162
23.2 Sistema di coordinate . . . . . . . . . . . . . . . . . . . . . . . . 162
23.3 Movimenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
23.3.1 Movimenti approssimati . . . . . . . . . . . . . . . . . . . 165
23.4 Progetto Technix . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

24 Cinematica diretta dei manipolatori 167


24.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
24.2 Cinematica di un robot planare . . . . . . . . . . . . . . . . . . . 167
24.3 Metodo di Denavit - Hartemberg . . . . . . . . . . . . . . . . . . 169
24.3.1 Catena cinematica aperta . . . . . . . . . . . . . . . . . . 169
24.3.2 Rototraslazione nei giunti estremi di un link . . . . . . . . 169
24.3.3 Rototraslazione nei link . . . . . . . . . . . . . . . . . . . 170
24.3.4 L’algoritmo di Denavit-Hartemberg . . . . . . . . . . . . . 170
24.3.5 Cinematica diretta . . . . . . . . . . . . . . . . . . . . . . 171
24.4 Esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
24.4.1 Manipolatore a gomito planare . . . . . . . . . . . . . . . 172
24.4.2 Manipolatore RR . . . . . . . . . . . . . . . . . . . . . . . 173
24.4.3 Manipolatore RT . . . . . . . . . . . . . . . . . . . . . . . 173
24.4.4 Manipolatore TR . . . . . . . . . . . . . . . . . . . . . . . 174
24.4.5 Manipolatore TT . . . . . . . . . . . . . . . . . . . . . . . 175
24.4.6 Robot SCARA . . . . . . . . . . . . . . . . . . . . . . . . 175
24.5 Convenzione per la mano . . . . . . . . . . . . . . . . . . . . . . 176
24.6 Rindondanze e degenerazioni . . . . . . . . . . . . . . . . . . . . 176

25 Cinematica inversa 179


25.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
25.2 Molteplici soluzioni . . . . . . . . . . . . . . . . . . . . . . . . . . 179
25.3 Metodi di risoluzione . . . . . . . . . . . . . . . . . . . . . . . . . 179
25.4 Calcolo della soluzione in forma chiusa . . . . . . . . . . . . . . . 180
25.4.1 Metodo analitico . . . . . . . . . . . . . . . . . . . . . . . 180

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

INDICE ix

25.4.2 Metodo geometrico . . . . . . . . . . . . . . . . . . . . . . 182


25.4.3 Metodo di Paul . . . . . . . . . . . . . . . . . . . . . . . . 183
25.4.4 Metodi di risoluzione . . . . . . . . . . . . . . . . . . . . . 183
25.4.5 Caso generale: Manipolatore a 6 gdl . . . . . . . . . . . . 184
25.4.6 Caso particolare: Tre assi intersecanti . . . . . . . . . . . 184

26 Cinematica differenziale 187


26.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
26.2 Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
26.3 Moto differenziale . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
26.4 Jacobiano inverso . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

27 Metodi iterativi per la C.I. 191


27.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
27.2 Gradient descent . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
27.2.1 Esempio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
27.3 Invertire lo Jacobiano . . . . . . . . . . . . . . . . . . . . . . . . 193
27.3.1 Sistemi sottovincolati . . . . . . . . . . . . . . . . . . . . 193
27.3.2 Sistemi sovra-vincolati . . . . . . . . . . . . . . . . . . . . 193
27.3.3 Sistemi correttamente vincolati . . . . . . . . . . . . . . . 193
27.3.4 Pseudo-inversa . . . . . . . . . . . . . . . . . . . . . . . . 194
27.3.5 Jacobiana trasposta . . . . . . . . . . . . . . . . . . . . . 194
27.4 Iterare verso la soluzione . . . . . . . . . . . . . . . . . . . . . . . 194
27.5 Altri problemi della cinematica inversa . . . . . . . . . . . . . . . 194

28 Controllo assi 197


28.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
28.2 Controllo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
28.2.1 Controllo nello spazio cartesiano . . . . . . . . . . . . . . 198
28.2.2 Controllo nello spazio dei giunti . . . . . . . . . . . . . . . 199
28.3 Traiettoria di un singolo asse . . . . . . . . . . . . . . . . . . . . 199
28.3.1 Punti di via . . . . . . . . . . . . . . . . . . . . . . . . . . 201
28.3.2 Traittoria a velocità costante . . . . . . . . . . . . . . . . 201

29 Controllo in forza 203


29.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
29.2 Attività di interesse . . . . . . . . . . . . . . . . . . . . . . . . . 204
29.3 Approcci di controllo . . . . . . . . . . . . . . . . . . . . . . . . . 205
29.3.1 Controllo dell’impedenza VS controllo ibrido force-motion 206
29.3.2 Controllo conforme . . . . . . . . . . . . . . . . . . . . . . 206
29.3.3 Retro-guidabilità . . . . . . . . . . . . . . . . . . . . . . . 206

30 Ingegneria del software per robot 207


30.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
30.2 Riuso del software . . . . . . . . . . . . . . . . . . . . . . . . . . 207
30.2.1 Separazione dei problemi . . . . . . . . . . . . . . . . . . 207
30.2.2 Riuso dei componenti . . . . . . . . . . . . . . . . . . . . 208
30.3 Ingegneria del dominio . . . . . . . . . . . . . . . . . . . . . . . . 209
30.4 Tecniche di realizzazione della variabilità . . . . . . . . . . . . . . 209

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

x INDICE

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 1

Introduzione

1.1 Evoluzione della Robotica


Nel corso del ’900 la robotica ha avuto la sua maggiore evoluzione:

• 1921: Karel Capek realizza un’opera teatrale in cui si aveva una macchina
(chiamata «robot» dal ceco «robota» - cioè «lavorare») che aiutava il
padrone.

• 1941: Isaac Asimov definisce alcune regole, ancora attuali (nonostante


fosse solamente un autore di fantascienza), in cui sostiene che il robot non
deve fare danni all’uomo.

• 1954: Nasce il primo braccio automatico che viene subito utilizzato nelle
industrie. La nascita del braccio meccanico si ha in questo periodo grazie
all’introduzione dei computer.

• 1961: Nasce la prima azienda nel mondo della robotica fondata da Joseph
F. Engelberger e George Devol.

• 1965: Si ha il primo prototipo di robot mobile non radiocomandato.

• 1980: Appaiono i primi robot di servizio in grado di assistere gli esseri


umani nei loro compiti.

• 1984: Inizia la produzione su larga scala raggiungendo presto le 100’000


unità vendute.

• 1997: Viene creato il primo robot mobile per l’esplorazione spaziale.

• Anni 2000: Vengono creati i primi robot umanoidi (prodotti da Honda) e


successivamente le prime autonomous Car che hanno un elevato grado di
complessità poichè devono essere in grado di capire il contesto e prendere
decisioni.

Si hanno quindi diverse problematiche, anche di natura etica ed assicurativa.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

6 CAPITOLO 1. INTRODUZIONE

1.2 Robot Manipolatori


I robot manipolatori sono caratterizzati da:

• Elevata precisione.

• Elevata velocità.

• Elevata efficacia.

Essi trovano impiego nell’industria manifatturiera in quanto particolarmente


adatti a svolgere operazioni ripetitive.

Figura 1.1: Esempio di robot manipolatore

Generalmente, i robot manipolatori, sono robot che vengono pre-programmati


per fare specifici movimenti. Questi tipi di robot possono essere collocati in
un’area recintata oppure no nel caso venga richiesta una continua iterazione
con degli operatori. Un aspetto che determina la complessità di questo tipo di
robot è il fatto che essi devono essere in grado di capire quando un operatore
entra nella sua area di lavoro, in modo da non poterlo danneggiare.

1.3 Robot Mobili


La funzione principale dei robot mobili (tipo tagliaerba automatici, o aspira-
polvere automatici ) è quella di muoversi evitando gli ostacoli, coprendo tutta
la superficie interna ad un certo perimetro ottimizzando gli spostamenti. Per
avere questo comportamento, i robot mobili devono potersi rendere conto di
come è fatto l’ambiente (mapping del territorio) e avere conoscenza della pro-
pria posizione istante per istante (rispetto ad un certo sistema di riferimento).
Tutte queste informazioni vengono acquisite tramite sensori, direttamente dal
robot. Esistono robot mobili che sono anche manipolatori, quindi che sono in
grado, oltre che di spostarsi, anche di interagire con l’ambiente circostante. Ad
esempio esistono robot mobili manipolatori con delle ruote omnidirezionali che
sono quindi in grado di muoversi in tutte le direzioni.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

1.4. MAGGIORI SETTORI DI IMPIEGO DEI ROBOT 7

(a) Robot Mobile Manipolatore (b) DLR Justin

Figura 1.2: Esempio di robot Mobili. A sinistra un robot mobile


manipolatore, a destra un robot mobile umanoide sviluppato per
operazioni di assemblaggio sulla luna.

Alcuni robot mobili sono utilizzati anche in agricoltura oppure nel caso dei
veicoli spaziali. Questo secondo tipo di veicoli è parecchio complesso perché
deve essere completamente autonomo. Infatti, un segnale dalla Terra a Marte
impiegherebbe dai 5 ai 20 minuti per essere ricevuto, perciò è impensabile poterli
pilotare. Anche le auto autome, precedentemente discusse, sono un esempio di
robot mobili.

1.4 Maggiori settori di impiego dei Robot


Attualmente, i settori industriali in cui si utilizzano maggiormente i robot sono:

• Manipolazione.

• Assemblaggio.

• Verniciatura di prodotti.

• Saldatura ad arco.

• Taglio laser.

• Operazioni di finitura meccanica.

• Medicale.

• Agricoltura.

• Militare.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

8 CAPITOLO 1. INTRODUZIONE

La categoria di industria in cui i robot sono maggiormente utilizzati è sicu-


ramente quella dell’automotive. L’utilizzo dei Robot è in constante crescita e
l’Italia risulta essere il 5◦ paese per densità di Robot (sul numero di impiegati)
nell’industria manifatturiera e 2◦ nell’industria dell’automotive. Anche i robot
di servizio hanno avuto un’ importante diffusione e vengono utilizzati in svariate
applicazioni come:
• Ambienti estremi (spazio, sott’acqua).

• Robot medicali.
• Pulizia della casa.
• Taglia erba.
• Industria alimentare.

• Guida museo.
• Lotta anticendio.
• Ispezione e sorveglianza.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 2

Varibilità nei robot mobili

2.1 Variabilità nei robot


I robot oggi svolgono diversi compiti anche molto diversi tra loro (guida turistica,
auto autonome, logistica, ecc...). Uno dei maggiori interessi è quello di trovare
quegli aspetti che li accomunano. Nei robot odierni il costo per lo sviluppo del
software è una parte molto significativa del costo totale. Questo significa che,
essendo il costo di sviluppo software un costo elevato, per forza di cose anche
il costo dell’intero robot deve essere elevato. Allora, l’idea che si preferisce
seguire è quella di rendere economicamente vantaggioso lo sviluppo software
sfruttandone il riutilizzo, ovvero progettare già in partenza il SW per renderlo
adatto ad utilizzi futuri. Ad esempio, in generale tutti i robot mobili hanno la
necessità di «navigare nello spazio», ovvero andare da un punto A ad un punto
B, evitando gli ostacoli ma spesso lo fanno in modi diversi. Allora si può pensare
di trovare una soluzione che sia unica per tutti i robot mobili e che vada bene
per tutte le soluzioni in cui essi possono essere utilizzati.

2.2 Varibilità nella navigazione robotica


Supponiamo di voler realizzare un robot mobile. Possiamo pensare che tutti
i robot mobili siano composti, dal punto di vista software, da una struttura a
livelli costituita dai seguenti blocchi (in ordine gerarchico dal livello più alto):

• Motion planning: per il calcolo del percorso.

• Trajectory following: per seguire il percorso calcolato in modo autono-


mo.

• Localization: per conoscere la sua posizione rispetto ad un sistema di


riferimento.

• Obstacle avoidance: per rilevare gli ostacoli ed aggirarli.

• Motor control: per controllare i motori in modo da far muovere il robot


in base alla traiettoria calcolata.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

10 CAPITOLO 2. VARIBILITÀ NEI ROBOT MOBILI

Questi blocchi incidono sulla qualità del robot e possono essere realizzati in
diversi modi in base allo scopo del robot.

Figura 2.1: Per permettere ad un robot di raggiungere un punto B


partendo da un punto A è necessario effettuare diverse operazioni:
pianificare il percorso, seguire una traiettoria, localizzarsi, evitare
gli ostacoli e controllare i motori

2.2.1 Motor control


Il motor control si occupa di "tradurre" i comandi ai motori per far compiere
al robot i movimenti desiderati. I movimenti di un robot dipendono dalla sua
struttura meccanica, è possibile però descrivere il movimento di un qualsiasi
robot tramite il cosidetto Twist. Il Twist è costituito da due parametri: velocità
lineare e velocità angolare. A seconda della tipologia di robot mobile è necessario
specificare un twist differente. Ad esempio per i robot Differential Drive il
twist è composto da una velocità lineare sul solo asse x mentre per i robot
Omnidirectional la velocità lineare è espressa lungo l’asse x e y, entrambi hanno
però la velocità angolare riferita all’asse z.

(a) Robot Differential Drive (b) Robot Omnidirectional

Figura 2.2: Un robot omnidirezionale è costituito da 4 ruote com-


poste da rulli liberi di muoversi posizionati in diagonale. Tali ruote
possono essere azionate singolarmente permettendo cosi movimenti
in tutte le direzioni.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

2.3. DA COSA DIPENDE LA VARIABILITÀ NEI ROBOT? 11

2.2.2 Trajectory Following


I motori devono essere azionati in modo da seguire il più vicino possibile la
traiettoria. La traiettoria può essere specificata attraverso una curva geome-
trica in un sistema cartesiano, oppure attraverso un percorso visivo (linea sul
pavimento) adottando il robot di sistemi visivi o ancora tramite nastro magne-
tico rilevabile tramite sensore magnetici. Negli ultimi due esempi è importante
sottolineare come non sia necessario conoscere le coordinate del robot affinchè
segui la traiettoria.

2.2.3 Motion planning


Il calcolo del percorso può essere effettuanto ottimizzando diversi criteri tra cui:
consumo, tempo, distanza minima, ecc...

2.2.4 Localization
Anche la localizzazione del robot nello spazio può avvenire in maniera diversa.
Infatti essa può essere:

• Basata su marcatori: i quali forniscono informazioni sulla posizione del


robot nell’ambiente. I marcatori possono essere artificiali, decodificabili
tramite una telecamera posta sul robot stesso, oppure naturali. Ad esem-
pio esistono robot aspirapolvere che si localizzano osservando il soffitto
(riferimento natulare) in quanto non presenta ostacoli e per cui è più sem-
plice raccogliere informazioni sull’ambiente come può essere la dimensione
di una stanza.

• Basata su mappa: in cui il robot è costituito da sensori (telimetro laser,


telecamera di profondità, ecc..) che gli permettono di mappare l’ambiente
circostante.

2.2.5 Obstacle avoidance


Nel progettare un robot in grado di evitare ostacoli bisongna considerare che le
condizioni ambientali possono influire sul corretto funzionamento dei sensori, gli
ostacoli possono essere fissi o mobili e inoltre l’ambiente può essere mutevole.
Tutti questi fattori rendono molto complesso il progetto di questo blocco.

2.3 Da cosa dipende la variabilità nei robot?


La variabilità di un robot dipende da 3 fattori tra di loro interdipendenti:

• Personificazione

• Collocazione

• Intelligenza

Tutti questi fattori devono essere considerati nello sviluppo del software di con-
trollo del robot e dipendono fortemente dal tipo di compito che il robot deve
eseguire.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

12 CAPITOLO 2. VARIBILITÀ NEI ROBOT MOBILI

2.3.1 Personificazione
La personificazione del robot si riferisce alla consapevolezza che esso possiede un
corpo (una struttura meccanica con sensori e attuatori) che consente al robot
di sperimentare ed interagire con il mondo. Le azioni di controllo imposte al
robot dipendono fortemente dal tipo di attuatori e dalla struttura cinematica
del robot. Ad esempio in base a com’è fatto il robot si possono sviluppare diversi
algoritmi per pianificare un percorso e controllare i movimeni del robot lungo
tale percorso.

2.3.2 Collocazione
La collocazione del robot si riferisce all’esistenza di un ambiente complesso, di-
namico e non strutturato che influenza fortemente il comportamento del robot.
La collocazione indica che il robot è consapevole della propria postura, in un
punto in un dato momento e della presenza di oggetti (ostacoli, pezzi di lavo-
ro o collaboratori) nella sua area di lavoro. A seconda dell’ambiente operativo
il robot può utilizzare diversi sensori e tecniche per la percezione e la localiz-
zazione 3D. Ad esempio, un GPS non può essere utilizzato all’interno di un
edificio, mentre bisogna tenere in considerazione che un sistema di visione viene
influenzato dalle condizioni di luce ambientale.

2.3.3 Intelligenza
L’intelligenza di un robot si riferisce alla capacità di esprimere comportamenti
adeguati e utili mentre interagisce con un ambiente dinamico. L’intelligenza di
un robot generalmente è definita in termini di:
• Autonomia: cioè la capacità del robot di controllare le proprie attività
e di svolgere compiti senza l’intervento dell’uomo.
• Deliberatività: ovvero la capacità di pianificare e rivisionare le azioni
future al fine di raggiungere un determinato obiettivo tenendo conto delle
mutevoli condizioni dell’ambiente esterno.
• Adattabilità: cioè la capacità di cambiare il proprio comportamento in
risposta agli stimoli esterni in base alle iterazioni passate con il mondo
reale.

(a) Dominio applicativo: robot per la casa

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

2.4. PROGETTAZIONE DEL SISTEMA DI NAVIGAZIONE 13

(b) Dominio applicativo: robot per servizi logistici

Figura 2.3: Due esempi di come in base al dominio applicativo


possano variare personificazione, collocazione e intelligenza.

2.4 Progettazione del sistema di navigazione


Nel progettare un robot bisogna essere in grado di renderlo il più versatile possi-
bile. Dato che dal punto di vista meccanico e sensoristico la versatilità è limitata
la componente più delicata risulta essere il software le cui problematiche sono ge-
stite dall’ingegneria del software. Piuttosto che costruire ogni nuova variante di
sistema da zero, risparmi significativi possono essere ottenuti riutilizzando parti
dei sistemi precedentemente costruiti. Il riuso del software è una pratica molto
diffusa che permette di ottenere notevoli benefici in termini di produttività e
qualità. Alcune tecniche di riutilizzo del software sono:
• Copia e incolla del codice sorgente.

• Estensione di librerie già esistenti.


• Imitare design pattern e archittetture.
• Integrare componenti (è importante sviluppare in moduli).
• Personalizzare una componente framework esistente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

14 CAPITOLO 2. VARIBILITÀ NEI ROBOT MOBILI

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 3

Cinematica dei robot mobili


su ruote

3.1 Robot mobili su ruote


Parlando di robot mobili su ruote (WMR) si possono individuare tre aspetti
fondamentali:
• Locomozione: è il processo che causa il movimento del robot. Per otte-
nere questo risultato bisogna applicare delle forze al robot, ovvero imporre
un movimento del motore, che sarà soggetto al carico del robot. Questo
aspetto, quindi, deve tenere conto delle funzioni di controllo che azionano
i motori delle ruote.
• Cinematica: è lo studio della «matematica del movimento» senza consi-
derare le forze che intervengono in questo movimento. Si studiano, quindi,
i movimenti e la posizione nel corso del tempo dei vari corpi rigidi. L’aspet-
to cinematico tiene conto anche delle relazioni tra i parametri di controllo
ed il movimento del sistema.
• Dinamica: è lo studio nel quale vengono modellate anche le forze, quindi
si analizzano i movimenti e le relative variazioni di velocità. Per il nostro
ambito di studio ha senso concentrarsi solo sulla cinematica poichè la
dinamica entra in gioco quando si vogliono migliorare le prestazioni.

3.2 Cinematica di un robot mobile


La cinematica è la descrizione del comportamento meccanico del robot, al fine
del progetto e del controllo. Per semplificare lo studio cinematico si tratta un
robot come un corpo rigido al quale sono attaccate delle ruote. Un esempio di
un corpo non rigido è un drone, il quale può orientarsi in qualunque direzione.
Un robot mobile può muoversi, comunque, in moltissime direzioni nel proprio
ambiente, quindi può risultare difficile capire quale sia la posizione attuale del
robot perchè non è possibile misurarla direttamente. La maggiore sfida della ro-
botica è proprio quella di riuscire a stimare correttamente la posizione del robot
integrandola nel tempo. Qualunque metodo di stima della posizione si utilizzi,

15

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

16 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE

bisogna sempre effetuare un’analisi di tutte le componenti che influiscono sul


moto del robot, tra le quali troviamo ovviamente le ruote la cui comprensio-
ne dei vincoli risulta fondamentale. Infatti in un robot mobile può variare il
numero di ruote montate, la tipologia delle ruote o dove esse sono posizionate.

3.2.1 Ruote
L’analisi del componente ruota, dal punto di vista cinematico, si basa sull’as-
sunzione che le ruote di un robot non possano slittare. Le ruote possono seguire
due movimenti:

• Moto di rotolamento: è un moto caratterizzato da un unico parametro


(velocità angolare). Il moto di rotolamento è legato a quello di traslazione
del robot. Se ragioniamo a basse velocità, possiamo modellare la ruota
semplicemente come un corpo che rotola.

• Slittamento laterale: abbiamo messo tra le ipotesi dello studio del


moto delle ruote il fatto che ragioniamo in assenza di slittamento. Di
conseguenza, anche questo moto risulterà nullo.

Poniamoci quindi in una situazione ideale di puro rotolamento. In questo caso


possiamo aggiungere, alle assunzioni fatte in precedenza, le seguenti:

• Il robot è un corpo rigido.

• Non si hanno slittamenti lungo la direzione ortogonale a quella di rotola-


mento della ruota.

• Non si hanno slittamenti lungo la direzione di rotolamento della ruota.

• Ogni ruota avrà al massimo uno snodo per sterzare.

• Tutti gli assi di sterzo risultano perpendicolari al suolo.

Una volta fatte le dovute assunzioni, una ruota può essere analizzata in base ai
suoi 4 parametri:

• r = raggio della ruota.

• v = velocità lineare della ruota.

• w = velocità angolare della ruota.

• t = velocità di sterzata.

Sul mercato esistono diverse tipologie di ruote:

• Ruote fisse: Sono le classiche ruote posteriori delle auto, ovvero ruote
che non possono sterzare. Dei parametri visti in precedenza avranno tutto
tranne la t che sarà ovviamente nulla.

• Ruote orientabili rispetto al centro: Sono le classiche ruote anteriori


delle auto, ovvero ruote che possono sterzare attorno al loro asse centrale.
Avranno quindi anche, come parametro, la velocità di sterzata t.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

3.2. CINEMATICA DI UN ROBOT MOBILE 17

• Ruote orientabili decentrata: Sono le classiche ruote del carrello della


spesa, ovvero ruote che sono in grado di sterzare, ma ruotando attorno ad
un punto diverso rispetto all’asse centrale dipendentemente dal movimento
compiuto (es. in base al movimento imposto al carello le ruote si orientano
di conseguenza).

• Ruote svedesi (omnidirectional): Sono ruote montate in posizione


fissa che, però, vedono la presenza di rulli sul «battistrada». Tali rulli
consentono alla ruota, nonostante sia in posizione fissa, di spostarsi in
qualunque direzione, anche ortogonale.

(a) Ruota fissa (b) Ruota orientabile rispetto al


centro

(c) Ruota orientabile decentrata (d) Ruota svedese

Figura 3.1: Tipologie di ruote che possono essere montate su robot.

Inoltre in base a come vengono montate le ruote possiamo distinguere diversi


tipi di robot. Il primo tipo di robot che è possibile realizzare è il cosiddetto
robot bi-ruota. Un robot di questo tipo (simil overboard) ha dei movimenti
fluidi anche se è molto soggetto allo slittamento ed, eventualmente, deve anche
prevedere un sistema di bilanciamento.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

18 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE

Figura 3.2: Robot bi-ruota.

Un ulteriore tipo di robot è quello cingolato. In questo caso si hanno dei


movimenti di svolta meno precisi del precedente ma movimenti dritti esatti e
robustezza allo slittamento maggiore.

Figura 3.3: Cingolato.

Invece, un robot omnidirezionale. è in grado di muoversi in qualunque dire-


zione. Questo aspetto, però, complica notevolmente la struttura del robot. Un
robot omnidirezionale può essere realizzato con ruote svedesi, oppure montando
delle ruote poste a 120◦ tra di loro.

Figura 3.4: Robot omnidirezionale.

3.3 Locomozione di un robot mobile

Nel parlare di locomozione di un robot mobile, assume un significato fondamen-


tale il concetto di centro istantaneo di rotazione ICR (o «di curvatura» -
ICC), ovvero il punto che troviamo intersecando gli assi delle ruote.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

3.4. DIFFERENTIAL DRIVE 19

Figura 3.5: Esempi di centro istantaneo di rotazione.

Nel caso a in Figura 3.5, che presenta la struttura di una tipica automobile, tutti
i punti del veicolo si muovono intorno all’ICR. Il movimento è di puro rotola-
mento, poichè la velocità è tangenziale alla circonferenza. In questo caso si può
notare come le ruote anteriori, che sterzano, non sono in realtà parallele tra di
loro perché altrimenti i loro assi non sarebbero paralleli e non si incontrerebbero
in un unico punto e ciò causerebbe lo slittamento del veicolo. La velocità con
cui tale veicolo ruota dipende dalla velocità delle ruote, che a sua volta dipende
dalla distanza dall’ICR. Nel caso b di Figura 3.5 invece, l’asse delle ruote coin-
cide, quindi l’ICR si trova su tale asse. La posizione del punto, ipotizzandolo
sempre su quest’asse, dipende dalla velocità con cui girano le ruote:

• Stessa velocità: La distanza dall’ICR è ∞, ovvero il veicolo segue una


traiettoria rettilinea.

• Una ruota ferma: L’ICR coincide con la ruota ferma.

• Entrambe ruotano alla stessa velocità in direzione opposta: L’ICR


coincide con il centro del robot.

In un robot sono inoltre presenti vincoli sulla velocità detti anche vincoli non-
holimici. Questi vincoli servono a modellare il fatto che un robot può muoversi
in alcune direzioni (ad esempio in avanti e indietro) ma magari non in altre (ad
esempio lateralmente). Da questa semplice spiegazione emerge come un robot
omnidirezionale è, invece, holomo poichè non ha vincoli riguardanti le direzioni
in cui può muoversi.

3.4 Differential Drive


Quando si analizza il movimento di un robot è necessario specificare la differen-
za tra le velocità delle ruote (VL e VR) e la velocità del robot (detta TWIST).
Considerando R il raggio di curvatura, il TWIST è definito da due velocità,
ciascuna delle quali, poi, può essere pensata sui tre assi:

(
V = R · ω : velocità lineare
T wist =
ω : velocità angolare

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

20 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE

Figura 3.6: Rappresentazione grafica del twist nel differential drive.

Nel caso in cui R = 0 il robot tenderà a ruotare su se stesso mentre per R = ∞


⇒ ω = 0, ovvero il movimento del robot sarà lineare. In funzione dei parametri
rappresentati nello schema precedente è possibile definire:

L
VR = ω(R + )
2
L
VL = ω(R − )
2
Dove R − L2 è la distanza dall’ICR rispetto alla ruota sinistra mentre R + L2 è la
distanza dall’ICR rispetto alla ruota destra. Da queste due equazioni è possibile
ricavare:

VR − VL
ω=
L
VR + VL
V =
2
Dal Twist quindi è possibile passare alle velocità delle ruote (operazione fatta
dal motor control) e viceversa (utile per stimare la posizione del robot). Inoltre
da VL = VR è possibile ricavare R come:

L V R + VL
R=
2 V R − VL
Da notare che per VL = VR si ottiene R = ∞ mentre per VL = −VR si ottiene
R = 0. Dato il raggio della ruota r è possibile ricavare dal twist anche le velocità
angolari delle singole ruote:

1 L
ωL = (V − ω )
r 2
1 L
ωR = (V + ω )
r 2
Dove V − ω L2 e V − ω L2 non sono altro che VL e VR rispettivamente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

3.5. TRICICLO 21

3.5 Triciclo
Un triciclo presenta 3 ruote:

• Due ruote fisse non azionate.

• Una ruota posteriore o anteriore che è azionata tramite due motori uno
per lo sterzo e uno per il rotolamento.

Le variabili di controllo di questa situazione sono:

• Direzione di sterzata α(t).

• Velocità angolare della ruota ωs (t).

Quando la ruota sterzante viene girata di un angolo α(t) rispetto alla direzione
che il triciclo stava percorrendo, il robot girerà con una velocità ω(t) intorno
al suo ICR che si troverà ad una distanza R dalla perpendicolare passante per
l’asse delle ruote posteriori (in questo esempio):

Figura 3.7: ICR dipende fortemente dalla ruota sterzante.

Anche qui possiamo definire il modello cinematico del robot, data Vs (t) la
velocità lineare della ruota sterzante, come:



Vx (t) = Vs (t)cosα(t)
Vy (t) = 0 : senza slittamento


θ̇(t) = Vsd(t) sinα(t)

d
Dove i = sinα(t) e Vx (t) la velocità perpendicolare all’asse delle ruote fisse.
Considerando la Figura 3.8 è possibile determinare dalla velocità della ruota
sternzante il Twist:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

22 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE

Figura 3.8: Rappresentazione in coordinate del Triciclo.



ẋ(t) = Vs (t)cosα(t)cosθ(t)
T wist = ẏ(t) = Vs (t)cosα(t)sinθ(t)


θ̇(t) = Vsd(t) sinα(t)

3.6 Robot con sterzo di Ackerman


Il robot con sterzo Ackerman è la tipica applicazione che viene utilizzata nelle
automobili, in cui si hanno le due ruote anteriori sterzanti. Questo può essere
pensato come un caso particolare del triciclo.

Figura 3.9: Schema di robot con sterzo di Ackerman.

Nello schema in Figura 3.8 sono rappresentati:


• d: distanza laterale tra le ruote.
• l: distanza longitudinale tra le ruote.
• θi : angolo di sterzata relativo della ruota interna.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

3.7. CARRELLO 23

• θ0 : angolo di sterzata relativo della ruota esterna.

• R: distanza tra l’ICC e l’asse centrale del veicolo.

3.7 Carrello

Il carrello si presenta come un triciclo a cui viene agganciata una struttura a


due ruote fisse come rappresentato in Figura 3.10.

Figura 3.10: Schema di robot triciclo con carrello.

Il triciclo già analizzato non presenta nessuna novità. Il carrello invece può
essere anch’esso modellato come un triciclo data la presenza del gancio che
può essere considerato come una ruota sterzante (dato che può ruotare intorno
all’asse verticale) il cui asse per trovare l’ICR coincide con l’asse delle ruote fisse
del triciclo a cui è collegato. Con un po’ di passaggi trigonometrici è possibile
determinare quindi il Twist del carrello.

3.8 Robot Sincrono

In un robot sincrono ogni ruota può essere sterzata e azionata. In un robot di


questo tipo, l’ICR è sempre infinito poichè le ruote sono sempre tra di loro paral-
lele. Quando si sterzano le ruote, quindi, viene modificata la direzione dell’ICR.
Il meccanismo che consente di far sterzare tutte le ruote in contemporanea è
costituito da una serie di cinghie che collegano fisicamente tra di loro le ruote.
Sono presenti inoltre due motori che cosentono di, in maniera indipendente, di
far rotolare le due ruote davanti e la ruota dietro.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

24 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE

Figura 3.11: Schema di robot sincrono.

3.9 Robot omnidirezionale

Un robot omnidirezionale è costituito da tre ruote poste a 120◦ , che possono


essere normali oppure svedesi:

Figura 3.12: Schema di robot sincrono.

3.10 Odometria per robot differenziali

L’odometria è la tecnica che consente di stimare la posizione di un veicolo su


ruote in base alle loro velocità e dal loro angolo di sterzata. In un differential
drive dal profilo di velocità angolare delle due ruote e dal raggio di rotazione R
è possibile determinare la lunghezza del percorso D e l’angolo di rotazione ϕ:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

3.10. ODOMETRIA PER ROBOT DIFFERENZIALI 25

Figura 3.13: Rappresentazione grafica del profilo di velocità


angolare e delle grandezze R, D e ϕ.

Z
VL + VR 1 ωL + ωR
D= dt = r (t3 − t0 + t2 − t1 )
2 2 2
D r
ϕ= = (ωR − ωL )(t3 − t0 + t2 − t1 )
R 2L
Dove per il calcolo di D è stata utilizzata l’area media dei due profili di velocità
contando per comodità di scrittura t2 − t1 due volte in quanto nella formula è
presente un 21 mentre t1 − t0 e t3 − t2 solo una volta in quanto triangoli. ϕ è
R +VL L r(ωR +ωL ) L (ωR +ωL )
stato calcolato sostituendo R con L2 VVR −VL = 2 r(ωR −ωL ) = 2 (ωR −ωL ) .
Dato che nella realtà il profilo non si presenterà come quello in Figura 3.13 a
causa del rumore è necessario determinare una distanza instantanea:

Figura 3.14: Rappresentazione grafica del movimento istantaneo.

1
dD = r(ωR (t) + ωL (t))dt
2
Z
r
θ(t) = (ωR (t) − ωL (t))dt
L

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

26 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE


Z
1
x(t) = r (ωR (t) + ωL (t))cosθ(t)dt
2
Z
1
y(t) = r (ωR (t) + ωL (t))sinθ(t)dt
2
Dove per trovare θ(t) si è integrata la velocità angolare del robot (ω = r ωR −ω
L
L

vista nel differential drive) mentre le coordinate vengono calcolate tramite Vx (t)
e Vy (t). Considerando nel breve periodo le velocità constanti ωR (t) = ωR e
ωL (t) = ωL :
r
θ(t) = (ωR − ωL )t
L
L ωR + ωL r
x(t) = sin[ (ωR − ωL )t]
2 ωR − ωL L
L ωR + ωL r
y(t) = − cos[ (ωR − ωL )t]
2 ωR − ωL L
(ωR +ωL )
Dove L2 (ω R −ωL )
= R. E’ inoltre possibile calcolare altre due informazioni
importanti:

• Distanze percorse dalla ruota destra e sinistra nell’intervallo di tempo


tk − tk−1 :

DLk = ωL · r · (tk − tk−1 )

DRk = ωR · r · (tk − tk−1 )

• Raggio di curvatura del robot nell’intervallo di tempo tk − tk−1 :

L DRk + DLk
rk =
2 DRk − DLk

R +VL
Dove il raggio di curvatura viene determinato da R = L2 VVR −VL (t si semplifica).
Queste due informazioni sono semplici da determinare ma calcolare l’odometria
tramite le formule riportate sopra può essere abbastanza complicato. Può al-
lora essere utilizzato un algoritmo «approssimato» che permette di stimare la
posizione del robot all’istante tk :

DRk −DLk

θk = θk−1 + θ(tk ) = θk−1 + L
xk = xk−1 + rk [sin(θk−1 ) − sin(θk )]


yk = yk−1 − rk [cos(θk−1 ) − cos(θk )]

Questa stima, ottenuta per discretizzazione (misure fatte ad intervalli di tempo


regolari) non è del tutto precisa a causa delle limitate risoluzioni dei sensori e
anche per inesattezze sui parametri meccanici, come:

• Raggio della ruota, che varia quando la ruota si sgonfia.

• Distanza fra le ruote, che varia al variare dei punti di contatto.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

3.10. ODOMETRIA PER ROBOT DIFFERENZIALI 27

All’aumentare della distanza percorsa si ha un accumulo dell’errore compiuto.


Un grande limite dell’utilizzo delle formule «classiche» per il calcolo dell’odo-
metria è il fatto che esse contengono i valori relativi, ad esempio, alla velocità
di rotazione della ruota. Questi valori sono per loro natura soggetti ad errore
(disturbi, errore nella rilevazione con encoder, ...). Integrando tali errori si ha
un allontanamento progressivo della stima dell’odometria da quella reale.

Figura 3.15: Rappresentazione grafica dell’imprecisione dell’odo-


metria. La traiettoria rilevata, calcolata tramite odomentria, coin-
cide con quella richiesta il che fa pensare al robot di aver compiuto
la traiettoria in maniera corretta.

Gli errori che si possono avere nel calcolo dell’odometria possono essere suddivisi
in:
• Errori sistematici / deterministici: sono errori che possono essere
eliminati tramite una buona calibrazione del sistema. Ad esempio sono
errori meccanici o di costruzione.
• Errori non sistematici / non deterministici: sono errori che devono
essere descritti da un modello di errore, che sarà caratterizzato da una sua
incertezza. Questi errori, in quanto non deterministici, non possono essere
eliminati ma possono essere ridotti con l’utilizzo di alcune tecniche ad
esempio con l’utilizzo di ruote ausiliarie sottili (punto di appoggio preciso)
non motrici in cui viene posizionato un encoder (ad esempio aggiungento
un carrello). In questo caso le ruote non subiscono alcuno slittamento
poichè vengono solamente trascinate.
Le maggiori cause di errore sono:
• Risoluzione limitata dei valori che vengono integrati. Questi errori si
suddividono in:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

28 CAPITOLO 3. CINEMATICA DEI ROBOT MOBILI SU RUOTE

– Range error: la distanza calcolata dal robot non coincide con quella
effettivamente percorsa.
– Turn error: il robot crede di aver girato di una certa quantità, che è
in realtà diversa da quella effettiva.
– Drift error: il robot sbaglia a capire quale sia il suo orientamento.
Con il passare del tempo gli errori di Turn e Drift aumentano di gran
lunga rispetto agli errori di Range.

• Disallineamento delle ruote.


• Diametro delle ruote non identico.
• Variazioni dei punti di contatto delle ruote.
• Contatto con il pavimento non uguale per le due ruote, a causa di slitta-
mento, non planarietà...

Gli errori nella stima dell’odometria possono essere anche parecchio significativi.
In alcune applicazioni, però, basta anche solamente sapere in che intorno del
punto stimato si trova il robot.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 4

Software Driver for


Differential Drive

4.1 Arduino
Arduino è un circuito stampato progettato per facilitare l’utilizzo di un parti-
colare microcontrollore, su di esso montato. In Arduino troviamo:
• Pin per la fornitura di alimentazione.
• Presa USB per la connessione con il computer.
• Bus seriale I2C.
• Pin digitali di I/O.
• Pin analogici di Input.
La programmazione di Arduino è effettuata attraverso un ambiente fornito da
Arduino stesso, e può essere effettuata in C. Il programma per Arduino si sud-
divide in:

1 void setup ( ) {
2 // Codice che v i e n e e s e g u i t o d u r a n t e l ’ i n i z i a l i z z a z i o n e
3 // una v o l t a s o l a
4 }
5
6 void loop ( ) {
7 // Codice che v i e n e continuamente e s e g u i t o ,
8 // f i n o a l l o spegnimento d i Arduino
9 }

4.2 Comunicazione seriale


Il miglior modo che Arduino può utilizzare per comunicare è il seriale. Le
principali istruzioni da utilizzare per la comunicazione sono:

29

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

30 CAPITOLO 4. SOFTWARE DRIVER FOR DIFFERENTIAL DRIVE

• Serial.begin(_baudrate_);
permette di avviare la comunicazione seriale, specificandone il baudrate.

• Serial.avaiable();
ritorna TRUE qualora siano disponibili caratteri ricevuti in seriale.

• Serial.read();
ritorna i caratteri letti dalla seriale.

• Serial.println();
permette di inviare i caratteri passati per argomento sulla seriale.

4.3 Robot BART


BART è un robot costituito da:

• Due ruote motorizzate, ciascuna delle quali ha un encoder associato.

• Arduino UNO che si occupa del controllo.

• Shield di controllo motori MD25.

• Sensori (Sonar, colore linea).

• altri componenti...

4.4 Controllo dei motori PWM


La velocità con cui girano i motori DC è direttamente proporzionale alla loro
tensione di alimentazione (se alimentiamo a 6V il motore girerà alla metà della
velocità che otterremmo alimentandolo a 12V ). Avendo una batteria di valore
«fissato» che alimenta il circuito, la diminuzione del valore di velocità può es-
sere ottenuta variando il valore medio della tensione fornita ai motori, ovvero
utilizzando la tecnica del PWM, tramite la quale è possibile modificare il duty
cycle della tensione fornita ai motori. Essa consiste nel accendere e spegnere
l’alimentazione molto rapidamente.

4.5 Libreria MD25Driver


La libreria MD25Driver (MD25 è il nome della scheda motore) consente di con-
trollare il motore di BART tramite l’utilizzo dei metodi seguenti:

1 c l a s s MD25Driver {
2 public :
3 /∗ Metodo che c o n s e n t e d i s p e c i f i c a r e l a v e l o c i t a ’
4 d e l l e ruote destra e s i n i s t r a . I v a l o r i di
5 v e l o c i t a ’ p o s s i b i l i sono t r a −125 e +125 ∗/
6 v o i d s e t S p e e d L e v e l ( i n t sx , i n t dx ) ;
7 /∗ Metodo che c o n s e n t e d i f e r m a r e entrambi i
8 m o t o r i ∗/

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

4.6. LE CLASSI ROVERDRIVER E NAVIGATOR 31

9 v o i d s t o p Motors ( ) ;
10 /∗ Metodo che c o n s e n t e d i l e g g e r e l ’ e n c o d e r d i
11 s i n i s t r a ∗/
12 l o n g readEncoder_L ( ) ;
13 /∗ Metodo che c o n s e n t e d i l e g g e r e l ’ e n c o d e r d i
14 d e s t r a ∗/
15 l o n g readEncoder_R ( ) ;
16 /∗ Metodo che c o n s e n t e d i r e s e t t a r e g l i e n c o d e r
17 d e i due m o t o r i ∗/
18 void encoderReset ( ) ;
19 };

4.6 Le classi RoverDriver e Navigator


La classe RoverDriver permette di implementare un robot mobile, gestendone
tutte le caratteristiche di TWIST e Odometria che abbiamo presentato in pre-
cedenza:

1 c l a s s RoverDriver {
2 private :
3 d o u b l e ox , oy , o t ; // I n f o r m a z i o n i s u l l a p o s i z i o n e
4 // c o r r e n t e
5
6 public :
7 /∗ C o s t r u t t o r e d e l l a c l a s s e ∗/
8 RoverDriver ( ) ;
9
10 /∗ Metodo che c o n s e n t e d i f e r m a r e i l r o b o t ∗/
11 void stop ( ) ;
12 /∗ Metodo che c o n s e n t e d i i m p o s t a r e i l TWIST d e l
13 r o b o t m o b i l e . I due v a l o r i p a s s a t i a l metodo
14 r a p p r e s e n t a n o l a v e l o c i t a ’ v d i avanzamento e l a
15 v e l o c i t a ’ w d i r o t a z i o n e a t t o r n o a l l ’ ICR ∗/
16 void setTwist ( long v , long w) ;
17 /∗ Metodo che p e r m e t t e d i a g g i o r n a r e l e
18 i n f o r m a z i o n i s u l l ’ o d o me t r i a n o t e a l r o b o t . ∗/
19 v o i d getOdometry ( d o u b l e &x , d o u b l e &y , d o u b l e &t )
20 /∗ Metodo che c o n s e n t e d i r e s e t t a r e l ’ o d o m e t r i a
21 d e l r o b o t ∗/
22 v o i d resetOdometry ( ) ;
23 };

Questa classe gestisce, tramite la MD25Driver, il comportamento del robot a


più alto livello (invece che ragionare per ruote, permette di ragionare a livello
del robot).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

32 CAPITOLO 4. SOFTWARE DRIVER FOR DIFFERENTIAL DRIVE

Invece La classe Navigator ha il compito di far seguire la traiettoria desiderata


al robot:

1 c l a s s Navigator {
2 private :
3 d o u b l e ox , oy , o t ; // I n f o r m a z i o n i s u l l a
4 // p o s i z i o n e c o r r e n t e
5
6 public :
7 /∗ C o s t r u t t o r e d e l l a c l a s s e ∗/
8 Navigator ( ) ;
9
10 /∗ Metodo che imposta l a p o s i z i o n e d e s i d e r a t a
11 che i l r o b o t deve r a g g i u n g e r e ∗/
12 void setTarget ( double x , double y , double t ) ;
13 /∗ Metodo che c o n s e n t e c a l c o l a r e l ’ o d om e t r i a
14 d e l r o b o t ∗/
15 v o i d setOdometry ( d o u b l e x , d o u b l e y , d o u b l e t ) ;
16 /∗ Metodo che c o n s e n t e d i o t t e n e r e i l TWIST ∗/
17 v o i d g e t T w i s t ( d o u b l e &v , d o u b l e &w ) ;
18 };

4.7 Sistemi concorrenti


Spesso un robot mobile implementa due task concorrenti: RoverDriver e Navi-
gator. Entrambi questi task hanno un accesso concorrente alle variabili twist e
odometry. La soluzione migliore è allora quella di implementare un protocollo
di accesso in mutua esclusione tramite POSIX.

4.8 Sistemi Distribuiti


Spesso non si hanno solo dei sistemi concorrenti, ma anche dei sistemi distri-
buiti, nei quali il task RoverDriver e quello Navigator girano su due macchine
differenti ed hanno la possibilità di condividere le variabili (sempre in modo
concorrente) tramite la rete. La condivisione di dati tramite la rete viene resa
più facile dall’utilizzo di middleware (tipo ROS, DDS, ...), ovvero delle librerie
che semplificano la comunicazione in rete dei task.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 5

ROS (Robot Operating


System)

5.1 Introduzione

ROS è un framework che permette di realizzare dei software sfruttando il para-


digma publisher-subscriber. La condivisione delle informazioni avviene tramite
l’iscrizione ad una serie di topic. Esso è quindi composto da una serie di librerie
per la comunicazione dei processi chiamati nodi nella tecnologia ROS.

Figura 5.1: Esempio di sistema costituito da tre nodi messi in


comunicazione tra loro tramite una infrastruttura (es. ROS). Il
processo velocity_keyboard riceve dall’esterno l’input sulla ve-
locità poi trasmessa al velocity_controller per il calcolo del
twist che viene inviato al rover_drive un componente che simula
il movimento del robot.

33

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

34 CAPITOLO 5. ROS (ROBOT OPERATING SYSTEM)

5.2 Meccanismo Publish-subscribe


In assenza di memoria condivisa è necessario che i processi per comunicare si
scambino dei messaggi. Il meccanismo oggetto di studio, suddivide i nodi in:
• Publisher
• Subscribe

da qui il nome publish-subscribe. Per l’invio di un messaggio da uno a più


nodi viene utilizzato il meccanismo dei topic. I subscribers si "iscrivono" ai
topic di loro interesse mentre il publischer si occupa di inviare i messaggi ad un
determinato topic. Quando il topic riceve un messaggio invia una notica a tutti
i subscribers iscritti i quali possono cosi leggere il messaggio ricevuto.

Figura 5.2: Rappresentazione del meccanismo publish-subscribe.

5.3 ROS package


Il codice ROS viene suddiviso in packages nei quali possono essere contenuti:

• Nodi.

• Librerie.
• Set di dati.
• File di configurazione.
• Software di terze parti.

• ...

Organizzare il codice in questo modo consente di avere un riutilizzo più semplice


ed una più agevole gestione. Ciò signica che un pacchetto è la cosa individuale
più piccola che è possibie costruire in ROS.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 6

Motion Control

6.1 Pose controller


Generalmente vogliamo implementare un sistema che consenta di specifica-
re al robot una posizione target da raggiungere minimizzando un percorso e
suddividendolo in una sequenza di punti da raggiungere.

Figura 6.1: Target follower.

Dato che, come abbiamo visto, il calcolo dell’odometria da parte del robot è spes-
so influenzato da disturbi e/o errori, generalmente si chiedono degli spostamenti
piccoli, per ridurre la possibilità di errore.

6.2 Differential Drive pose control


In questa soluzione di pose controller si tende a specificare al robot una posizione
target relativa rispetto a dove il robot si trova attualmente. In una situazione
di questo tipo abbiamo a disposizione tre sistemi di riferimento:
• Sistema di riferimento «della stanza» in cui si trova il robot.
• Sistema di riferimento del robot.
• Sistema di riferimento del punto target.

35

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

36 CAPITOLO 6. MOTION CONTROL

Lo scopo del movimento del rover è quello di portare il suo sistema di riferimento
in coincidenza con quello del punto target eventualmente con un determinato
orientamento. Data la posizione corrente e quella target è possibile determinare
l’arco di circonferenza che li unisce tangente alla direzione corrente del robot,
e con ciò è possibile determinare il centro (ICR) e il raggio. Da ciò può essere
calcolato il Twist, v = r · θ, fissando v o θ.

Figura 6.2: Target follower nel Differential Drive.

In realtà, l’arco di circonferenza percorso non sarà mai quello calcolato all’inizio
(per slittamenti, irregolarità del pavimento, ...) quindi il thread di pose control,
e con esso il calcolo del Twist, deve essere eseguito ciclicamente. Data la Figura
6.3:

Figura 6.3: Rappresentazione di alcune grandezze in gioco nel pose


control.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

6.3. OMNIDIRECTIONAL POSE CONTROL 37

Chiamiamo:
p
• ρ = ∆x2 + ∆y 2 la distanza tra il punto iniziale e finale.
∆y
• α = −θ + arctan( ∆x ) la differenza di orientamento tra sistema di riferi-
mento iniziale e retta congiungente punto iniziale e finale.
• β = −θ − α la differenza di orientamento tra sistema di riferimento finale
e retta congiungente punto iniziale e finale.

le coordinate polari con origine nella posizione target. Guardando questo sche-
ma, è possibile implementare due tentativi di pose control:

• Il robot annulla α ruotando su sé stesso, va dritto fino al raggiungimento


del punto target ed infine ruota per azzerare β.
• Il robot varia ρ, α e β in contemporanea (sono quindi necessarie le coor-
dinate polari).

Dalle informazioni di Twist è possibile calcolare le derivate di ρ, α e β:

• Nel caso di un robot che si muove in avanti α ∈ (− π2 , π2 ]:


   
ρ̇ cosα 0  
α̇ = − sinα
ρ 1 · v
sinα w
β̇ ρ 0

• Nel caso di un robot che si muove all’indietro α ∈ (−π, − π2 ] ∪ ( π2 , π]:


   
ρ̇ −cosα 0  
α̇ =  sinα
ρ −1 · v
w
β̇ − sinα
ρ 0

E’ possibile dimostrare che, scegliendo tre parametri kρ > 0, kα > kρ e kβ < 0


si può esprimere:
(
v = kρ ρ
w = kα α + kβ β
Al variare di questi tre parametri si possono ottenere curvature diverse della
traiettoria.

6.3 Omnidirectional pose control


Anche nel caso di un robot omnidirezionale si hanno tre sistemi di riferimento
ma si ha una maggiore «flessibilità» nei movimenti. Questa maggiore flessibi-
lità si traduce nella possibilità, del robot, di ruotare attorno al proprio centro
mentre si dirige verso il punto target, in modo da trovarsi già allineato al si-
stema di riferimento target. Per compiere questo movimento è necessario che
venga aggiornato il Twist periodicamente. L’azione di controllo è, allora, così
composta:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

38 CAPITOLO 6. MOTION CONTROL

• Data la posizione corrente e quella del punto target si calcola la retta di


avanzamento.
• Si calcola la w in base agli orientamenti dei due sistemi di riferimento.
• Ad ogni rotazione del robot su sé stesso si ricalcolerà la retta congiungente
la posizione del robot corrente con il target, quindi bisognerà ricalcolare
Vx e Vy .

Figura 6.4: Esempio di pose control in un robot omnidirezionale.

6.4 Trajectory Following


Il processo di trajectory following ha come obiettivo quello di seguire una tra-
iettoria descritta dalla posizione del robot e da profili di velocità in funzione del
tempo. Questo obiettivo può essere raggiunto discretizzando il percorso tramite
linee rette e segmenti di cerchio (per le curve) da seguire ed usando i vari punti
ottenuti dalla discretizzazione all’interno di un pose controller, oppure usando
l’intera linea curva continua. Ovviamente, se si procede alla discretizzazione
del percorso da seguire, sarà necessario stabilire per ogni segmento di percorso
un certo profilo di velocità che deve essere mantenuto. E’ importante quindi
definire la differenza tra Path e Trajectory:
• Path: è una sequenza di passaggi ognuno dei quali è definito in termini
di posizione.
• Trajectory: è lo stesso concetto di Path, con in aggiunta il concetto del
profilo di velocità da seguire per ogni segmento (es. nei primi segmenti
accellero poi rimango costante e negli ultimi decellero).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 7

Obstacle Avoidance

7.1 Introduzione
L’obbiettivo dell’algoritmo di obstacle avoidance è quello di evitare le collisioni
del robot con eventuali ostacoli. Generalmente, questi algoritmi sono basati su
delle mappe locali, ovvero si fornisce al robot una mappa dell’ambiente in cui si
muove. Nonostante il robot abbia la mappa, esso deve essere in grado comunque
di rilevare gli ostacoli aggiuntivi ed eventualmente evitarli, anche ripianificando
il percorso che deve essere eseguito.

Figura 7.1: Due esempi di utilizzo del Bug algorithm. Tale algo-
ritmo risulta spesso inefficiente come mostrato dalla figura più a
destra.

Un algoritmo di obstacle avoidance deve essere progettato rispetto a:

• Obbiettivo generale del robot.


• Sensori a bordo.
• Velocità e cinematica del robot.
• Rischio reale e futuro di collisione.

39

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

40 CAPITOLO 7. OBSTACLE AVOIDANCE

7.2 Bug Algorithm


Il bug algorithm è un algoritmo che prevede di circumnavigare gli ostacoli sup-
posti di dimensione limitata, mantenendoli alla destra o alla sinistra del robot.
La circumnavigazione termina quando viene incrociata la connessione diretta
tra inizio e traguardo.

Figura 7.2: Due esempi di utilizzo del Bug algorithm. Tale algo-
ritmo risulta spesso inefficiente come mostrato dalla figura più a
destra.

7.3 Vector Field Histogram


Con questo algoritmo, per ogni direzione scansionata da telimetri laser viene
rappresentata la distanza misurata in un istogramma. Il robot viene quindi
mandato nella direzione in cui ha la maggiore probabilità di passare. In questo
modo, però, se la direzione «selezionata» è molto diversa da quella attualmente
percorsa, il robot dovrà fermarsi e girarsi, compromettendo le prestazioni. Per
questo motivo viene definita una funzione di costo, utile per la scelta della
direzione:

G = a · target_direction + b · wheel_orientation + c · previous_direction

Figura 7.3: Rappresentazione grafica del Vector Field Histogram.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

7.4. BASIC CURVATURE VELOCITY METHODS 41

Esso presenta buone performance nel caso di ostacoli mobili.

7.4 Basic Curvature Velocity Methods


Questo algoritmo considera i vincoli fisici dati dal robot e dall’ambiente sulle
velocità v, w del robot. L’algoritmo si basa sulla generazione di una serie di
possibili traiettorie (archi) fattibili e su di una simulazione della posizione rag-
giunta dal robot se si muovesse su ciascuna di queste traiettorie. Tra tutte le
traiettorie così individuate si calcola quali di queste fanno collidere il robot e
quali no. Per le traiettorie che non generano collisione viene scelta quella che
permette di ottenere una velocità più ottimale possibile.

Figura 7.4: Rappresentazione grafica del Basic Curvature Velocity


Methods.

7.5 Dynamic Window Approach


Tale algoritmo, già implementato in ROS, è composto dai seguenti step:

1. Discretizzazione dello spazio di controllo del robot (dx, dy, dθ).

2. Per ciascuna velocità campionata, eseguire una simulazione a partire dallo


stato corrente per prevedere cosa accadrebbe se la velocità campionata
fosse applicata per un certo (breve) periodo di tempo.

3. Valutare ciascuna traiettoria simulata al punto precedente in termini di:


vicinanza agli ostacoli, prossimità all’obiettivo, prossimità alla traiettoria
globale pianificata e velocità.

4. Scartare le traiettorie illegali (quelle che portano alla collisione con un


ostacolo).

5. Selezionare la traiettoria con punteggio più alto ottenuto con i parametri


citati al punto 3 e inviare la velocità alla base mobile.

6. Ripetere dal punto 1.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

42 CAPITOLO 7. OBSTACLE AVOIDANCE

Le velocità campionate sono considerate ammissibili se consentono al robot di


fermarsi prima di raggiungere un ostacolo ed inoltre se è possibile raggiungere
tale velocità nello spazio che il robot deve coprire. Esiste anche una variante
con percorso pianificato che si compone nel seguente modo:

• Il percorso globale viene generato in anticipo.

• Il percorso viene adattato quando si incontrano eventualmente degli osta-


coli.

• Viene considerata, nel planning del percorso, anche la forma del robot.

La funzione obbiettivo da massimizzare risulta essere la seguente:

a · speed + b · dist + c · orientamento


Si possono verificare oscillazioni del robot quando una delle dimensioni x, y
o θ i valori scelti per lo step successivi risultato invertiti di segno rispetto a
quelli correnti. Per evitare queste oscillazioni, quando il robot si muove in una
direzione, per i cicli successivi la direzione opposta viene contrassegnata come
non valida, finchè il robot non si è spostato oltre una certa distanza.

7.6 CostMap
L’algoritmo basato su map grid utilizza una mappa di costo locale: per ogni
ciclo di controllo viene creata una mappa locale attorno alla zona in cui si trova
il robot. Ogni «cella» della mappa viene mappata con un valore che rappresenta
il costo della cella stessa (calcolato in base alla presenza o meno di un ostacolo,
ed anche in base alla distanza dal punto target da raggiungere). L’obbiettivo
globale di questo algoritmo è quello di riuscire a trovare un percorso, in grado
di evitare gli ostacoli, che sia a minimo costo totale.

Figura 7.5: Esempio di mappa dei costi.

7.7 Metodo dei campi potenziali


Il comportamento di un robot in un ambiente può essere rappresentato anche con
il metodo dei campi potenziali. Con questo metodo viene fatta una analogia tra
l’ambiente in cui il robot si trova ed il campo magnetico: gli ostacoli vengono
pensati come oggetti che generano un campo magnetico repulsivo, tanto più

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

7.7. METODO DEI CAMPI POTENZIALI 43

forte quanto più il veicolo si trova in vicinanza degli ostacoli. Si possono quindi
ottenere diversi tipi di campi potenziali:

Figura 7.6: Esempio di mappa dei costi.

a. si rappresenta il corridoio. Il robot viene visto come soggetto ad un flusso


che lo porta verso la fine del corridoio.
b. viene rappresentata una parete che ha un campo di forze ortogonali. Tanto
più il robot si avvicina alla parete, tanto più potente sarà la forza che lo
spinge via.
c. viene rappresentato un punto di attrazione (ad esempio il punto target
che deve essere raggiunto dal robot).
d. viene rappresentata la tipica repulsione degli ostacoli.

e. viene rappresentata la rotazione attorno ad una certa area.

Questi campi potenziali possono essere tra di loro combinati, ottenendo un «per-
corso guidato dai campi» dal punto in cui si trova attualmente il robot ed il punto
target. I vantaggi del metodo dei campi potenziali sono:
• Facile da visualizzare.

• Facile da costruire grazie a diverse librerie software disponibili.


• I campi potenziali possono essere parametrizzati.
• Il comportamento del robot può essere tarato facilmente individuando dei
parametri che definiscono i campi di forza.

Il metodo dei campi potenziali, però, presenta anche dei problemi. Infatti in
alcuni punti il robot potrebbe sentirsi sottoposto ad un campo nullo (a causa di
due campi uguali ed opposti) e quindi non sapere più dove muoversi. Inoltre il
movimento del robot potrebbe non essere fluido.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

44 CAPITOLO 7. OBSTACLE AVOIDANCE

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 8

2D Map Building

Un robot deve potersi muovere in un certo ambiente in cui è inserito e, per fare
questo, può avere la necessità di costruirsi delle mappe. Diversi tipi di mappe
sono:

• Mappe Geometriche: sono mappe tipo planimetrie che per essere rea-
lizzate richiede che il robot sia dotato di sensori precisi (telimetro laser).

Figura 8.1: Esempio di mappa geometrica.

• Mappe di occupazione: ogni cella della griglia corrisponde ad un’area


di ambiente a cui è associata una certa probabilità di trovarla occupata:

– Bianca → 0%, area libera.


– Nera → 100%, area occupata.
– Grigia → 50%, sono le celle non ancora visitate.

45

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

46 CAPITOLO 8. 2D MAP BUILDING

Figura 8.2: Esempio di mappa di occupazione.

• Mappe topologiche: vengono rappresentati diversi nodi di un grafo ov-


vero i punti distintivi dell’ambiente. Gli archi, invece, sono i collegamenti
tra i vari ambienti.

Figura 8.3: Esempio di mappa topologica.

8.1 Errori e rumori nella misurazione


Tutte le misurazioni che possono essere effettuate da un robot sono soggette a del
rumore. Tali errori nella misurazione potrebbero portare a malfunzionamenti
(ad esempio crash del robot) o a costruzioni di mappe errate. Se le misure fossero
tra di loro statisticamente indipendenti, allora sarebbe possibile farne tante
per cancellare l’effetto del rumore. Purtroppo nel mapping fatto da un robot
le misurazioni sono statisticamente dipendenti e questo porta all’accumularsi
dell’errore.

Figura 8.4: Un piccolo errore di rotazione sulla fine di un lungo


corridoio può portare a molti metri di errore.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

8.2. MOTION BLUR 47

Tra i problemi del mapping troviamo il cosidetto problema della corrispon-


denza dovuto al fatto che i sensori utilizzati hanno un range ridotto quindi
bisogna acquisire delle informazioni di porzioni di ambiente che poi, però de-
vono essere messe insieme grazie alle informazioni dell’odometria. Il calcolo
dell’odometria, però è anch’esso affetto da un errore che diverge nel tempo. Al-
tro fattore che può generare errori nella misurazione è quello della dinamicità
dell’ambiente. Il dinamismo degli ambienti robotici crea una grande sfida,
poichè aggiunge ancora un altro modo con cui possono essere spiegate le incoe-
renze nella mappa costruita. Infatti non è possibile prevedere se l’incoerenza
nella mappa sia dovuto a calcoli errati o ad un semplice cambiamento dell’am-
biente. Tutti questi problemi portano ad un utilizzo massivo, nel campo del
robot-mapping di approcci probabilistici sia per quanto riguarda l’ambien-
te che per quanto riguarda il movimento del robot. Questi approcci hanno i
seguenti vantaggi:

• Possono gestire anche modelli poco accurati.

• Possono gestire anche sensori imperfetti.

• Sono molto robusti in applicazioni reali.

• Sono i più utilizzati in campo robotico.

Essi hanno però anche alcuni svantaggi:

• Sono spesso computazionalmente complessi.

• Si devono basare su assunzioni non sempre vere.

• Sono approssimati.

8.2 Motion Blur


Il robot, per la costruzione di mappe, potrebbe scattare delle foto mentre si
sta muovendo. Questo significa che la foto potrebbe essere sfocata o distorta
e di conseguenza lo sarà anche la mappa. Inoltre lo scatto dell’immagine può
impiegare del tempo per avvenire, quindi si acquisirà un’ informazione in ritardo.
Per ridurre questo effetto è possibile utilizzare delle telecamere che leggono i
pixel contemporaneamente piuttosto che in sequenza.

8.3 Mapping a breve e lungo termine


Il mapping a breve termine può essere adatto quando l’unico scopo della co-
struzione della mappa è l’implementazione di un obstacle avoidance. Inoltre
con un mapping di questo tipo, per evitare i problemi descritti nel paragrafo
8.2 è possibile utilizzare l’invecchiamento. Ovviamente bisognerà implementare
un sistema che permetta di rendere «invisibili» dati più o meno vecchi (dato
che si lavora con mapping a breve termine) che saranno sostituiti da dati più
recenti. Una alternativa è il mapping a lungo termine che richiede, però, di
memorizzare una consistente quantità di informazioni ad alta risoluzione per
essere comparati.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

48 CAPITOLO 8. 2D MAP BUILDING

8.4 Mappe 2D geometriche


Le mappe 2D sono le più frequenti da utilizzare poichè si suppone di lavorare per
la maggior parte dei casi con robot che si muovono su ruote su di un pavimento.

8.4.1 Telemetro laser


Il telemetro laser è sicuramente il metodo più utilizzato per realizzare delle
mappe 2D. Dal punto di vista dei dati misurati del telemetro laser, una scena
visibile non è altro che un insieme di punti nel piano, posto alla quota del sensore,
appartenenti ai profili degli oggetti rilevati che dovranno poi essere congiunti con
opportune tecniche.

Figura 8.5: Esempio di punti individuati da un telemetro laser per


la mappatura.

Ogni punto è rappresentato, rispetto al sistema di riferimento locale al robot,


attraverso il valor medio e la varianza delle sue coordinate. Il colore e la tipologia
della superficie colpita dal laser può influire sulla precisione.

8.4.2 Retta nel piano


Una retta nel piano può essere parametrizzata in modi diversi, in base a quali
operazioni si vogliono svolgere su di essa:

• f (x, p) = ρ − x · cos(θ) − y · sin(θ) = 0 con p = (r, θ)


• f (x, p) = a · x + b · y + c = 0 con p = (a, b, c)
• f (x, p) = y − m · x − q = 0 con p = (m, q)

La prima parametrizzazione risulta la migliore in quanto con la senconda non è


univoca mentre la terza non consente di rappresentare rette verticali. Quando
si hanno a disposizione diversi punti, il problema di trovare una retta che li
interpola al meglio viene detto di regressione lineare, ovvero si cerca la retta
che passa per i punti che sono stati individuati. Il tipico modo di vedere la retta,
nei metodi di regressione lineare, è il primo tra quelli elencati in precedenza, è
necessario quindi stimare i valori di ρ e θ. In questo modo si definisce un certo
errore che deve essere minimizzato durante la ricerca della retta:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

8.4. MAPPE 2D GEOMETRICHE 49

e = x · cos(θ) + y · sin(θ) − r

Figura 8.6: Esempio di parametrizzazione della retta.

8.4.3 Segmentazione dei punti


L’insieme iniziale dei punti individuati da un telemetro laser viene suddiviso in
un certo numero di sottoinsiemi, ognuno dei quali dovrebbe contenere tutti e
soli i punti che poi verranno a far parte di un unico segmento (clusterizzazione).
Vi possono essere due tipi di errori dati da soglie errate nella considerazione
della distanza tra punti:

• Soglia di distanza tra due punti troppo elevata: Due punti che non
appartengono allo stesso segmento nella realtà (ad esempio perché tra di
loro vi è una apertura) vengono visti come su di un unico segmento.

• Soglia di distanza tra due punti troppo bassa: Due punti che ap-
partengono allo stesso segmento nella realtà (ad esempio su di un angolo
tra due pareti) vengono visti come separati da un’apertura.

(a) Soglia troppo elevata (b) Soglia troppo bassa

Figura 8.7: Esempi di errori dnella clusterizzazione.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

50 CAPITOLO 8. 2D MAP BUILDING

8.4.4 Mappa Locale e Globale


Si ha una mappa locale quando i punti rappresentano la congiunzione di due
segmenti. Una mappa globale viene ottenuta invece come composizione di map-
pe locali. Un aspetto positivo nell’utilizzo delle mappe globali è che queste,
ovviamente, non vedranno una sovrapposizione perfetta delle varie mappe lo-
cali. La distanza tra le varie misurazioni dello stesso segmento permetterà di
capire di quanto il robot si è spostato.

8.5 Mappe di occupazione 2D


Le mappe di occupazione sono state tra le prime ad essere utilizzate, poichè
si avevano pochi sensori (quasi solo ultrasuoni). In questo tipo di mappe,
l’ambiente viene rappresentato con una griglia di celle, in cui ogni cella può
essere:

• Libera (cella bianca)

• Non ancora esplorata (cella grigia)

• Occupata (cella nera)

Inizialmente la mappa risulta tutta grigia e poi, con le varie misurazioni del
robot, viene colorata. Tramite le celle è possibile ricavare la posizione del robot.

8.5.1 Modello dato da un sensore laser


Il modello del sensore rappresenta la probabilità che il sensore abbia rilevato un
ostacolo in una data posizione mx,y ad una distanza z:

p(z|mx,y )

Considerando un sensore unidimensionale ideale, dato la posizione di un ostacolo


il sensore definisce il modello di probabilità rappresentato in Figura 8.8.

Figura 8.8: Modello di probabilità di un sensore laser che rileva un


ostacolo in posizione z.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

8.5. MAPPE DI OCCUPAZIONE 2D 51

8.5.2 Modello dato da un sensore sonar


I sensori sonar permettono di misurare la distanza con un oggetto tramite l’u-
tilizzo di ultrasuoni. Il principale limite di questa soluzione è dato dal fatto
che il propagarsi dell’onda sonora segue un cono di 30◦ e quindi la misurazione
non può avvenire del tutto correttamente. In particolare la distanza misurata
è abbastanza precisa, ma non si può sapere in quale direzione è stata presa.
Per questo motivo il comportamento del sensore viene rappresentato in termini
probabilistici.

Figura 8.9: Modello di probabilità di un sensore sonar reale.

Dalla Figura 8.9 si può notare che all’aumentare della distanza diminuisce la
probabilità che una cella sia libera (nel caso non venga rilevato nessun ostacolo).
Invece nel caso in cui venga rilevato un ostacolo ad una certa distanza, la cella
con la probabilità di rilevare un ostacolo più elevata sarà quella frontale. In
particolare, supponendo di lavorare su di una mappa di occupazione, il modello
probabilistico del cono sarà come quello rappresentato in figura 8.10.

Figura 8.10: Modello di probabilità del cono dato da un sensore


sonar reale.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

52 CAPITOLO 8. 2D MAP BUILDING

Data z la distanza misurata dal sensore e (ρ; θ) le coordinate di una specifica


cella, la probabilità segue un andamento normale:
2 2
1 −1(
(z−ρ)
− θ )
p(z|ρ, θ) = · e 2 σ ρ 2 σθ 2
2πσρ σθ
Applicando la regola di Bayes alla singola cella s(Ci ) ad una distanza z ottenia-
mo:

P [z|s(Ci ) = OCC] · P [s(Ci ) = OCC]


P [s(Ci = OCC|z)] = P
p[z|s(Ci )] · P [s(Ci ) = OCC]
Lo svantaggio di questo tipo di mappe è che servono tante osservazioni per
realizzarle.

8.6 Quadtree per mappe di occupazione 2D


8.6.1 Griglia di occupazione 2D
Una griglia di occupazione può rappresentare una nuvola di punti, aquisiti tra-
mite telemetro laser, con una precisione arbitraria. Più la griglia contiente celle
(risoluzione più elevata) più la rappresentazione dell’ambiente sarà precisa.

Figura 8.11: Da una nuvola di punti si può realizzare una griglia


con diverse risoluzioni.

Questa rappresentazione può essere fatta facilmente utilizzando il cosidetto


quadrtee.

Figura 8.12: QuadTree costruito sull’esempio in Figura 8.11.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

8.7. MAPPING TOPOLOGICO 53

che può essere facilmente codificato con codifica binaria.

Figura 8.13: Codifica binaria del QuadTree in Figura 8.12.

Oltre alla possibilità di indicare occ e free nella griglia di occupazione, è possibile
anche rappresentare esplicitamente l’informazione «ancora ignoto» con la parola
chiave Unk (unknown). Il problema dell’inserimento della terza voce Unk sta
nel fatto che bisogna trovare un modo efficiente per rappresentare in codifica
binaria questo terzo simbolo. Alcune soluzioni possono essere:

• Utilizzare una codifica a 2 bit per ogni simbolo:

Figura 8.14: Esempio di codifica a due bit.

• Utilizzare sempre una codifica a 2 bit per ogni simbolo utilizzando questa
volta la codifica 11 per indicare valori misti nel nodo padre (ovvero c’è
almeno un figlio diverso dagli altri):

Figura 8.15: Esempio di odifica a due bit più efficiente.

8.7 Mapping Topologico


Un modello topologico permette di descrivere l’ambiente tramite un insieme
di archi e nodi, in cui i nodi rappresentano luoghi distintamente riconoscibili
nell’ambiente e gli archi rappresentano i percorsi che li connettono. I nodi e gli
archi sono definiti proceduralmente in termini di controllo sensomotorio:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

54 CAPITOLO 8. 2D MAP BUILDING

• Un luogo corrispondente ad un nodo deve essere distintivo in termini di


input sensoriali.

• Le misure di distinzione sono definite da un sottoinsieme delle caratteri-


stiche sensoriali, le quali possono essere massime in un luogo distintivo.

• Viene utilizzata la ricerca Hill-climbing per identificare e riconoscere un


luogo distintivo quando il robot si trova nelle sue vicinanze.

Se consideriamo la geometria di un ambiente semplice, come quello mostrato in


figura 8.16, possiamo sostenere che le linee tratteggiate rappresentano i punti
che sono in qualche modo distinguibili e che quelli più distinguibili siano quelli
che portano all’intersezione delle due linee.

Figura 8.16: Un semplice ambiente.

Tuttavia il robot ha solo un accesso locale e sensomotorio all’ambiente. Abbia-


mo quindi bisogno di determinare quali caratteristiche sensoriali permettano di
distinguere un determinato luogo. Ad esempio la Figura 8.17 mostra una misura
di distinzione che si basa su una caratteristica geometrica: la distanza uguale
agli oggetti vicini.

Figura 8.17: Un misura distintiva senza errori.

Una volta che il robot si trova nelle vicinanze di un luogo distintivo, applica
l’Hill-climbing per trovare una massimo locale considerando ad esempio la ca-
ratteristica geometrica citata. Si noti quindi che non è necessario che un luogo
sia globalmente distintivo ma è necessario che si distingua dai punti vicini.
I percorsi che collegano luoghi distinti sono definiti in termini di strategie di
controllo locali (LCS). Il robot applica tali strategie per spostarsi e mentre

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

8.7. MAPPING TOPOLOGICO 55

segue il percorso, continua ad analizzare il suo input sensoriale per evidenziare


nuove caratteristiche distintive.

Figura 8.18: Risultato di una mappa topologica. A sinistra viene


rappresentato il grafo dell’ambiente mentre a destra viene fatta su
tale grafo una ricorstuzione topologica dell’ambiente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

56 CAPITOLO 8. 2D MAP BUILDING

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 9

Robot Localization

9.1 Introduzione
L’utilizzo di una localizzazione basata sulle mappe note al robot sfrutta un
approccio probabilistico basato sulle informazioni sensoriali ricavate dal robot.
Quando il robot si muove può sfruttare una:

• Localizzazione assoluta.

• Localizzazione relativa.

9.2 Localizzazione probabilistica


Consideriamo un robot che si muove in un ambiente a lui noto. Come abbiamo
già analizzato in precedenza, quando il robot si muove, pur partendo da una
posizione nota perfettamente, ha la necessità di aggiornare la sua odometria.
Questo aggiornamento, però, non può essere effettuato con certezza, dato che i
sensori a bordo del robot sono imprecisi. Una soluzione molto spesso utilizzata è
quella di aggiornare l’odometria del robot utilizzando osservazioni dell’ambiente
circostante che permettono di ottenere un ulteriore stima della posizione del
robot.

9.3 Sensor aliasing


Nei robot viene spesso utilizzata una certa ridondanza dei sensori. E’ comune
che questi sensori non diano risultati univoci. Inoltre anche utilizzando più
sensori si ha una mappatura molti-a-uno tra gli stati dell’ambiente e i possibili
input del robot. Questo significa che, normalmente, le informazioni rilevate dai
sensori del robot non sono sufficienti per identificare la posizione di un robot
utilizzando una sola lettura. E’ questo il motivo per cui la localizzazione di
un robot viene fatta basandosi su di una serie di misure ottenute nel tempo.
Possono essere utilizzati due modelli differenti:

• Modello di attuazione: data l’informazione sulla posizione st−1 e sulle


misure degli encoder ot , si ricava la posizione corrente:

57

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

58 CAPITOLO 9. ROBOT LOCALIZATION

s′t = Act(ot , st−1 )

Un modello di questo tipo ha come contro il fatto che l’incertezza delle


misurazioni e delle attuazioni cresce con gli spostamenti del robot.

• Modello di percezione: data l’informazione sulla posizione s′t prodotta


con il modello di attuazione ed i vari input dati dai sensori it si calcola:

st = See(it , s′t )

Un modello di questo tipo permette di avere una diminuzione delle incer-


tezze.

9.4 5 passi per la localizzazione basata su mappa


Generalmente, per una localizzazione basata su mappa si ha a disposizione:

• Stima iniziale della posizione del robot p(k|k).

• Matrice di covarianza
P che descrive l’incertezza sulla posizione del robot
all’istante k p (k|k).

• Input dato al controllo corrente, ovvero il prossimo spostamento che verrà


fatto compiere al robot u(k).

• Set corrente delle misure sensoriali Z(k + 1).

• Mappa dell’ambiente M (k).

Ad ogni passo k vengono calcolati:

• Nuova stima a posteriori della posizione p(k + 1|k + 1).


P
• Matrice di covarianza della stima a posteriori p (k + 1|k + 1).

Questa procedura richiede 5 passi.

9.4.1 1. Calcolo dell’odometria


La prima cosa che viene calcolata è la predizione della posizione (ovvero dell’o-
dometria):

pb(k + 1|k) = pb(k|k) + u(k)

9.4.2 2. Osservazione
Il secondo passo è quello che permette di ottenere l’osservazione Z(k + 1) ri-
guardante le misure effettuate dal robot. Queste misure sono generalmente
un insieme di osservazioni estratte da diversi sensori, tipicamente informazioni
grezze che poi vengono elaborate per estrarne delle linee o delle features.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

9.4. 5 PASSI PER LA LOCALIZZAZIONE BASATA SU MAPPA 59

9.4.3 3. Predizione delle misure


Il passo successivo è quello di utilizzare la predizione della posizione pb(k + 1|k)
e la mappa M (k) per generare un insieme di osservazioni predette zt . Queste
osservazioni devono essere trasformate utilizzando il sistema di riferimento dei
sensori:

zbi (k + 1) = hi (zt , pb(k + 1|k))


dove la funzione hi ha il solo scopo di trasformare le coordinate tra il sistema
di riferimento «globale» e quello dei sensori. A questo punto possiamo definire
la predizione delle misure come un insieme che contiene tutte le singole zbi :

b + 1) = {b
Z(k zi (k + 1)|(1 ≤ i ≤ ni )}
.

9.4.4 4 e 5. Matching e stima


Supponiamo di avere a disposizione delle stime multiple della posizione del ro-
bot. Rappresentiamo, tramite stima Monte Carlo, la situazione di un robot che
si trova in una particolare posizione tramite un set di campioni, detti particelle:

S = {si |i = 1...N }
dove ogni si è nella forma << x, y, θ >, p > e:
• < x; y; θ > rappresenta la posizione del robot.
P
• p rappresenta il «peso», e pi = 1
La stima della posizione fatta dal robot può essere fatta con Monte Carlo,
utilizzando due diversi modelli:
• Robot Motion Model: quando il robot si muove, con Monte Carlo
vengono generati N nuovi campioni che approssimano la posizione l del
robot dopo il comando di movimento a. Ogni campione viene generato
in modo randomico utilizzando il precedente set di campioni, il comando
di movimento e tenendo conto, per ciascuno, del suo peso p. Quindi il
modello del robot è modellabile con la probabilità P (l|l′ , a) dove l′ è la
posizione precedente.

Figura 9.1: Campionamento che approssima la posizione del robot.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

60 CAPITOLO 9. ROBOT LOCALIZATION

La Figura 9.1 mostra l’effetto di questa tecnica di campionamento, inizian-


do da una posizione conosciuta ed eseguendo poi delle azioni. Come si può
vedere l’insieme dei campioni approssimano la distribuzione con un’incer-
tezza crescente, rappresentando la graduale perdita di informazioni dovuto
a misure e movimenti non perfetti.

• Robot Sensing Model: Viene ri-pesato il set dei campioni in base alla
verosimiglianza con i dati forniti attualmente dai sensori.

Dopo l’applicazione di questi due modelli, vengono generati nuovi campioni in


base al peso p ed aggiunti altri campioni in modo uniformemente distribuito.
Il numero dei campioni N scelto determina l’accuratezza del sistema. Inoltre il
numero di campioni è determinato anche dalla fase in cui ci si trova:

• Durante la global localization il robot non sa dove si trova, quindi ha


una elevata incertezza e ciò determina la necessità di avere un numero di
campioni molto elevato.

• Durante la position tracking il robot ha una incertezza abbastanza


ridotta, quindi non necessita di avere molti campioni.

Con la stima Monte Carlo il numero N dei campioni viene determinato durante
l’esecuzione, tramite comparazione delle informazioni possedute prima e dopo la
lettura dei sensori. Se queste informazioni sono molto distanti verrà utilizzato
un N elevato, altrimenti più ridotto.

9.5 Localizzazione e navigazione basata su mar-


catori
Una prima soluzione per far localizzare e navigare il robot è quella di inserire,
nell’ambiente in cui esso si trova, dei marcatori «artificiali». Il sensore non
si troverà sempre perpendicolare ai marcatori che deve rilevare, quindi viene
utilizzata la tecnica della triangolazione: in base alla distanza a cui vengono
rilevati i marcatori ed in base all’angolo con cui il sensore li rileva, vengono
risolte delle equazioni algebriche tipiche dei triangoli.

9.5.1 Triangolazione lineare con orientamento del robot


noto
Supponiamo di essere nella situazione seguente rappresentata in Figura 9.2.
A priori conosciamo i punti (x1 ; y1 ) e (x2 ; y2 ). Il sistema dei sensori misurerà i
valori:

• θv

• θ 1 = θ v + b1

• θ 2 = θ v + b2

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

9.5. LOCALIZZAZIONE E NAVIGAZIONE BASATA SU MARCATORI 61

Figura 9.2: Alcuni dei parametri in gioco con la presenza di


marcatori.

Le incognite che devono essere calcolate sono le coordinate (x; y) in cui il robot
si trova. Le equazioni vincoli a cui siamo sottoposti sono le due seguenti:
(
y1 −y
tanθ1 = sinθ
cosθ1 = x1 −x
1

y2 −y
tanθ2 = sinθ
cosθ2 = x2 −x
2

Inoltre sono presenti le due equazioni seguenti (equazioni parametriche delle


rette):
(
(x1 − x)s1 = (y1 − y)c1
(x2 − x)s2 = (y2 − y)c2

Le quali hanno sempre una soluzione a parte nel caso in cui le rette siano
parallele (−s1 c2 + s2 c1 = 0). La massima precisione di un metodo come questo
si ottiene quando i due marcatori vengono visti a 90◦ . Se, invece questi sono
quasi paralleli, o vengono visti da lontano, l’ imprecisione è abbastanza alta.

Figura 9.3: L’incertezza sulla posizione del robot è dipendente dagli


angoli formati dai marcatori.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

62 CAPITOLO 9. ROBOT LOCALIZATION

9.5.2 Triangolazione lineare con orientamento del robot


non noto
Supponiamo di essere nella situazione rappresentata in Figura 9.4.

Figura 9.4: Situazione senza conoscere l’orientamento del robot.

A priori conosciamo i punti (x1 ; y1 ), (x2 ; y2 ) e (x3 ; y3 ). Il sistema dei sensori


misurerà i valori:
• θ 1 = b1
• θ 2 = b2
• θ 3 = b3
Le incognite che devono essere calcolate sono le coordinate (x; y) in cui il robot
si trova ed il suo orientamento θv . Le equazioni vincoli a cui siamo sottoposti
sono le tre seguenti:
 sin(θv +θ1 ) y1 −y
tan(θv + θ1 ) = cos(θv +θ1 ) = x1 −x

v +θ2 )
tan(θv + θ2 ) = sin(θ y2 −y
cos(θv +θ2 ) = x2 −x

 v +θ3 )
tan(θv + θ3 ) = sin(θ y3 −y
cos(θv +θ3 ) = x3 −x

9.5.3 Triangolazione circolare


Supponiamo di essere nella situazione rappresentata in Figura 9.5.

Figura 9.5: Situazione con traingolazione circolare.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

9.5. LOCALIZZAZIONE E NAVIGAZIONE BASATA SU MARCATORI 63

A priori conosciamo i punti (x1 ; y1 ) e (x2 ; y2 ). Il sistema dei sensori misurerà i


valori:

• r1

• r2

Le incognite che devono essere calcolate sono le coordinate (x; y) in cui il robot
si trova. Le equazioni che determinano i due raggi sono le seguenti:
( p
r1 = (x − x1 )2 + (y − y1 )2
p
r2 = (x − x2 )2 + (y − y2 )2

L’area di incertezza è quindi data dall’area di intersezione dei due cerchi. Nel
caso invece ci fosse solo un marcatore l’area in cui il robot si può trovarsi è pari
all’intera area dell’unico cerchio generato.

Figura 9.6: Diverse situazioni di incertezza.

Anche in questo caso la maggiore precisione si ha quando i due marcatori


appaiono a circa 90◦ tra di loro rispetto al robot.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

64 CAPITOLO 9. ROBOT LOCALIZATION

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 10

SLAM - Simultaneous
Localization And Mapping

10.1 Introduzione
Il problema dello SLAM riguarda un robot che viene acceso in una posizione
ignota in un ambiente ignoto e che, quindi, deve incrementare la sua conoscenza
costruendo una mappa dell’ambiente stesso, mentre la utilizza anche per orien-
tarsi. Risolvere il problema dello SLAM significa rendere il robot veramente
autonomo. I primi tentativi di approccio a questo problema si sono basati sul-
la descrizione geometrica delle incertezze e sui tentativi di disaccoppiare il più
possibile il problema della costruzione della mappa da quello di localizzazione.

10.2 Localizzazione e Mapping: Elementi

Figura 10.1: Elementi chiave dello SLAM.

Parlando di mapping e localizzazione possiamo individuare i seguenti elementi:

65

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

66 CAPITOLO 10. SLAM

• k = 1, 2, ... sono indici discreti temporali.

• xk è la posizione reale del robot al tempo k.

• uk è un vettore che identifica l’azione di controllo applicata al robot al-


l’istante k − 1, che consente quindi di far passare il robot dalla posizione
xk−1 alla posizione xk .

• mi è la posizione reale del marcatore i.

• zk,i è la misurazione della posizione dell’i-esimo marcatore, presa dalla


posizione xk .

• zk è una generica osservazione di uno o più marcatori, presa all’istante k.

10.3 Localizzazione e Mapping: Definizioni Ge-


nerali
Diamo le seguenti definizioni;

• Definiamo storia degli stati il vettore:

X k = {x0 , x1 , ..., xk } = {X k−1 , xk }

• Definiamo storia degli input di controllo il vettore:

U k = {u0 , u1 , ..., uk } = {uk−1 , uk }

• Definiamo insieme di tutti i marcatori il vettore:

m = {m1 , m2 , ..., mM }

• Definiamo storia delle osservazioni il vettore:

Z k = {z1 , z2 , ..., zk } = {Z k−1 , zk }

10.4 Il problema della localizzazione e del map-


ping
Partendo dall’unica conoscenza delle osservazioni Z k si vuole, tramite inferenza,
conoscere la posizione X k del veicolo e/o dei marcatori m. Per velocizzare
i procedimenti (snaturando però quello che è il procedimento del SLAM) è
possibile dare al robot una conoscenza a priori della mappa. In alternativa si
possono fornire al robot delle informazioni aggiuntive, ad esempio quelle inerziali
o GPS.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

10.4. IL PROBLEMA DELLA LOCALIZZAZIONE E DEL MAPPING 67

10.4.1 Problema della localizzazione


Nel problema della localizzazione:
• Si ha a disposizione a priori una mappa (geometrica, mappa dei marcatori,
mappa di occupazione, ...) e quindi la posizione dei marcatori.
• Da una sequenza di azioni di controllo U k si vuole fare inferenza riguardo
alla posizione incognita Xk del veicolo.

Figura 10.2: In giallo viene rappresentata la posizione reale del vei-


colo mentre in grigio quella stimata (si può diminuire l’incertezza
aumentando il numero delle osservazioni.

Dati quindi la pozione dei marcatori e le distanze dai marcatori stessi si può
stimare la posizioine del robot.

10.4.2 Problema del mapping


Il problema del mapping:
• Parte da una conoscenza della posizione Xk in cui si trova il veicolo.
• Tenta di fare inferenza riguardo alla mappa, per poterla così costruire.
Tale mappa può essere geometrica, dei marcatori oppure una mappa di
occupazione.

Figura 10.3: In blu è riportata la posizione reale dei marcatori


mentre in grigio quella stimata.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

68 CAPITOLO 10. SLAM

10.5 Problema della localizzazione e del mapping


simultaneo
A partire da:
• La posizione iniziale x0 .
• La sequenza di azioni di controllo U k date.
Stimare allo stesso tempo la mappa e la locazione X k del veicolo. I due problemi
sono accoppiati perchè:
• Il problema della localizzazione parte sull’assunzione di conoscere la map-
pa, che però dovendo affrontare anche il problema del mapping, in questo
caso non abbiamo.
• Il problema del mapping parte sull’assunzione di conoscere la posizione
X k , che però dovendo affrontare anche il problema della localizzazione, in
questo caso non abbiamo.
La soluzione per risolvere questo problema è quella di stimare sia la mappa che
la posizione X k del robot andando a sfruttare correttamente le misure sensoriali
e andando a ridurre passo dopo passo l’incertezza sulla posizione del robot e
sui marcatori. Il tutto converge perchè i marcatori sono fissi (si suppone) è
questo permette di stimare una mappa relativa e quindi la posizione del robot.
Dal punto di vista analitico si utilizza un filtro di Kalman in cui lo stato da
stimare è l’insieme di m e X k . La posizione corretta dei marcatori m viene
stimata facendo più osservazioni per lo stesso marcatore in posizioni diverse.

Figura 10.4: Combinazione dei problemi di mapping e


localizzazione.

10.6 Filtro di Kalman Esteso - Introduzione


Il filtro di Kalman Esteso (EFK) è uno stimatore lineare ricorsivo per siste-
mi che sono descritti tramite processi non lineari, e rappresenta la base per
praticamente tutti gli algoritmi SLAM. Il EFK si basa sulle seguenti assunzioni:
• Vengono utilizzati modelli analitici del movimento del veicolo, oltre che
osservazioni prodotte dai sensori.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

10.6. FILTRO DI KALMAN ESTESO - INTRODUZIONE 69

• Suppone che l’errore dello stato da calcolare sia unimodale (ha un solo
valore che si ripete alla frequenza massima - moda) con media nulla.

• Suppone che l’errore delle misure fatte dai sensori sia unimodale con media
nulla.

A questo punto bisogna identificare un modello corretto per sensori, veicoli,


processi ed errori.

10.6.1 Modelli
I modelli devono essere costruiti in modo di tenere conto delle varie incertezze
che possono affliggere le misure e le stime. I modelli utilizzati sono:

• Sensori (in forma di verosimiglianza): P (zk |xk , m)

• Movimento del veicolo (in forma di probabilità condizionata): P (xk |xk−1 , uk )

• Stima ricorsiva: P (xk , m|Z k , U k , x0 )

10.6.2 Modello del movimento


Per analizzare il movimento del veicolo si fa la supposizione che il processo
sia di tipo Markoviano, ovvero che sia un processo in cui ogni osservazione è
indipendente dalle precedenti. Inoltre si utilizza il teorema della probabilità
totale (permette di calcolare la probabilità che si verifichino almeno di due o
più eventi, ovvero la probabilità dell’unione di essi) che dice come tenere conto
della sequenza di comandi, osservazioni e la posizione iniziale. Da questi modelli
il filtro di Kalman è in grado di aggiornare la stima corrente. Ad esempio sia:

• Lo stato del veicolo al tempo k definito in termini di posizione e orienta-


mento:
x(k) = [x(k), y(k), φ(k)]T

• Il comando di controllo del robot al tempo k:

u(k) = [V (k), ψ(k)]T

• La legge di aggiornamento dello stato:

x(k) = f (x(k − 1), u(k), k) + q(k)

dove q esprime la componente di disturbo sul movimento (ruote sgonfie,


sensori imprecisi, ...).

Quindi è cosi possibile aggiornare la posizione x(k) data la posizione al tempo


x(k − 1) e la distanza percorsa dalle ruote in un tempo T :
     
x(k) x(k − 1) + T V (k)cos(φ(k − 1 + ψ(k))) qx (k)
 y(k)  = y(k − 1) + T V (k)sin(φ(k − 1 + ψ(k))) + qy (k)
φ(k) φ(k − 1) + T V B(k) sin(ψ(k)) qφ (k)

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

70 CAPITOLO 10. SLAM

10.6.3 Modello dei sensori


Il modello dei sensori rappresenta la probabilità di fare un’osservazione zk quan-
do il vero stato è {xk , m}, ovvero rappresenta P (zk |xk , m). Dato che si assume
che il processo sia markoviano per qualsiasi k abbiamo:
k
Y
k k
P (Z |X , m) = P (zi |xi , m)
i=1

La formula più utilizzata per esprimere questo modello è la seguente:

P (zk |xk , m) ⇐⇒ z(k) = h(xk , m) + vk


dove la funzione h modella la geometria dell’osservazione e vk modella i disturbi.
Ad esempio supponendo di avere a disposizione un telemetro laser possiamo
legare l’osservazione sulla distanza e direzione misurata, ad un vincolo al quale
sommiamo l’incertezza della misura (r):
 i  "p #  
zr (k) (Xi − x(k))2 + (Yi − y(k))2 rr i (k)
= Yi −y(k) =
zθ i (k) arctan( X i −x(k)
) − φ(k) rθ i (k)

10.7 EFK
Tramite le considerazioni fatte quindi il filtro di kalman esteso permette di
aggiornare lo stato del robot e la sua incertezza dato il modello del veicolo
composto da:
• Posizione: xv (k) = [x(k), y(k), φ(k)]T
• Input di controllo (Twist): u(k) = [ω(k), γ(k)]T

Mentre il modello dei marcatori sarà mi = [xi , yi ]T . E quindi il modello dello


stato risultante sarà:
     
xv (k) f (xv (k − 1), u(k)) qv (k)
 m1   m1   0 
     
 m2   m2   0 
x(k) ,  = = 
 ..   ..   .. 
 .   .   . 
mM mM 0
Come si nota da questa matrice, i marcatori vengono considerati stazionari,
ovvero senza alcuna variazione dovuta ad errori. Ci si aspetta che al crescere
delle osservazioni decresca l’incertezza fino a diventare una stima esatta data
dalla stazionarietà dei marcatori. Eliminado quindi l’incertezza derivata dallo
spostamento del robot dalla posizione iniziale a quella finale, possiamo affermare
che la posizione finale del robot avrà un’incertezza pari alla sola incertezza sulla
posizione iniziale del robot.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 11

Motion Planning 2D

11.1 Introduzione
Con motion planning si intende il determinare dove il robot (visto come un
corpo rigido) deve andare, senza che durante il suo spostamento si scontri con
degli ostacoli (visti come oggetti statici). Gli input dell’algoritmo di motion
planning sono:
• La geometria del robot e degli ostacoli.
• La cinematica del robot (ad esempio quanti gradi di libertà ha).
• La configurazione iniziale e quella finale che deve assumere il robot.
L’algoritmo deve fornire in output una sequenza continua di configurazioni in
cui il robot si deve trovare per raggiungere la configurazione finale senza avere
collisioni.

11.2 Composizione dell’ambiente


L’ambiente in cui il robot deve muoversi può essere visto come composto da:
• Ostacoli: possono essere intesi come zone in cui il robot non può andare,
ovvero zone occupate.
• Spazio libero: è lo spazio non occupato dagli ostacoli, ovvero lo spazio
nel quale il robot può andare.
Per determinare dove un robot può andare è necessario discutere quello che è
uno spazio di configurazione.

11.3 Spazio di configurazione


Utilizziamo la notazione seguente:
• A, indica un oggetto rigido, ovvero il robot.
• W = R2 o W = R3 , è lo spazio euclideo dove l’oggetto A si muove.

71

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

72 CAPITOLO 11. MOTION PLANNING 2D

• B1 , ..., Bm , indicano gli ostacoli rigidi distribuiti nello spazio W .

Definiamo spazio di configurazione lo spazio di tutte le possibili configurazioni


del robot, ovvero tutte le configurazioni possibili nello spazio libero.

Figura 11.1: Esempio di configurazioni che il robot può assumere


(linea rossa) in uno spazio C 2D.

Per un robot che può solamente traslare nel piano lo spazio di configurazioni è
2D:
Cspace : (x, y)
mentre per un robot che può traslare e ruotare lo spazio di configurazioni è 3D:

Cspace : (x, y, θ)

Figura 11.2: La zona rossa individua lo spazio di configurazione


non accessibile (coppie α-β vietate). In questo esempio non c’è
un percorso che permetta al robot manipolatore di raggiungere il
target.

La maggior parte delle considerazioni fatte sullo spazio di configurazione sono


valide quando il robot viene approssimato come un punto. Quando, però, consi-
deriamo il robot non come un punto ma come un corpo vero e proprio è possibile

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

11.4. SOMME DI MINKOWSKI 73

mantenere le stesse considerazioni facendo un’espansione degli ostacoli ed una


riduzione del robot.

Figura 11.3: Si può considerare il robot come un punto estendendo


opportunamente gli ostacoli.

11.4 Somme di Minkowski


L’espansione di una forma planare in un’altra viene detta Somma di Minkowski
⊕.

Figura 11.4: In questo esempio il centro di un robot rettangolare


che può solo traslare non si può trovare all’interno dell’area verde
(somma di minkowski).

Il tutto si complica se il robot è in grado anche di ruotare. Potremmo considerare


tutti i possibili orientamenti per fare la somma di Minkowski.

Figura 11.5: Se il robot è in grado di ruotare, con questa tecnica,


otteniamo quest’area inaccessibile (verde).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

74 CAPITOLO 11. MOTION PLANNING 2D

Il vantaggio è che questo algoritmo risulta semplice e poco costoso dal punto di
vista computazionale ma è troppo conservativo.

Figura 11.6: Il robot con le giuste rotazioni sarebbe in grado di rag-


giungere l’obiettivo ma la somma di Minkowski in tutti i possibili
orientamenti afferma il contrario.

Alcuni estensioni di questo problema di base possono essere:


• Ostacoli in movimento.
• Robot multipli.
• Oggetti spostabili.
• Incertezze nel modello, nel controllo e nei sensori.
• ...

11.5 Conceptual Framework


Il ragionamento da fare riguardo al Motion Planning si basa sui seguenti passi:
• Rappresentazione continua dello spazio cartesiano, dello spazio delle con-
figurazioni e dei vincoli.
• Discretizzazione.
• Ricerca su grafo.

11.6 Approcci per il Path Planning


Esistono due approcci per il Path Planning:
• Local Planning: Sono metodi che non cercano di risolvere il problema del
path planning nella sua generalità ma usano solo le informazioni disponibili
localmente per decidere cosa fare al passo successivo.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

11.7. VINCOLI TIPICI PER IL PATH PLANNING 75

• Global Planning: Sono metodi che assumono la conoscenza completa


del mondo in cui il robot è inserito. Essi si affidano spesso al concetto di
spazio libero.

Dal punto di vista pratico un motion planner ritorna sempre un piano risolutivo
del problema, quando esiste, oppure indica che il piano di path planning non
esiste. In ogni caso, la maggior parte dei problemi di path planning hanno
una crescita esponenziale del tempo in base al numero di gradi di libertà o al
numero degli oggetti che occupano lo spazio. Gli algoritmi teorici si sforzano
per avere una massima completezza ed una minima complessità, specialmente
nel caso peggiore. Per questo motivo sono molto difficili da implementare e poco
robusti. Invece, gli algoritmi euristici cercano di avere la massima efficienza nelle
situazioni più comuni, senza però avere garanzia di performance (mancanza di
completezza, assunzioni semplificative e utilizzo di algoritmi esponenziali).

11.7 Vincoli tipici per il Path Planning


I tipici vincoli dei problemi di path planning sono:

• Vincoli locali: il robot non deve collidere con gli ostacoli.

• Vincoli differenziali: il robot deve rispettare i vincoli cinematici.

• Vincoli globali: il path deve avere la lunghezza minima.

11.8 Metodi di Path Planning


Esistono diversi approcci per affrontare il problema della pianificazione di un
percorso:

• Decomposizione in celle: si decompone lo spazio libero in celle e si


rappresenta il collegamento tra una cella libera ed un’altra tramite un
grafo di adiacenza (un grafo che indica quali sono i possibili spostamenti
tra le varie celle).

• Campo potenziale: si definisce una funzione che, in base allo spazio


libero, ha un minimo nella configurazione target e che viene seguita in
modo decrescente.

• Roadmap: si rappresenta la connessione tra lo spazio libero con una rete


di curve 1D.

In particolare la decomposizione in celle può essere di due tipi:

• Decomposizione in celle esatta: Lo spazio libero F viene rappresentato


con una collezione di celle non sovrapposte, la cui unione è esattamente
F.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

76 CAPITOLO 11. MOTION PLANNING 2D

Figura 11.7: Un esempio di decomposizione trapezioidale (basata


sul tracciamento di linee verticali in punti critici) esatta tramite la
quale viene definito un grafo per il calcolo del percorso.

Questa decompozione richiede molta memoria per registrare tutte le coor-


dinate dei vertici. La decomposizione inoltre può avvenire tramite un
metodo non ottimo oppure tramite un metodo ottimo. Trovare il numero
minimo di celle risulta però un problema NP-completo.

Figura 11.8: A sinistra una decomposizione trapeziodale esatta e


completa a 15 celle. A destra una decomposizione esatta e completa
con il numero minimo di celle (9) e quindi ottimale.

• Decomposizione in celle approssimata: Lo spazio libero F viene rap-


presentato con una collezione di celle non sovrapposte, la cui unione è
contenuta in F.

Figura 11.9: Decomposizione approssimata quadtree che


ricorsivamente suddivide le regioni in quattro parti.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

11.8. METODI DI PATH PLANNING 77

Questo approccio richiede meno memoria ma alcune celle potrebbe risultare par-
zialmente occupate (quindi vengono considerate totalmente occupate) e questo
potrebbe portare il robot ad essere incapace di raggiungere l’obiettivo anche se
in realtà un percorso c’è.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

78 CAPITOLO 11. MOTION PLANNING 2D

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 12

Roadmap probabilistiche

12.1 Introduzione
Quando, nel capitolo precedente, abbiamo introdotto il motion-planning, abbia-
mo anche definito come fosse possibile suddividere il problema in tre parti:

• Rappresentazione continua.

• Discretizzazione.

• Ricerca su grafo.

In questo capitolo ci concentreremo maggiormente sulla parte di discretizzazio-


ne.

12.2 Completezza di un planner


Un motion planner si definisce completo quando trova sempre un cammino privo
di collisioni quando questo esiste o fallisce nel caso non esiste. La decomposizio-
ne esatta in celle, le funzioni di navigazione, i grafi di visibilità, etc. forniscono
planner completi. Un motion planner si definisce probabilisticamente com-
pleto quando ritorna un cammino con alta probabilità, se tale cammino esiste.
Un planner di questo tipo potrebbe anche non terminare se il cammino non
esiste. Un resolution complete planner discretizza lo spazio e ritorna un
cammino se questo esiste in tale rappresentazione discreta.
La completezza in una spazio a dimensione elevata è però troppo complessa. Un
compromesso può essere trovato tramite la completezza probabilistica: se
c’è una soluzione, la probabilità che il planner la trovi è data da una funzione
che va a 1 con il passare del tempo.

12.3 Roadmap probabilistiche


Una roadmap probabilistica è una rappresentazione discreta di uno spazio di
configurazioni continuo, generato campionando casualmente le configurazioni
libere dello spazio (milestone) e collegando tali punti da un grafo.

79

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

80 CAPITOLO 12. ROADMAP PROBABILISTICHE

Figura 12.1: Esempio di milestones generati casualmente uniti da


un grafo.

Dal punto di vista computazionale risulta oneroso individuare gli ostacoli (do-
vrei generare molte configurazioni e questo comporta un aumento del tempo di
calcolo). E’ possibile però controllare le configurazioni campionate e le connesio-
ni tra i campioni in modo efficiente controllando solo un numero relativamente
piccolo di milestone in quanto i percorsi locali sono sufficienti per trovare una
connessione nello spazio libero. In questo metodo «generico» di discretizzazione
individuiamo:

• Roadmap: è un grafo unidirezionale indicato con R = (N, E).

• Nodi: sono un insieme di configurazioni scelte nello spazio libero. Ven-


gono indicati con N .

• Lati: sono un insieme di cammini «semplici». Vengono indicati con E.


Questi «cammini semplici» non sono altro che cammini locali che vengono
calcolati da un local planner. Più è piccolo il cammino più è probabile che
sia libero.

12.3.1 Fase di apprendimento


La fase di apprendimento delle roadmap probabilistiche è composta da tre sotto-
fasi:

1. Costruzione: si cerca di costruire una roadmap, ovvero un grafo connesso


tra i vari nodi. Durante questa fase si comincia con una roadmap vuota, si
genera una configurazione libera casuale c e la si aggiunge all’insieme N .
Successivamente si sceglie un sottoinsieme Nc di configurazioni candidate
vicine a c dall’insieme N . Si collega, poi, il nodo c a tutti i nodi selezionati
all’interno dell’insieme Nc (prestando attenzione a non scegliere nodi che
potrebbe creare cicli) in ordine di distanza crescente. A questo punto, il
lato trovato grazie a questi collegamenti può essere aggiunto all’insieme E,
per poi ricominciare fino a quando il grafo è stato creato completamente.

2. Espansione: si cerca di migliorare il grafo costruito in precedenza sele-


zionando solo delle zone del grafo che si trovano in regioni «difficili», nelle
quali ha senso aggiungere diversi nodi per aumentarne la precisione.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

12.3. ROADMAP PROBABILISTICHE 81

3. Riduzione: è una fase opzionale che cerca di semplificare il grafo.

In particolare la costruzione è costituita dai seguenti passi:

• Creazione casuale di configurazioni libere: i nodi vengono generati


da un campionamento più o meno uniforme. Ogni configurazione ottenuta
viene poi descritta dalle sue coordinate usando una distribuzione di pro-
babilità uniforme. Si controlla poi che ogni configurazione sia libera da
collisioni per essere aggiunga a N , altrimenti viene scartata.

• Determinare un percorso locale: se viene utilizzato un pianificato-


re potente spesso si ottiene un percorso quando esso esiste. In questo
caso sarebbero necessari meno nodi ma il processo di pianificazione pro-
babilmente risulterebbe lento. Se invece si utilizza un pianificatore molto
veloce è probabile che abbia meno successo e richiederà più configurazioni
e quindi verrà richiamato più spesso.

• Determinare i nodi vicini: La scelta di Nc è importante. Questo


perchè il pianificatore sarà chiamato per connettere c con i nodi in Nc e
il costo di questa operazione domina la fase di apprendimento. Quindi
vengono considerati solo quei nodi in Nc che con c danno una distanza
inferiore ad una determinata soglia (come già detto più la soglia è bassa
più probabilmente quel collegamento risulterà libero.)

Figura 12.2: Esempio di costruzione di un grafo.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

82 CAPITOLO 12. ROADMAP PROBABILISTICHE

12.3.2 Fase di Query


Dato l’inizio s e l’obbiettivo g:

• Calcola i percorsi possibili P s e P g ai nodi s e g sulla roadmap.

• Calcola il percorso da s a g usando la roadmap.

• Restituisce il percorso totale.

12.3.3 Rapidly-Growing Random Trees


Il rapidly-growing random tree è una particolare realizzazione delle fasi di co-
struzione ed espansione delle roadmap. Durante la fase di costruzione viene
costruito un albero in cui ogni configurazione viene «derivata» dalla configura-
zione precedente, ovvero si viene a generare un albero. In questo caso, quindi, le
configurazioni non sono indipendenti tra di loro. Se durante la fase di espansione
si incontra una configurazione non ammissibile (spazio occupato), si ritorna alla
configurazione precedente e se ne cerca un’altra. Il vantaggio di questa tecnica
è che una stessa roadmap può essere utilizzata per più task di navigazione ma
lo svantaggio principale è rappresentato dalla complicatezza della costruzione di
queste mappe.

Figura 12.3: Esempio di realizzazione rapidly-growing random tree.

12.4 Strategie di Sampling per Motion Planning


In alcuni ambienti l’approccio probabilistico presenta diversi limiti, quindi l’idea
più utilizzata è quella che prevede di «campionare» diverse configurazioni ma
mantenere nota solo di un sottoinsieme di queste, ovvero di quelle più «promet-
tenti». Il limite delle strategie di campionamento classico è dato dal fatto che se
nell’ambiente ci sono spazi molto stretti nei quali il robot deve passare, allora
sarà necessario avere un numero molto elevato di configurazioni. Lo scopo delle
strategie di sampling è quindi quello di riuscire ad avere tante configurazioni

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

12.4. STRATEGIE DI SAMPLING PER MOTION PLANNING 83

quando ci si trova in vicinanza a spazi occupati e poche configurazioni quando


si è nello spazio libero (controllare le collisioni risulta poco costoso). Riducendo
il numero di milestone si ottengono performace più elevate dato che il controllo
di connettività risulta costoso in termini computazionali.

Figura 12.4: Nell’immagine a destra vengono realizzate meno


configurazioni negli spazi liberi.

12.4.1 Sampling Gaussiano


Questo metodo esegue per un numero limitato di volte il seguente ciclo:

1. Generazione di una configurazione casuale c1 .

2. Scelta di una distanza d secondo una distribuzione normale.

3. Generazione di una configurazione casuale c2 ad una distanza d da c1 .

4. Se c1 ∈ Cf ree and c2 ∈
/ Cf ree , aggiunge c1 al grafo.

5. Se c1 ∈
/ Cf ree and c2 ∈ Cf ree , aggiunge c2 al grafo.

6. Altrimenti scarto entrambi.

La scelta dei parametri influisce sulle prestazioni di questo algoritmo:

• La scelta di una deviazione standard piccola richiede di generare molti


campioni per costruire il grafo.

• La scelta di una deviazione standard grande provoca una distribuzione


più uniforme dei campioni. I campioni idonei inoltre potrebbero essere
rindondanti.

La scelta viene spesso dettata dallo specifico problema. In generale questo tipo
di campionamento risulta molto più efficiente di un campionamento classico
casuale.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

84 CAPITOLO 12. ROADMAP PROBABILISTICHE

(a) c1 ∈ Cf ree and c2 (b) c1 ∈/ Cf ree and c2 (c) c1 ∈ Cf ree and c2


/ Cf ree
∈ ∈ Cf ree ∈ Cf ree e c1 ∈/ Cf ree
and c2 ∈
/ Cf ree

Figura 12.5: Esempi di casi dell’algoritmo di sampling gaussiano.

12.4.2 Bridge Test


Il bridge test è una tecnica alternativa al sampling gaussiano che permette di
limitare ancora di più il numero di configurazioni concentrandosi di più nei
passaggi stretti. Questo metodo si basa sui seguenti passi:

• Si considerano due configurazioni casuali vicini, scelte da quelle libere.

• Se entrambe le configurazioni sono occupate, si calcola la configurazione


intermedia tra le due, altrimenti si cambiano configurazioni considerate.

• Se la configurazione intermedia si trova nello spazio libero, essa viene


aggiunta allo spazio delle configurazioni.

Figura 12.6: Esempio di esecuzione dell’algoritmo Bridge Test.

12.4.3 Scelta dell’algoritmo


La scelta sul tipo di algoritmo da utilizzare varia in funzione dell’ambiente in
cui il robot deve muoversi. Tendenzialmente deve comunque essere una scelta

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

12.5. VINCOLI CINEMATICI E DINAMICI 85

fatta a monte, che non può quasi mai (allo stato attuale della conoscenza) essere
fatta in modo indipendente dal robot.

Figura 12.7: Confronto dei 3 algoritmi di sampling presentati.

E’ possibile combinare gli algoritmi. Ad esempio dato che il Brigde Test si


presta bene per generare minestones in spazi stretti mentre il campionamento
uniforme si presta bene a generare minestones in spazi aperti si può ottenere
una buona copertura nel complesso con un numero minimo di minestones. Il
problema potrebbe essere di quello di assegnare il giusto numero di milestones
ai due algoritmi.

Figura 12.8: Unione degli algoritmi bridge e uniforme.

12.5 Vincoli cinematici e dinamici


Nel motion planning è importate tenere in considerazione il legame tra vincoli
cinematici e dinamici. Ad esempio un’auto non è in grado di cambiare direzione
senza che vari la posizione.

12.5.1 Robot sottoattuati


Si parla di robot sottoattuati quando si ha un numero di parametri di control-
lo inferiore alle dimensioni dello spazio delle configurazioni (detto anche robot
nonholomico). Ad esempio, se pensiamo ad un robot differential drive, si han-
no tre dimensioni dello spazio delle configurazioni mentre solo due parametri
di controllo (velocità dei due motori). E’ importante considerare questo tipo
di robot poichè essi hanno dei vincoli cinematici o vincoli nonholonomici che
impediscono di «collegare» in modo semplice due configurazioni diverse.
Il modo in cui può essere fatto il path planning per robot di questo tipo può
essere diverso:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

86 CAPITOLO 12. ROADMAP PROBABILISTICHE

• Planning a due fasi:


– Calcola il percorso privo di collisioni ignorando i vincoli nonholono-
mici (ovvero quelli cinematici).
– Trasforma questo percorso in un percorso nonholonomo.
Ad esempio il parcheggio ad S di un’automobile dati i vincoli cinematici
sullo sterzo delle ruote mostrato in figura 12.9.
Questa tecnica risulta efficiente ma è possibile solo se il robot è controlla-
bile, inoltre ha bisogno di un insieme di manovre adatte.

Figura 12.9: In questo esempio il planning a due fasi non sarebbe


possibile se il robot non fosse localmente controllabile (nel caso, ad
esempio, possa solo muoversi in avanti).

• Planning diretto:
– Costruisce un albero di milestones fino a che non è abbastanza vicino
all’obiettivo.
Non richiede che il robot sia controllabile e risulta più efficiente in spazi
ad alte dimensioni.
In entrambe le tecniche ogni volta che si genera una nuova configurazione bisogna
sempre verificare che questa nuova configurazione «target» per lo spostamento
corrente sia libera da ostacoli. Inoltre, dato che con le configurazioni generia-
mo anche dei parametri di controllo, bisogna tener conto non solo dei vincoli
cinematici ma anche dei vincoli dinamici:
• Accelerazione del robot massima.
• Coppia massima erogabile dai motori.
• ...

12.5.2 Controllo basato su campionamento


Il controllo basato su campioni consiste nel selezionare i milestones di una de-
terminata regione, scegliere un vettore di controllo (anche causale), e simulare
il movimento per una breve durata. E’ possibile cosi trovare la serie di comandi
che permetta al robot di effettuare il corretto movimento per raggiungere la
posizione target.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

12.5. VINCOLI CINEMATICI E DINAMICI 87

Figura 12.10: In questo esempio il robot parte nella posizione se-


gnata in azzuro. Tramite simulazione è in grado di trovare le con-
figurazioni (punti rossi) che lo portano nella configurazione target
in rosso.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

88 CAPITOLO 12. ROADMAP PROBABILISTICHE

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 13

Geometria nello spazio 3D

13.1 Introduzione
Un robot è una struttura meccanica articolata che si muove nello spazio. Biso-
gna però capire come esso si muove e rispetto a cosa si muove, oltre che sapere
dove sono e come sono composti altri elementi che si trovano nello spazio di
lavoro del robot. La posizione di un robot può essere data in modo assoluto, ri-
spetto ad un sistema di riferimento comune con altri oggetti, o in modo relativo,
ovvero si fornisce la posizione del robot relativamente al sistema di riferimento
dell’ambiente, e quella di tutti gli altri oggetti al sistema di riferimento proprio
del robot.

13.2 Traslazione
La traslazione è un movimento lungo uno o più assi. Supponiamo di avere un
sistema di riferimento e di conoscere le coordinate di un punto in questo sistema
di riferimento. Possiamo voler traslare il tutto, rispetto ad un altro sistema di
riferimento. Questa è la tipica situazione che si deve affrontare quando si ha
una telecamera e, quindi si vuole sapere dove si trova l’oggetto vero e proprio,
partendo da dove è posizionata la telecamera e da dove risulta l’oggetto per la
telecamera.

Figura 13.1: Esempio di traslazione.

89

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

90 CAPITOLO 13. GEOMETRIA NELLO SPAZIO 3D

Consideriamo il punto Q1 espresso in base al sistema di riferimento {x1 , y1 , z1 }


e cerchiamo di traslarlo con un vettore T = [a, b, c] ovvero di esprimerlo in base
al sistema di riferimento {x0 , y0 , z0 }. Allora si otterrà:
     
qx0 a qx1
 qy0  =  b  +  qy1 
qz0 c qz1
Indicando la matrice Tij , la matrice di traslazione della terna i rispetto alla terna
j. Allora possiamo in modo equivalente esprimere la traslazione come:

Q0 = T10 + Q1
o invertendo:

Q1 = T01 + Q0
con T01 = −T10

13.3 Rotazione
La rotazione è un movimento attorno ad uno o più assi. In questo capitolo la
rotazione viene definita in modo antiorario mentre la rotazione inversa in modo
orario.

13.3.1 Rotazione rispetto all’asse z


Supponiamo di avere un certo punto P (Px , Py ) con:


 Px = ρ · cos(θ)



Py = ρ · sin(θ)
q
ρ = Px2 + Py2


  

 P
θ = arctan Pxy

Figura 13.2: Esempio di rotazione attorno all’asse z uscente dal


foglio (altrimenti cosi disegnata la rotazione sarebbe oraria).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

13.3. ROTAZIONE 91

Ruotiamo questo punto attorno all’asse z di un angolo ϕ. Utilizzando le formule


di addizione di seno e coseno otteniamo quindi un nuovo punto Q(Qx , Qy ) con:


Qx = ρ · cos(θ + ϕ) = ρ · cos(θ) · cos(ϕ) − ρ · sin(θ) · sin(ϕ)


Qy = ρ · sin(θ + ϕ) = ρ · cos(θ) · sin(ϕ) + ρ · sin(θ) · cos(ϕ)
q

 ρ = Q2x + Q2y



α=θ+ϕ


 Qx = Px · cos(ϕ) − Py · sin(ϕ)


Qy = Px · sin(ϕ) + Py · cos(ϕ)
⇒ q

 ρ = Q2x + Q2y



α=θ+ϕ
Questi risultati possono riscritti tramite matrici Q = R·P (Q0 = R·P 0 ), dove Q
e P sono i vettori con le coordinate dei due punti e R è la matrice di rotazione:
     
Qx cosϕ −sinϕ P
= · x
Qy sinϕ cosϕ Py

Dato Q1 = P 0 possiamo esprimere tale rotazione anche nel seguente modo:

Q0 = R10 · Q1
o invertendo:

Q1 = R01 · Q0

13.3.2 Rotazione rispetto all’asse y


Supponiamo di avere un certo punto P (Px , Pz ) con:


 Px = ρsinθ

P = ρcosθ
z
p

 ρ = Px2 + Pz2


θ = arctan( PPxz )

Figura 13.3: Esempio di rotazione attorno all’asse y uscente dal


foglio (altrimenti cosi disegnata la rotazione sarebbe oraria).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

92 CAPITOLO 13. GEOMETRIA NELLO SPAZIO 3D

Ruotiamo questo punto attorno all’asse y di un angolo ϕ. Otteniamo quindi un


nuovo punto Q(Qx , Qz ) con:



 Qx = ρsin(θ + ϕ) = ρsinθcosϕ + ρcosθsinϕ = Px cosϕ + Pz sinϕ

Q = ρcos(θ + ϕ) = ρcosθcosϕ − ρsinθsinϕ = −P sinϕ + P cosϕ
z x z
p

 ρ = Q 2 + Q2


x z
α=θ+ϕ

Questi risultati possono riscritti tramite matrici:


     
Qx cosϕ sinϕ P
= · x
Qz −sinϕ cosϕ Pz

13.3.3 Rotazione rispetto all’asse x


Supponiamo di avere un certo punto P (Py , Pz ) con:

Py = ρcosθ



Pz = ρsinθ
q

 ρ = Py2 + Pz2


θ = arctan( Pz )
Py

Figura 13.4: Esempio di rotazione attorno all’asse x uscente dal


foglio (altrimenti cosi disegnata la rotazione sarebbe oraria).

Ruotiamo questo punto attorno all’asse x di un angolo ϕ. Otteniamo quindi un


nuovo punto Q(Qy , Qz ) con:


Qy = ρcos(θ + ϕ) = ρcosθcosϕ − ρsinθsinϕ = Py cosϕ − Pz sinϕ


Qz = ρsin(θ + ϕ) = ρsinθcosϕ + ρcosθsinϕ = Py sinϕ + Pz cosϕ
q

 ρ = Q2y + Q2z



α=θ+ϕ
Questi risultati possono riscritti tramite matrici:
     
Qy cosϕ −sinϕ P
= · y
Qz sinϕ cosϕ Pz

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

13.3. ROTAZIONE 93

13.3.4 Geometria delle rotazioni


La geometria delle rotazioni fornisce l’orientamento di una terna di coordinate
rispetto ad un’altra. Viene in questo modo rappresentata una trasformazione
di coordinate che mette in relazione le coordinate di un punto in due terne
differenti con origine in comune:

P = R · P′
La matrice di rotazione R gode della proprietà di ortogonalità, ovvero la matrice
di rotazione inversa è uguale alla sua trasposta. E’ possibile quindi ottenere
le coordinate del punto P ′ partendo da quelle del punto P , con la seguente
relazione:

P ′ = (R)−1 · P = RT · P
Il calcolo della matrice trasposta è molto più veloce di quella inversa, quindi si
tende a fare quella. Le rotazioni dirette attorno ai tre assi sono rappresentate
dalle seguenti matrici:
   
cosϕ −sinϕ 0 cosϕ 0 sinϕ
R(z) = sinϕ cosϕ 0 R(y) =  0 1 0 
0 0 1 −sinϕ 0 cosϕ
 
1 0 0
R(x) = 0 cosϕ −sinϕ
0 sinϕ cosϕ
in cui rispetto alle matrici a due dimensioni è stata aggiunta un ulteriore di-
mensione che permette di far rimanere inalterate le coordinate del punto appar-
tenente all’asse attorno a cui si ruota. Ad esempio la rotazione attorno all’asse
y a tre dimensioni risulta:
       
Qx cosϕ 0 sinϕ Px Px cosϕ + Pz sinϕ
 Qy  =  0 1 0  ·  Py  =  Py 
Qz −sinϕ 0 cosϕ Pz −Px sinϕ + Pz cosϕ
Da queste matrici, è possibile ottenere le matrici per le rotazioni inverse, sem-
plicemente facendo la trasposta:
   
cosϕ sinϕ 0 cosϕ 0 −sinϕ
RT (z) = −sinϕ cosϕ 0 RT (y) =  0 1 0 
0 0 1 sinϕ 0 cosϕ
 
1 0 0
RT (x) = 0 cosϕ sinϕ
0 −sinϕ cosϕ

13.3.5 Rotazioni successive rispetto alla terna corrente


Il primo modo di effettuare delle rotazioni successive è quello di basarsi sulla
terna corrente, ovvero ad ogni rotazione, la successiva prenderà come base di
partenza quella precedente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

94 CAPITOLO 13. GEOMETRIA NELLO SPAZIO 3D

Figura 13.5: Esempio di rotazione successive rispetto alla terna


corrente.

La composizione di rotazioni successive rispetto alla terna corrente si ottiene


per moltiplicazione da sinistra verso destra delle singole matrici di rotazione,
nell’ordine di rotazione:

R20 = R10 R21

13.3.6 Rotazioni successive rispetto ad una terna fissa


Il secondo modo di effettuare delle rotazioni successive è quello di basarsi su
di una terna fissa, ad esempio quella iniziale. Ad ogni rotazione, quindi, verrà
ruotato il sistema in base agli assi iniziali.

Figura 13.6: Esempio di rotazione successive fisse.

La composizione di rotazioni successive rispetto ad una terna fissa si ottiene


moltiplicando da destra verso sinistra le singole matrici di rotazione nell’ordine
delle rotazioni:

R20 = R21 R10


Possiamo infatti pensarla nel seguente modo:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

13.3. ROTAZIONE 95

1. Si ruota la terna 0 fino a sovrapporla con la 1: R10

2. Si riallinea la terna mobile con la 0: R01

3. Si effettua la rotazione R21 rispetto alla terna corrente.

4. Si compensa la rotazione del riallineamento, mediante la R10

Complessivamente :

R20 = R10 R01 R21 R10 = R21 R10

13.3.7 Sequenze di rotazioni


Esistono 12 possibili sequenze di rotazioni che variano in base all’ordine con cui
vengono fatte, e si dividono in due gruppi:

• Angoli di Eulero propri: (z − x − z, x − y − x, y − z − y, z − y − z, x −


z − x, y − x − y)

• Angoli di Tait-Bryan: (x − y − z, y − z − x, z − x − y, x − z − y, z −
y − x, y − x − z)

Si può notare che gli angoli di Tait-Bryan ruotano intorno a tutti i 3 assi della
terna rispetto agli angoli di Eulero propri. I due gruppi possono essere chiamati
con il nome generale di angoli di Eulero.

13.3.8 Angoli di Yaw/Pitch/Roll


Sono una tipo di possibile rotazione del gruppo Tait-Bryan definiti dal seguente
ordine rispetto agli assi della terna fissa:

• Yaw (Imbardata): attorno all’asse x.

• Pitch (Beccheggio): attorno all’asse y.

• Roll (Rollio): attorno all’asse z.

Tale rappresentazione viene spesso utilizzata in aeronautica, in cui il sistema di


riferimento rimane sempre solidale al centro dell’aeromobile.

Figura 13.7: Terna di origine nella rotazione RPY.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

96 CAPITOLO 13. GEOMETRIA NELLO SPAZIO 3D

Rispetto ad una terna fissa la rotazione globale viene rappresentata tramite


matrici nel seguente modo:

RRP Y = Rz Ry Rx

13.3.9 Angoli di Eulero I e II


Un ulteriore metodo di rappresentazione per le rotazioni è l’utilizzo degli angoli
di Eulero I e II, rispetto alla terna corrente:
• Eulero I: R10 = Rz Rx′ Rz′′
• Eulero II: R10 = Rz Ry′ Rz′′
In generale tutti gli angoli di Eulero soffrono del Gimbal Lock una condizione
particolare per la quale si perde un grado di libertà (si perde la possibilità di
fare una rotazione attorno ad un asse). Ad esempio supponiamo di avere la
terna ϕ, θ e ψ, e di utilizzare il metodo di Eulero II che ha la seguente matrice
globale:

 
cosϕcosθcosψ − sinϕsinψ −cosϕcosθsinψ − sinϕcosψ cosϕsinθ
R10 = sinϕcosθcosψ + cosϕsinψ −sinϕcosθsinψ + cosϕcosψ sinϕsinθ
−sinθcosψ sinθsinψ cosθ
per θ = 0 risulta:
 
cosϕcosψ − sinϕsinψ −cosϕsinψ − sinϕcosψ 0
R10 = sinϕcosψ + cosϕsinψ −sinϕsinψ + cosϕcosψ 0
0 0 1
Quindi per qualsiasi valore si assegna ad α e ϕ l’asse di rotazione rimane sempre
lo stesso (asse z), quindi con due angoli riesco a ruotare attorno ad un solo asse
perdendo cosi un grado di libertà. In altre parole si possono avere due terne
che portano allo stesso orientamento (90◦ , 0◦ , 0◦ ) e (0◦ , 0◦ , 90◦ ) di conseguenza
dalle coordinate dei punti non è possibile sapere con certezza le rotazioni che
sono state effettuate (ambiguità nel problema inverso).

13.4 Rototraslazione
E’ possibile combinare le trasformazioni di traslazione e di rotazione, ovvero
traslare un punto e ruotarne il sistema di riferimento. L’operazione di ro-
totraslazione può essere ottenuta tramite composizione delle due operazioni
con:
• Matrice di rotazione R.
• Vettore di traslazione T.
oppure tramite un’unica operazione:
   
qx1   qx0
 qy1  T  qy0 
 = R · 
 qz1  0 1  qz0 
1 1

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

13.4. ROTOTRASLAZIONE 97

La matrice che permette di effettuare rototraslazione viene detta matrice di


trasformazione omogenea (o matrice di rototraslazione) e non gode della
proprietà di ortogonalità. Il valore 1 sulla seconda riga di questa matrice viene
detto valore di scala: può anche avere un valore diverso, ad esempio quando
si lavora con delle telecamere che hanno la caratteristica di ingrandire oggetti
vicini e rimpicciolire quelli lontani.
Combinando opportunamente le matrici R e T è possibile realizzare qualsiasi
operazione. Ad esempio traslazione lungo asse z, di una certa quantità h con
       
  qx1 1 0 0 0 qx0 qx0
0  qy1  0 1 0 0   qy0   qy0 
R = I, T =  0  ⇒       
 qz1  = 0 0 1 h ·  qz0  = qz0 + h

h
1 0 0 0 1 1 1

13.4.1 Composizione di rototraslazioni


Nella composizione delle matrici di rototraslazione bisogna prestare attenzione
a come vengono effettuate le trasformazioni, se rispetto ad una terna fissa o
corrente. Ad esempio supponiamo di eseguire le seguenti trasformazioni rispetto
alla terna fissa (moltiplicazione da destra a sinistra):
• Rotazione di α attorno all’asse x.
• Traslazione di a lungo l’asse x.
• Traslazione di d lungo l’asse z.
• Rotazione di θ attorno all’asse z.
La matrice di rototraslazione finale risulterà:
   
cos(θ) −sin(θ) 0 0 1 0 0 0
sin(θ) cos(θ) 0 0 0 1 0 0
H = Rz,θ · Tz,d · Tx,a · Rx,α =  0
· ·
0 1 0 0 0 1 d
0 0 0 1 0 0 0 1
   
1 0 0 a 1 0 0 0
0 1 0 0 0 cos(α) −sin(α) 0
·
0
· 
0 1 0 0 sin(α) cos(α) 0
0 0 0 1 0 0 0 1
Da notare che diverse composizioni tra matrici di rototraslazione possono dare
il medesimo risultato.

Figura 13.8: E’ possibile ottenere la stessa trasformazioni finale


componendo matrici di rototraslazioni diverse.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

98 CAPITOLO 13. GEOMETRIA NELLO SPAZIO 3D

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 14

Telecamere per la visione


artificiale

14.1 Introduzione
Le immagini possono essere rappresentate come una matrice pxq dove ogni cella
(o pixel). Nelle immagini monocromatiche ogni cella corrisponde ad un bit che
vale 0 per il nero o 1 per il bianco. Nelle immagini in scala di grigio invece
ogni cella contiene un valore a 8 bit (0-255) che indica l’intensità del grigio. In
generale più il numero di bit è elevato più l’informazione riportata dall’immagine
è precisa.

Figura 14.1: Esempio di rappresentazione in matrice di


un’immagine in scala di grigi.

Nelle immagini in formato RGB l’immagine è costituita da tre matrici, una per
ogni colore fondamentale.

14.2 Telecamera
Nelle telecamere digitali il sensore acquisisce solo una scala di grigi e i colori
vengono generati tramite filtri (Figura 14.2).
La scelta della telecamera dipende dal tipo di problema da risolvere. Esistono
infatti diverse telecamere distinguibili da alcuni parametri come:

99

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

100 CAPITOLO 14. TELECAMERE PER LA VISIONE ARTIFICIALE

• Dimensioni del campo visivo.

• Risoluzione dell’immagine.

• Lunghezza focale della lente.

che sono influenzati da:

• Dimensioni e posizione dell’oggetto da riprendere.

• Dimensioni e posizione dei particolari dell’oggetto interessanti.

• Tolleranze sull’errore di misura.

Figura 14.2: Filtraggio dei colori fondamentali per la rappresenta-


zione colorata di un immagine.

14.2.1 Campo visivo


Il campo visivo indica l’area della parte di una scena che può essere cattura-
ta da una telecamera e può essere calcolata verticalmente, orizzontalmente e
diagonalmente (HFOV, VFOV, DFOV).

Figura 14.3: Rappresemtazione del campo visivo.

Il campo visivo può essere calcolato tramite la seguente formula:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

14.2. TELECAMERA 101

F OV = (Dp + Lv )(1 + Pa )

dove:

• Dp : dimensione (orizzontale, verticale o diagonale) massima dell’oggetto


da riprendere.

• Lv : variazione (orizzontale, verticale o diagonale) massima di posizione e


orientamento dell’oggetto da riprendere.

• Pa : tolleranza di posizionamento della telecamera. Questa tolleranza ser-


ve per evitare che gli oggetti si trovino sul bordo del campo visivo, dove
la qualità della telecamera risulta ridotta. Una scelta tipica è quella del
10%.

14.2.2 Risoluzione
Esistono diversi tipi di risoluzione:

• Image resolution (Ri ): definisce il numero di pixel che compongono


un’immagine ed è espressa in numero di colonne per numero di righe (es
640x480).

• Spatial resolution (Rs ): definisce la distanza fra il centro di due pixel


facendo riferimento alla scena reale, generalmente definito in cm/pixel.
Esso è inoltre legato alla risoluzione dell’immagine e alla dimensione del
campo visivo secondo la formula seguente:

F OV
Rs =
Ri

• Image resolution (Rf ): è la dimensione minima che un particolare deve


avere per poter essere rilevato con affidabilità. Esso si misura in cm e
viene definito come:

Rf = Rs · Fp

Dove Fp è il numero minimo di pixel che compongono un particolare rile-


vabile. Generalmente viene considerato un minimo di 3-4 pixel per tener
conto del rumore e basso contrasto.

• Pixel resolution (Rp ): definisce il numero di valori differenti che un pixel


può assumere, ovvero il numero di intervalli in cui una scala di grigi o di
colori viene discretizzata (quantizzazione). La scala di grigi tipicamente
utilizza 8 bit mentre quando si utilizzano i tre colori vengono utilizzati 8
bit per ogni colore (giallo, magenta e ciano).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

102 CAPITOLO 14. TELECAMERE PER LA VISIONE ARTIFICIALE

14.2.3 Modello pinhole


Il modello pinhole, su cui è basata la telecamera, si basa sulla riflessione/emissio-
ne di luce da parte dell’oggetto che passa attraverso un forellino di un’ipotetica
«camera oscura» e si proietta sul piano immagine.

Figura 14.4: Rappresemtazione del modello pinhole.

La distanza tra il forellino e il piano immagine prende il nome di distanza focale


f . A parità di sensore di acquisizione, diminuendo questa distanza focale sul
sensore viene proiettato un angolo più ampio della scena osservata.

Figura 14.5: La distanza focale incide sull’ampiezza dell’angolo di


visione.

Normalmente vengono utilizzate delle lenti per focalizzare meglio i raggi e per
raccogliere più energia, in modo da formare immagini più luminose.

Figura 14.6: Esempio di utilità delle lenti.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

14.3. CALIBRAZIONE DELLA TELECAMERA 103

14.2.4 Distanza Focale


Immaginiamo una situazione teorica in cui la lente sia colpita da raggi di luce
perfettamente paralleli. Attraversando la lente i raggi di luce vengono deviati e
convergono in un punto la cui posizione dipende strettamente dalla curvatura
della lente. Questo punto viene definito punto focale, mentre la distanza tra
lente e punto focale prende il nome di distanza focale.

Figura 14.7: Esempio di utilità delle lenti.

La condizione di raggi paralleli si riferisce alla messa a fuoco dell’infinito, ed è


stata decisa apposta per fornire un valore di focale comune a tutte le lenti che
consenta di paragonarle. Nella realtà i raggi di luce degli oggetti da riprende-
re non perverranno quasi mai paralleli sulla lente e questo renderà necessario
mettere a fuoco l’obiettivo in quanto il punto focale sarà variabile. La focale
è il principale parametro di classificazione degli obiettivi in quanto influenza
direttamente l’angolo di vista da essi consentito. Come si è già detto infatti a
parità di dimensione del sensore più la focale è bassa, più l’obiettivo consentirà
un angolo di vista maggiore.
La posizione del punto focale si trova ad una distanza dalla lente pari alla focale
della lente stessa, ma solo se i raggi di luce giungono perfettamente paralleli
sull’obiettivo. In questa condizione, siamo certi che se vogliamo mettere a fuoco
un obiettivo da 4 mm basta posizionare il CCD a 4 mm di distanza dalla lente.
Però gli unici oggetti in grado di riflettere raggi di luce paralleli sono lontanis-
simi. Tutto ciò che si trova più vicino dell’infinito, riflette invece raggi di luce
che giungono sulla lente con angoli di incidenza assai vari. Per questa luce, e
quindi per questi oggetti, il punto focale non si trova più in corrispondenza del-
la focale caratteristica dell’obiettivo ma altrove. L’operazione di messa a fuoco
dell’obiettivo consiste proprio nello spostare avanti o indietro l’obiettivo fino a
portare il CCD in corrispondenza del punto focale che corrisponde al soggetto
o all’area che ci interessa.

14.3 Calibrazione della telecamera


Una volta scelta la lente, in base alle caratteristiche viste, è importante tenere
in considerazione che ognuna è unica a causa del loro processo di produzione
che non rende possibile la realizzazione di lenti perfettamente uguali. Al primo
utilizzo è necessario quindi eseguire delle prove sperimentali per determinare le
caratteristiche tecniche reali della telecamera che possono appunto essere diffe-
renti dalle caratteristiche presenti sulla scheda tecnica. Per far ciò esistono delle
opportune procedure di calibrazione. Date le informazioni a priori (es. distanza
focale) si sceglie un oggetto opportuno, solitamente l’immagine di una scacchie-

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

104 CAPITOLO 14. TELECAMERE PER LA VISIONE ARTIFICIALE

ra di cui si conoscono le dimensioni reali. Dall’immagine scattata, tramite un


confronto con le sue dimensioni reali è possibile determinare le caratteristiche
reali di una lente.

14.3.1 Proiezione prospettica


Dato un punto nello spazio 3D di coordinate M = (x, y, z), espresse rispetto al
sistema di riferimento solidale con la telecamera, si può individuare le coordinate
sul piano immagine m = (u, v) tramite le equazioni (in riferimento alla Figura
14.8):

u = fz x v = fz y

Figura 14.8: Esempio di utilità delle lenti.

Quindi le coordinate del punto immagine vengono legate alle coordinate del
punto reale tramite la distanza focale. Dall’immagine non è possibile ricavare la
distanza tra il punto reale e il piano immagine infatti tutti i punti appartenenti
alla stessa retta vengono proiettati sul piano immagine con le stesse coordinate
causando ambiguità.

14.3.2 Spazio proiettivo


Le coordinate di un punto nel piano immagine corrisponde ad una retta di punti
nello spazio tridimensionale. Si rappresentano le coordinate reali con un vettore
composto da 4 elementi dove il quarto parametro rappresenta la molteplicità
dei punti reali che corrispondo ad un solo punto nel piano immagine.

(x, y, z) → (kx, ky, kz, k)


Questa rappresentazione viene detta in coordinate omogenee e lo spazio ot-
tenuto viene detto spazio proiettivo. Esprimendo in coordinate omogenee i
punti m e M , in forma vettoriale, le loro rappresentazioni diventano:
 
  x
u y 
m̃ = v  M̃ = 
z 

1
1

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

14.3. CALIBRAZIONE DELLA TELECAMERA 105

In coordinate omogenee la proiezione prospettica divine una trasformazione


lineare:
 
   x     x
u fz fx f 0 0 0  
 v  =  f y  =  f y   0 f 0 0 ·  y 
z z 
1 1 z 0 0 1 0
1
Usando la notazione matriciale:

k · m̃ = P̃ · M̃
dove con P̃ si rappresenta il modello geometrico della telecamera e viene det-
ta matrice di proiezione prospettica(PPM). Per rendere più realistico il
modello è necessario tenere conto della:

• Digitalizzazione dell’immagine.

• Rototraslazione tra la telecamera e la scena.


• Distorsione della lente.

14.3.3 Digitalizzazione
Un punto tridimensionale viene espresso nel piano immagine tramite un pixel
con una certa dimensione e non tramite un punto. E’ necessario quindi tene-
re in considerazione la risoluzione della telecamera inserendo nelle formule di
proiezione lo scaling lungo i due assi:
1 f
u= x
∆u z
1 f
u= y
∆v z
Dove ∆u e ∆v sono rispettivamente la dimensione orizzontale del pixel e la
dimensione verticale del pixel (caso generale di pixel rettangolari).
La matrice che modella le caratteristiche del sensore è detta matrice dei para-
metri intrinseci A cioè i parametri che rappresentano le caratteristiche della
lente che bisogna stimare nella fase di calibrazione.

14.3.4 Trasformazione tra sistemi di riferimento


Viene utilizzata la matrice di rototraslazione G definita da parametri estrinseci
dipendenti dalla posizione della telecamera. Tale matrice viene appunto detta
matrice dei parametri estrinseci.

14.3.5 Distorsione della lente


In sistemi di acquisizione reali esistono anche effetti dovuti alle distorsioni in-
trodotte dalle lenti. La deviazione più importante è dovuta a fenomeni di di-
storsione radiale causata dalla curvatura delle lenti che provoca distorsione
sopratutto ai bordi.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

106 CAPITOLO 14. TELECAMERE PER LA VISIONE ARTIFICIALE

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 15

Visual Place Recognition

15.1 Segnaletica orizzontale


Il primo modo con cui un robot può orientarsi, utilizzando metodi visivi, è
sicuramente quello di avere un certo tipo di segnaletica orizzontale. Un primo
esempio di segnaletica orizzontale per robot può essere quello dei marcatori
posizionati sul terreno. Particolari tipi di marcatori come quelli rappresentati
in Figura 15.1 possono essere decodificati tramite la libreria ARToolkit.

Figura 15.1: Esempio di marcatori artificiali.

15.2 Appearance-Based Localization


Questa tecnica di localizzazione permette al robot di capire, tramite confronto
con zone note, di riconoscere zone in cui è già passato. In base al risultato del
confronto tra i posti noti ed il posto attuale, il robot classifica il posto in cui si
trova in:
• Posto visitato.
• Posto nuovo.
Questa tecnica ha una complicazione dovuta al fatto che potrebbero esserci più
posti molto simili tra di loro. Per utilizzare questa tecnica si ricorre ad una
scene recognition ovvero vengono cercati degli elementi noti all’interno della
scena attualmente osservata dal robot. Per far ciò, viene assegnato al robot un
set di «parole visuali» che rappresentano le features di determinate immagini

107

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

108 CAPITOLO 15. VISUAL PLACE RECOGNITION

Figura 15.2: Scomposizione di un immagine in feactures.

In questo modo costruisce un dizionario di codewords che utilizza per rap-


presentare le immagini con istogrammi, in cui ad ogni parola visuale assegna la
frequenza con cui tale parola visuale si presenta nell’immagine.

Figura 15.3: Esempio di rappresentazione di un immagine con un


istogramma.

Una tecnica di questo tipo può essere utilizzata, oltre che per la localizzazione
di un robot, anche per classificazioni di oggetti in un immagine. La appaerance-
based localization è una tecnica molto «resistente» alle deformazioni ma ha,
come principale limite, il fatto che richiede di costruire un vocabolario, ovvero
l’insieme delle codewords che non deve essere nè troppo ricco (pena l’over-fitting)
né troppo piccolo (pena la non rappresentatività). Per sfruttare al meglio le
informazioni disponibili si può osservare che molto spesso le codewords che si
possono individuare in un’immagine non sono indipendenti ma sono tra di loro
strettamente correlate.

Figura 15.4: Nelle finestre è possibile che la codeword presa dal


bordo sia correlata con la codeword presa sulle cornici interne.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

15.3. OPENFABMAP 109

15.3 OpenFabMap
OpenFabMap è una libreria in grado di implementare la appaerance-based loca-
lization. Questa libreria sfrutta la cosiddetta matrice di confusione, ovvero
una matrice che per ogni feature (o codeword) dice se essa è contenuta nel
dizionario.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

110 CAPITOLO 15. VISUAL PLACE RECOGNITION

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 16

Elaborazioni delle immagini

16.1 Introduzione
In ambito visione artificiale l’elaborazione delle immagini può avvenire su 3
livelli:

• Basso livello: si occupa di elaborare le immagini esaltandone particolari


caratteristiche (es. contorni), filtrando il rumore, combinando gruppi di
immagine ed eliminando le rindondanze.

• Medio livello: si occupa di analizzare le immagini etichettando gli oggetti


ed estrando le primitive.

• Alto livello: si occupa di comprendere le immagini ad esempio eseguendo


operazioni di clustering.

16.2 Elaborazioni puntuali


Le elaborazioni puntuali si applicano ad ogni pixel dell’immagine senza con-
siderare interazioni e dipendenze tra pixel vicini, e sono definite in funzione
dell’intensità del pixel.

16.2.1 Contrasto
Il contrasto è definito come:

Imax − Imin
Contrasto =
Imax + Imin
dove Imax e Imin sono rispettivamente intensità massima e minima. Più il
contrasto è alto e più sono rilevanti i dettagli dell’immagine. E’ una percezione
solo dell’occhio umano in quanto il quantitativo informativo non cambia.

16.2.2 Operazioni di soglia


L’operazione di soglia è un operazione molto importante e spesso critica che
consiste nella binarizzazione di un’immagine.

111

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

112 CAPITOLO 16. ELABORAZIONI DELLE IMMAGINI

Figura 16.1: Esempio di binarizzazione.

16.2.3 Istogramma
L’ istogramma di un’immagine a livelli di grigio è un vettore con un numero di
elementi pari al numero dei livelli di grigio, dove il valore di ciascun elemento è
dato dal numero di pixel dell’immagine che assumono quello specifico livello di
grigio. L’istogramma fornisce informazioni utili per varie operazioni, tra cui il
miglioramento del contrasto e la binarizzazione tramite soglia. Inoltre poiché in
generale diversi oggetti hanno livelli di grigio diversi, l’istogramma fornisce un
primo semplicissimo metodo di classificazione.

16.2.4 Contrast stretching


E’ un’operazione che espande i livelli di grigio modificando in modo dinamico
l’istogramma.

Figura 16.2: Esempio di contrast stretching.

16.3 Equalizzazione
L’equalizzazione dell’istogramma è l’elaborazione che idealmente produce un’im-
magine con istogramma uniformemente distribuito su tutti i livelli di grigio
aumentando i contrasti vicino ai massimi e diminuendoli vicino ai minimi.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

16.3. EQUALIZZAZIONE 113

Figura 16.3: Esempio di equalizzazione.

Considerando l’istogramma come la distribuzione di probabilità dei livelli di


grigio, i passi da eseguire sono i seguenti:

1. Si calcola l’istogramma cumulativo.

2. Si dividono i valori ottenuti al passo 1 per il numero di pixel.

3. Si moltiplicano i valori ottenuti al passo 2 per il massimo livello di grigio


e si arrotonda.

4. Si mappano i livelli di grigio originali sui valori ottenuti al passo 3 con una
corrispondenza 1 a 1.

Figura 16.4: Confronto tra equalizzazione e stretching.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

114 CAPITOLO 16. ELABORAZIONI DELLE IMMAGINI

16.4 Elaborazioni locali


Le elaborazioni locali si applicano ad ogni pixel dell’immagine ma a differen-
za delle elaborazioni puntuali si tengono in considerazione le iterazioni e le
dipendenze con i pixel di vicini di un opportuno intorno.

16.4.1 Rumore
Il rumore nelle immagini puo’ essere generato in qualsiasi punto della catena del
segnale:
• Rumore gaussiano (termico).
• Speckle noise (elettrico): il rumore e’ proporzionale (correlato) all’im-
magine “sottostante”.
• Rumore “salt&pepper”: pixel “difettosi” nella camera, transienti ano-
mali.

Figura 16.5: Confronto tra vari tipi di rumore.

16.4.2 Convoluzione
La convoluzione è un’operazione con cui, presa una limitata matrice di pixel,
la moltiplica, cella per cella, per una matrice kernel. Il risultato ottenuto viene
poi assegnato al pixel centrale della matrice.

Figura 16.6: Convoluzione di una sezione dell’immagine.

Ripetendo questo operazione per tutti i pixel si ottiene la convoluzione dell’in-


tera immagine. Ad esempio se la matrice kernel ha tutte le celle pari a 0 con
eccezione di quella centrale, la convoluzione non apporterà nessun cambiamento
all’immagine. Se invece l’unica cella posta a 1 risulta quella centrale più a sini-
stra l’effento che si ottiene dopo la convoluzione è che l’immagine sarà shiftata
a sinistra di un pixel.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

16.4. ELABORAZIONI LOCALI 115

In base a come viene costruita la matrice kernel si possono ottenere diverse tipi
di convoluzione:

• Convoluzione Smoothing: possiamo distinguere principalmente due


casi:

– matrice kernel con somma dei pesi uguale ad 1: in questo caso la


lumonità globale dell’immagine non cambia. Il filtro uniforma i valori
nell’intorno riducendo quindi le variazioni (filtro passa-basso).

Figura 16.7: Fltro passa-basso.

– matrice kernel con somma dei pesi uguale a 0: in questo caso si


ottiene la soppressione della componente continua dell’immagine. Il
filtro non azzera i punti dove si hanno variazioni (filtro passa-alto).

Figura 16.8: Filtro passa-alto.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

116 CAPITOLO 16. ELABORAZIONI DELLE IMMAGINI

• Filtro Mediano: sostituisce ogni pixel al valore mediano dei pixel nel-
l’intorno. L’effetto è quello di forzare i pixel ad assumere un valore uguale
a quello di uno dei pixel circostanti, eliminando evetuali spike isolati, cioè
la forma con cui di solito si manifesta il rumore.

Figura 16.9: Filtro mediano.

• Convolizione sharpening: i filtri sharpening sono complementari ai


filtri di smoothing e sono utilizzati per aumentare il contrasto locale del-
l’immagine, in modo da arricchire i dettagli fini o per evidenziare i contorni
degli oggetti. Cosi facendo possono però provocare l’aumento del rumore
nell’immagine. Per accrescere le differenze tra i pixel vicini, la matrice
deve avere il peso centrale di segno opposto a quelli periferici. La somma
dei pesi anche in questo caso deve essere pari a 1 per evitare variazioni di
luminosità.

Figura 16.10: Maggiore è il valore della cella centrale, maggiore


sarà l’evidenza dei dettagli con un aumento però del rischio di
rumore.

• Convoluzione High-boost: è un filtro che enfatizza le alte frequenze che


dipende dal fattore moltiplicativo A ≥ 1 che influenza il valore centrale
della matrice kernel w = 9A − 1, mentre le restanti celle sono poste a -1.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

16.5. RILEVAMENTO DEI BORDI 117

Figura 16.11: Esempio di convoluzione high-boost con diversi valori


di A.

Grazie allo svlippo hardware dedicato, oggi è possibile applicare la convoluzione


a velocità video.

16.5 Rilevamento dei bordi


I bordi sono luoghi dell’immagine con forte contrasto di intesità. Poichè i bordi
spesso si presentano nelle posizioni delle immagini che rappresentano i confini
degli oggetti, il rilevamento dei bordi viene ampiamente utilizzato nella segmen-
tazione delle immagini quando si desidera dividere l’immagine in aree corrispon-
denti a oggetti diversi. Poichè i bordi consistono principalmente di alte frequen-
ze possiamo in teoria applicare un filtro passa-alto per rilevarli applicando la
convoluzione con un kernel appropriato. Nella pratica però il rilevamento dei
bordi avviene nel dominio spaziale poichè è computazionalmente meno costoso
e spesso produce migliori risultati.
Per rilevare i bordi è necessario eseguire 3 step:
• Riduzione del rumore: dove si cerca di sopprimere quanto più possibile
il rumore senza appianare i bordi significativi.
• Ottimizzazione del bordo: dove vengono applicati filtri che rafforzino i
bordi intaccando il meno possibile le zone restanti dell’immagine, in modo
che essi possano essere identificati come dei massimi locali.
• Localizzazione del bordo: in cui si decide quali massimi locali sono
bordi significativi e quali invece sono causati dal rumore.
I bordi sono un luogo dell’immagine in cui avviene un rapido cambiamento della
funzione intensità.

Figura 16.12: Esempio di variazione della funzione di luminosità


in prossimità dei bordi.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

118 CAPITOLO 16. ELABORAZIONI DELLE IMMAGINI

Un’immagine può essere rapresentata come una superficie con altezza corrispon-
dente al valore di livello di grigio dove la funzione di luminosità dipende dalle
coordinate nel piano:

(valore di livello del grigio) z = f (x, y)

I bordi cosi possono essere rilevati nei pixel in cui la luminosità cambia im-
provvisamente. Con questa struttura possiamo descrivere i cambiamenti della
funzione z usando le derivate. Più precisamente, dato che z dipende da due
coordinate, gli operatori che descrivono i bordi vengono espressi utilizzando le
derivate parziali. Possiamo cosi definire il il gradiente di un immagine:
 
df df
∇f = ,
dx dy
che indica la direzione in cui l’intesità cresce pù rapidamente. La direzione del
gradiente viene definita come:
 
df df
θ = tan−1 ,
dx dy
mentre la grandezza del gradiente definisce la «forza» del bordo:
s 2  2
df df
||∇f || = +
dx dy

Figura 16.13: Esempi di gradienti immagine.

16.6 Hough trasformation


Dopo aver rilevato i bordi in un’immagine può essere utile rilevarne la forma
che tali bordi realizzano. L’Hough trasformation permette di rilevare le linee in
un’immagine. Per far ciò viene definito uno spazio dei parametri. Per ogni
punto del piano immagine si applica l’equazione della retta:

y =m·x+b

Ogni coppia (m, b) quindi definisce una differente linea retta contenente il punto
(x, y). Ogni punto del piano immagine (x, y) viene mappato attraverso una linea
retta (m, b) nello spazio dei parametri mentre ogni linea retta nel piano imma-
gine viene mappata tramite il punto di intersezione delle linee coorrispondenti
ai suoi punti, nello spazio dei parametri.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

16.6. HOUGH TRASFORMATION 119

Figura 16.14: Esempio di passaggio tra piano immagine a piano


dei parametri.

Quindi una linea formata da M pixel nello spazio delle immagini verrà mappata
come un punto di intersezione di M linee nello spazio dei parametri dove ogni
linea corrisponde ad un pixel nello spazio delle immagini. Il numero di linee
che si intersecano in un singolo punto nello spazio dei parametri rappresenta
la lunghezza della linea originale nello spazio immagine. Una volta eseguita
questa mappatura si divide lo spazio dei parametri in celle. Ogni cella è definita
dalle coordinate (m, b) e contiene il numero di pixel che nello spazio immagine
appartengono alla retta descritta dai coefficienti (m.b).

Figura 16.15: Rappresentazione dello spazio dei parametri


suddiviso in celle.

E’ possibile usare anche le coordinate polari, rappresentato in punti con i para-


metri r e θ applicando l’equazione:

r = x · cos(θ) + y · sin(θ)

L’utilizzo delle coordinate polari presenta il vantaggio di poter mappare linee


verticali (m = ∞):

x = r · cos0 + r · sin0 = r
.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

120 CAPITOLO 16. ELABORAZIONI DELLE IMMAGINI

L’Hough transform infatti usa le coordinate polari mappando quindi ogni punto
nel piano immagine con una sinusoide nello spazio dei parametri (r, θ). Le
sinusoidi dei punti che appartengono ad una stessa retta nello spazio (x, y) si
intersecano in un punto comune nello spazio (r, θ).

Figura 16.16: Rappresentazione dello spazio dei parametri


suddiviso in celle tramite le coordinate polari.

Anche in questo caso lo spazio dei parametri è suddiviso in celle con coordinate
(r, θ). La cella contenente il valore più alto fornisce i parametri (r, θ) della retta
individuata nell’immagine originale. Il numero di celle considerate, fornirà il
numero di rette che verranno disegnate.

Figura 16.17: In esempio questo sono state scelte le 4 celle con


valore più alto, di conseguenza sono state rilevate 4 linee.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 17

Line Following

17.1 Introduzione
Uno scenario tipico in cui si ha un line following è l’implementazione di vei-
coli con guida autonoma, che devono rimanere all’interno della loro corsia e
quindi devono continuare a seguire e strisce. In una situazione di questo tipo,
generalmente, si ha una telecamera che acquisisce le immagini che verranno poi
elaborate da un task indipendente in modo da capire quale traiettoria coprire
per seguire la linea.

17.2 Legge di controllo


La tipica legge di controllo per un robot line following si basa sull’analisi di
dove la linea da seguire incrocia la parte bassa dell’immagine acquisita dalla
telecamera.

Figura 17.1: Rappresentazione del problema di segui linea.

121

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

122 CAPITOLO 17. LINE FOLLOWING

Figura 17.2: Alcune situazioni di come il robot potrebbe vedere la


linea.

In Figura 17.2 abbiamo diversi esempi:

• Situazione e. Il robot è fuori strada e sta andando verso la riga.


• Situazione f. Il robot sta andando fuori strada.
• Situazione g. Il robot sta seguendo la linea correttamente.

La legge di controllo dovrà definire delle operazioni da compiere, in ogni caso, per
cercare di portarsi nella posizione g. Per far ciò il robot dispone di due controllori
usati singolarmente: il controllore di riga e di colonna. Considerando ancora la
Figura 17.2, nel caso partissimo dalla situazione "a", il controllore di riga dovrà
essere usato per guidare il cerchio rosso affinchè si porti nella situazioine "b". A
questo punto il controllore usato è quello di colonna per portare il cerchio rosso
verso la configurazione "e", e cosi via.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 18

Mapping 3D

18.1 Introduzione
Le mappe 3D possono assumere forme diverse a seconda di come esse vengono
costruite:
• Nuvola di punti: è un insieme di vertici posti in un sistema di riferi-
mento tridimensionale. Ogni punto, quindi, è espresso con tre coordinate
(x, y, z) e l’insieme di questi punti rappresenta un sottoinsieme dei punti
appartenenti alla superficie di un oggetto. Spesso, oltre all’informazione
sulla posizione, può essere memorizzata anche l’informazione sul colore o
sul livello del grigio.
• Mappa di elevazione: viene rappresentata la distribuzione delle quote
dell’immagine.
• Mappa di superficie multilivello: rappresenta strutture verticali del-
l’immagine su più livelli.
• Mappa di occupazione: insieme di punti che rappresentano la presenza
di uno stacolo.

Figura 18.1: Esempi di diverse tipologie di mappe 3D.

123

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

124 CAPITOLO 18. MAPPING 3D

18.2 Scanner 3D
Uno Scanner 3D acquisisce informazioni relative alla distanza degli oggetti pre-
senti nel suo campo visivo. Per ogni punto rilevato fornisce informazioni in
coordinate sferiche che possono essere convertite in coordinate cartesiane:
 p 
 2 2 2 
r = x + y + z x = r · sin(θ)cos(ϕ)
θ = arcos zr → y = r · sin(θ)sin(ϕ)

 y
 

ϕ = arctan x z = r · cos(θ)

18.2.1 Flight scanner


Uno scanner di questo tipo è quindi un sensore attivo che si basa su di un
time-of-flight rangefinder: viene emesso un raggio luminoso e viene calcolata la
distanza in base al tempo che il raggio riflesso impiega per tornare all’origine.
Quindi, nota la velocità del raggio c, la distanza può essere calcolata come:
c·t
d=
2
Il raggio laser impiegato per la misurazione sequenziale può, per spostare il
punto da misurare, essere mosso oppure direzionato in maniera diversa tramite
una serie di specchi mobili. In generale vengono misurati dai 10000 ai 100000
punti al secondo, anche che si trovano a qualche km di distanza.

18.2.2 Scanner basati su triangolazione


Gli scanner basati su triangolazione utilizzano un laser che illumina l’oggetto ed
una telecamera in grado di riprendere il punto in cui il laser colpisce l’oggetto.
Essendo noti:
• La distanza tra il laser e la telecamera.
• L’angolo d’inclinazione del laser.
l’angolo della camera può essere calcolato sfruttando la posizione del punto
ripreso nel campo visivo. Triangolando, è possibile calcolare tutte le misure del
triangolo, e quindi la posizione del punto illuminato.

Figura 18.2: Principio di triangolazione dello structured light


scanner.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

18.3. VISIONE STEREOSCOPICA 125

18.2.3 Structured light scanner


Il structured light scanner (come xBox Kinect) è un sensore di tipo attivo in
cui un proiettore luminoso emette un fascio di luce con un particolare pattern,
mentre una telecamera riprende l’oggetto. Il sensore lavora con 2 pattern:

• Pattern 1D: La linea che viene proiettata si deforma in base alla su-
perficie dell’oggetto. Attraverso la linea distorta ripresa dalla camera è
possibile triangolare e calcolare la posizione dei punti.

• Pattern 2D: Viene utilizzata una griglia.

Questo tipo di sensori sono molto più veloci di quelli basati su triangolazione
di un punto e possono acquisire informazioni su oggetti in moto ma hanno un
costo superiore.

18.3 Visione stereoscopica


La proiezione di un punto nello spazio su di una immagine bidimensionale che
viene operata da una telecamera porta ad una inevitabile perdita di informazio-
ne, ovvero perdita della profondità. La visione stereoscopica punta a riacquisire
questa informazione sfruttando due immagini scattate da due punti differenti
dei quali è nota la posizione relativa. Questo problema si suddivide in calcolo
delle corrispondenze e triangolazione.

18.3.1 Geometria epipolare


La geometria epipolare è la geometria della visione stereoscopica. Essa descrive
le relazioni e i vincoli geometrici che legano due immagini 2D della stessa scena
3D catturata da due fotocamere con posizione e orientamento distinto. Vegono
ora definiti alcuni concetti geometrici caratteristici della geometria epipolare.
Si chiama baseline la linea congiungente i centri ottici delle due telecamere.
Con la geometria epipolare si analizza l’intersezione dei piani immagine con la
famiglia dei piani aventi la baseline come asse.

Figura 18.3: Rappresentazione della baseline e dei piani intersecati.

Si chiama epipolo il punto di intersezione della baseline con il piano immagine.


L’epipolo è anche la proiezione su una vista del centro della camera. Un piano
contenente la baseline invece viene chiamato piano epipolare.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

126 CAPITOLO 18. MAPPING 3D

Figura 18.4: Rappresentazione epipoli e piano epipolare.

Si chiama linea epipolare l’intersezione di un piano epipolare con il piano


immagine. Tutte le linee epipolari si intersecano nell’epipolo. Un piano epipolare
interseca il piano immagine sinistro e destro nelle linee epipolari, definendo la
corrispondenza tra linee.

Figura 18.5: Rappresentazione linea epipolare.

Per ogni punto x in un’immagine (proiezione del punto x ∈ R) esiste una linea
corrispondente I ′ nell’altra immagine.

Figura 18.6: Per ciascun punto x′ nella seconda immagine


corrispondente a x deve giacere sulla linea I ′ .

E’ possibile cosi trovare una mappatura x → I ′ .


Lo scopo della geometria epipolare è, date due immagini A ed A’, vincolare la
ricerca del punto x′ ∈ A′ corrispondete a x ∈ A ad una sua linea I ′ ∈ A′ .

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

18.4. COMPRESSIONE DEI DATI 127

18.4 Compressione dei dati


In alcune situazioni i dati acquisiti con uno scanner possono portare più infor-
mazione di quanta sia necessaria. Questo succede quando gli oggetti hanno su-
perfici abbastanza regolari. La riduzione dell’informazione al minimo necessario
permette di velocizzare gli algoritmi di elaborazione

18.4.1 OctTree
L’algoritmo OctTree, per la compressione dati suddivide ricorsivamente un cubo:

• Lo spazio viene diviso in 8 celle, ognuna delle quali conterrà una parte dei
punti.
• Se tutti i punti contenuti nella cella non soddisfano un determinato criterio
di similitudine (ad esempio il colore: se tutti i punti di una cella hanno
colore simile, allora possono essere sostituiti da un solo punto posto al
centro della cella e con un colore pari alla media degli altri), la cella viene
divisa ulteriormente in altre 8 celle.
• Si procede iterando i due passi precedenti fino a che in tutte le celle il
criterio di similitudine è rispettato oppure fino a che si raggiunge una
profondità massima.

Gli OctTree possono essere costruiti tramite la libreria OctoMap che ha come
vantaggi:

• Possibilità di costruire un modello 3D completo dell’ambiente.


• Possibilità di aggiungere in un secondo momento delle nuove informazioni
o sensori. La modellazione viene fatta tramite assunzioni probabilistiche.
Ad ogni cella viene associata quindi la probabilità di essere occupata, in ba-
se alle rilevazioni fatte all’istante t ed alla probabilità calcolata all’istante
t − 1.
• E’ flessibile, quindi non è necessario conoscere a priori la dimensione
dell’ambiente, ma la mappa può essere facilmente aggiornata.
• E’ compatta poichè le mappe vengono memorizzate in modo più che ef-
ficiente (in RAM o su disco), con anche la possibilità di generare dei file
compressi.

I problemi legati alle OctoMap sono:


• Discretizzando lo spazio continuo in mappe discrete, si hanno perdite di
informazioni.
• Non è detto che sia corretto supporre di avere un sistema di riferimento
fissato.
• Può essere necessario fare lo SLAM ovvero aggiornare costantemente la
stima dei sensori di posizione.
In ROS, le OctoMap vengono generate da un server che si occupa poi di distri-
buirle a tutti i nodi in formato binario.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

128 CAPITOLO 18. MAPPING 3D

18.5 Generazione di Mesh 3D


Con generazione di Mesh 3D si intende la rappresentazione compatta delle su-
perfici degli ostacoli. Si deve, quindi, partendo da una nuvola di punti, generare
un insieme di poligoni (generalmente dei triangoli) che approssima la superficie
dell’oggetto da ricostruire.

Figura 18.7: Esempio di generazione di mesh 3D.

18.5.1 Triangle meshes

I triangle meshes discretizzano la superficie in vertici che vengono memorizzati


in un apposito vettore. Questi vertici vengono poi uniti in modo da formare
dei triangolo connessi tra loro da un vertice o da un lato. Un set di triangle
meshes può essere costruito tramite la proprietà di Delanuay partendo da una
nuvola di punti. La proprietà di Delauay afferma che dato un set di punti P in
un piano, DT (P ) è una triangolazione di Delanuay se non esiste nessun punto
che sta all’interno dei cerchi che circoscrivono i triangoli di DT (P ). Questa
proprietà può anche essere estesa a più di due dimensioni.

Figura 18.8: Rappresentazione della proprietà di Delanuay.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

18.5. GENERAZIONE DI MESH 3D 129

18.5.2 Lo standard Collada


Collada definisce un schema XML per facilitare la portabilità di informazioni
grafiche tridimensionali attraverso diverse applicazioni e senza perdere informa-
zioni. In questo standard, una scena 3D viene descritta in termini di:

• Geometria.
• Materiali.
• Effetti.
• Proprietà Fisiche.

• Animazioni.
• Regole Cinematiche.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

130 CAPITOLO 18. MAPPING 3D

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 19

SLAM monoculare

19.1 Introduzione
Abbiamo visto nel capitolo 10 come la necessità principale per il problema dello
SLAM sia quella di ricostruire una mappa e trovare la localizzazione del robot,
immerso in un ambiente ignoto. Nello SLAM Monoculare si cerca di utilizzare
una sola telecamera (ovvero un sensore non 3D) per costruire una immagine 3D.
Per fare questo, la telecamera scatta due immagini in due posizioni e momenti
diversi, simulando un sistema stereoscopico, componendo poi le due immagini
in base alle posizioni relative dei due punti di scatto.

19.2 Calcolo delle corrispondeze


Il calcolo delle corrispondenze è proprio quel processo che permette la costru-
zione di una immagine 3D partendo da due immagini 2D. Definiamo coppia
coniugata una coppia di punti di due immagini differenti che proiettano su
un piano lo stesso punto nello spazio. Nello SLAM Monoculare si assume che
sia possibile trovare nelle due immagini almeno un particolare simile, perciò le
immagini devono essere scattate da due punti non troppo distanti. Definiamo
disparità la differenza di posizione (intesa come vettore) tra i due punti della
coppia coniugata. Questo vettore può essere immaginato come quello che si
ottiene sovrapponendo le immagini. Nella ricostruzione di un’immagine non è
sufficiente basarsi solamente sulle similarità poichè in un’immagine potrebbe-
ro esserci diversi punti simili, ovvero si è in presenza del problema delle false
corrispondenze. Altri problemi che possono sorgere sono:

• Problema delle occlusioni: ci sono alcuni particolari che compaiono in


una sola immagine.

• Distorsione radiometrica: l’intensità dei punti corrispondenti nelle due


immagini può essere differente.

• Distorsione prospettica: lo stesso oggetto assume forme diverse nelle


due immagini.

131

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

132 CAPITOLO 19. SLAM MONOCULARE

19.3 Accoppiamento feature-based


L’accoppiamento feature-based consiste nel cercare nell’immagine delle caratte-
ristiche salienti (feature), tipo:

• Spigoli.

• Angoli.

• Segmenti rettilinei o curvi.

Un accoppiamento di questo tipo è sicuramente molto rapido ed efficiente, ma


fornisce mappe di profondità sparse che vanno poi interpolate. Inoltre l’efficienza
di questo metodo dipende criticamente da come è stata descritta una feature
(ad esempio per un retta si può utilizzare la lunghezza, l’orientamento, il punto
medio o il contrasto medio lungo la retta). Questi metodi, se vengono utilizzati
dei descrittori corretti, sono quelli in grado di offrire una maggiore precisione.

19.4 Algoritmo ICP


L’algoritmo Iterative Closest Point opera su due nuvole di punti M (modello)
e S (scena) ed esegue iterativamente tre operazioni:

• Cerca le coppie di punti corrispondenti tra M ed S.

• Stima la trasformazione tra ogni coppia di punti.

• Applica la trasformazione a tutti i punti di S.

In generale, questo algoritmo ricerca la trasformazione che minimizza la funzione


di costo che valuta l’errore complessivo di corrispondenza tra le coppie. Gli
svantaggi di questo metodo sono:

• Ha una convergenza che dipende dalla qualità della stima della trasforma-
zione.

• E’ assicurata la convergenza ad un minimo locale, ma non globale. Non è


quindi detto che l’algoritmo sia ottimo.

19.5 Optical flow


Il metodo dell’optical flow si basa sull’analisi pixel per pixel: si stima lo spo-
stamento della telecamera analizzando come cambiano i pixel. Già da questa
prima introduzione si può capire come questa tecnica sia attuabile solo per
piccoli spostamenti.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

19.6. LIBRERIE PER SLAM MONOCULARE 133

Figura 19.1: Due immagini che rilevano gli stessi punti ma in


posizioni differenti.

Per stimare lo spostamento dei pixel viene risolto un problema di corrispondenza


dei pixel: dato un pixel in H si cercano pixel vicini a questo dello stesso colore
nell’immagine I. Per poter applicare questa tecnica bisogna che siano verificate
due assunzioni:

• I movimenti devono essere ridotti (meno di un pixel). Se questa condizio-


ne non è verificata il pixel in I corrispondente al pixel in H viene cercato
facendo una ricerca discreta, ovvero costruendo una finestra W attorno
al pixel. Alternativamente per far sembrare dei movimenti più «picco-
li» è possibile ridurre la risoluzione dell’immagine, in modo che un pixel
rappresenti un’area maggiore.
• Ci deve essere costanza dei colori ovvero un pixel in H deve avere lo stesso
colore che avrà il pixel corrispondente in I.

19.6 Librerie per SLAM Monoculare


Il Visual SLAM può essere gestito con:
• metodi basati su features: i quali offrono una maggiore precisione e
realizzano una mappa sparsa di punti 3D.
• metodi diretti: realizzano una mappa di profondità semi-densa.
Alcune librerie che permettono di eseguire SLAM Monoculare sono:
• PTAM - Parallel Tracking and Mapping
• ORB-SLAM
• LSD-SLAM - Large Semi-Dense SLAM
• SVO - Semi-Direct Visual Odometry
Queste librerie tra di loro differiscono per average tracking error, dimensione del-
la mappa prodotta, precisione delle misurazioni e delle stime. Lo SLAM può in-
fine essere realizzato tramite una varietà di dispositivi con diverse caratteristiche
che influenzano in maniera considerevole i risultati raggiungibili:
• Tipologia (Webcam, Kinect, ...).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

134 CAPITOLO 19. SLAM MONOCULARE

• Angolo di visione.
• Otturatore:

– Progressivo: legge i pixel riga per riga.


– Globale: legge tutti i pixel contemporaneamente.
• Risoluzione.
• Frame rate.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 20

Architettura di controllo dei


robot

20.1 Introduzione
Il sistema di controllo di un robot consiste in un insieme di attività di navigazio-
ne e manipolazione che interagiscono, ovvero compentono per ottenere risorse
computazionali collaborando per lo stesso obbiettivo. Queste iterazioni dipen-
dono dalla specifica architettura di controllo. In genere l’utente specifica la
missione del robot tramite un linguaggio ad alto livello che definisce le attività
da eseguire. Il robot decompone la missione in sotto-attività in modo iterativo
fino a farle diventare semplici azioni di navigazione e manipolazione, che per-
mette al robot di eseguire le attività specificate dall’utente in modo sequenziale
o concorrente. Ad esempio supponiamo di fornire al robot la missione di conse-
gnare dei medicinali ad un dato paziente in un ospedale. Il robot può scomporre
la missione nelle seguenti attività:

1. Recupero della mappa dell’ospedale (es. da un server).

2. Identicare la propria posizione attuale rispetto alla mappa.

3. Pianificare un percorso dalla posizione attuale fino alla stanza del paziente.

4. Navigare lungo il percorso pianificato.

5. Prendere la medicina dal contenitore di bordo e posarla sul tavolo accanto


al paziente.

Le attività 2,4 e 5 devono essere ulteriormente decomposte in sotto-attività.


Per esempio la navigazione potrebbe richiedere di aprire delle porte, quindi
di eseguire attività di manipolazione. Quest’azione non può essere predefinita
in quanto il robot potrebbe incontrare solo porte aperte. Inoltre le attività
di navigazione e pianificazione potrebbero iteragire più volte tra loro nel caso
il percorso pianificato non può essere eseguito (ad esempio trova una porta
bloccata che non può aprire), necessitando quindi di una nuova ripianificazione.
Quindi l’ingegneria dei sistemi di robot deve scontrarsi con diverse sfide, dovute
spesso a:

135

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

136 CAPITOLO 20. ARCHITETTURA DI CONTROLLO DEI ROBOT

• Risorse limitate: le attività consumano potenza computazionale, memo-


ria ed energia e per questo devono essere progettate in modo da ottimizare
il loro uso al fine di svolgere un compito in maniera autonoma.
• Vincoli: le attività possono essere soggette a vincoli in termini di spa-
zio e tempo, quindi il robot deve pianificare le proprie attività in modo
appropriato.
• Errori: i sensori e gli attuatori sono generalmente affetti da errori dovuti
ad incertezze e rumore per cui il robot deve essere preparato ad affrontare
situazioni impreviste. Deve essere quindi in grado di reagire al meglio ai
cambiamenti del mondo reale (es. rilevare ostacoli lungo il percorso).

20.2 Architettura di controllo


L’architettura fornisce un modo per organizzare un sistema di controllo, im-
ponendo cosi dei vincoli sul modo in cui il problema di controllo può essere
risolto.

Figura 20.1: Esempio di architettura di controllo.

Ci sono infiti modi di programmare un robot, ma pochi sono i tipi di controllo


del robot:
• Controllo deliberativo: più improntato verso l’attività di «pensiero».
Risulta quindi complesso con una capacità di risposta lenta, in grado però
di effettuare previsioni permettendoli di scartare cattive soluzioni. Richie-
de quindi una notevola quantità di informazioni accurate. Questo tipo di
soluzione è pensata per essere flessibile con l’aumento della complessità.
• Controllo reattivo: più improntato verso il concetto di «azione». Risulta
quindi un controllo con un tempo di risposta basso, indipendentemente

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

20.2. ARCHITETTURA DI CONTROLLO 137

dalla complessità. Per far ciò richiede che il suo comportamento sia pre-
impostato, oppure imparato dal passato. Questo tipo di soluzione presenta
una flessibilità limitata all’aumentare della complessità.

• Controllo ibrido: combinazione dei due controlli precedenti.

Tutte le numerose archittetture sviluppate per un particolare problema di con-


trollo rientrano in una delle 3 categoria appena citate.

20.2.1 Controllo deliberativo


Con questo tipo di controllo il robot utilizza tutte le informazioni sensoriali
disponibili e le conoscenze interne memorizzate per creare un piano d’azione.
Questo tipo di soluzione presenta dei limiti:

• La pianificazione richiede la ricerca attraverso potenzialmente tutti i piani


disponibili che richiederebbe molto tempo per essere eseguita.

• Un agente deliberativo non impara, quindi uno stesso problema potrebbe


essere risolto più volte.

• Richiede un modello globale con cui rappresenta le azioni e le loro conse-


guenze, il quale però potrebbe diventare obsoleto.

• Non adatto per un sistema real-time. In un ambiente dinamico è probabile


infatti che le cose cambino prima che il controllo sia completato.

Come vantaggi però abbiamo:

• Capacità di previsione.

• Capacità di trovare soluzioni strategiche, scegliendo l’alternativa migliore


tra quelle generate (particolarmente utile quando la scelta di un’alterna-
tiva errata provoca alta penalità) ottenendo una risposta che potrebbe
essere ottimale.

• Consente di codificare una procedura generale per trovare una soluzione


ad una classe di problemi.

• Può essere migliore dei sistemi reattivi per far fronte a nuovi problemi.

20.2.2 Controllo reattivo


Il controllo reattivo è una tecnica per legare strettamente percezione e azio-
ne, adatto quindi per produrre una risposta tempestiva in mondi dinamici non
strutturati. Questo tipo di controllo può essere strutturato in livelli dove:

• Ogni livello ha accesso a sensori e attuatori indipendentemente dagli altri.

• Un malfunzionamento di un livello alto non pregiudica il funzionamento


di quelli inferiori (indipendenza dai livelli superiori).

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

138 CAPITOLO 20. ARCHITETTURA DI CONTROLLO DEI ROBOT

Uno dei paradigmi più influenti del controllo reattivo è il Rodney Brooks
Subsumption Architecture il quale definisce il comportamento tramite una
rete di moduli ognuno dei quali compie una precisa attività e può interfacciarsi
con gli altri moduli. Inoltre i moduli vengono suddivisi per strati, dove ogni
strato deve riflettere l’intelligenza e la compentenza di un modulo:
• Strati inferiori: devono incapsulare le funzioni di soppravvivenza di base.
• Strati superiori: devono svolgere azioni più mirate (es. mappatura) e
possono sovrascrivere o sopprimere l’output fornito dai livelli inferiori.
Inoltre dato che i moduli devono operare in modo simultaneo, è previsto un
meccanismo per gestire i conflitti dove il vincitore (strato più alto) prende tutte
le risorse.
Ad esempio, il controllo reattivo può essere utilizzato per sistemi che implemen-
tano l’obstacle avoidance, in cui non viene data una rappresentazione del mondo
ma le informazioni sono ottenute direttamente dall’ambiente. I moduli interni
potrebbero essere 3:
• Per il rilevameto dell’ostacolo se troppo vicino.
• Per acquisire i dati dai sensori.
• Per fornire la direzione verso la quale muoversi.
i quali inviano informazioni a 2 attuatori:
• Per fornire l’output al motore per far muovere il robot.
• Per fermare e riavviare il movimento del robot.

Figura 20.2: Esempio di possibile architettura per un sistema di


obstacle avoidance.

I sistemi reattivi presentano alcuni svantaggi:


• Non possono ragionare o rappresentare oggetti remoti ne effettuare previ-
sioni.
• Non sono adatti in domini in cui l’azione più plausibile risulta essere
svantaggiosa.
• Difficoltà di organizzare le proprie attività o coordinare il loro comporta-
mento con quello di altri agenti.
Quindi da un controllo reattivo è difficile ottenere un sistema con un compor-
tamento intelligente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

20.2. ARCHITETTURA DI CONTROLLO 139

20.2.3 Controllo ibrido


Il controllo ibrido, chiamato anche sistema a tre strati, combina l’approccio
reattivo e deliberativo ed è suddiviso in layer:

• Livello reattivo: si occupa di compiere azione immediate.


• Livello deliberativo: si occupa della pianificazione.
• Livello intermedio: connette i due strati.

Per questo tipo di controllo la maggiore sfida risulta essere quella di progettare
il layer intermedio in quanto i livelli reattivo e deliberativo operano su scale
temporali e rappresentazioni molto diverse, oltre al fatto che devono essere in
grado di operare contemporaneamente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

140 CAPITOLO 20. ARCHITETTURA DI CONTROLLO DEI ROBOT

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 21

Pianificazione automatica

21.1 Introduzione
Con pianificazione si intende il processo di individuazione delle attività richieste
per creare un obbiettivo desiderato. In termini più concreti la pianificazione è
un approccio flessibile per prendere decisioni complesse. Per flessibile si intende
che il problema è descritto nel sistema di pianificazione in un qualche linguaggio
generico, che un buona soluzione può essere trovata in modo automatico e che
se il problema cambia l’unico cambiamento da apportare è relativo alla sua de-
scrizione. Un esempio semplice di pianificazione può essere quello di acquistare
un litro di latte. Questo obbiettivo è suddivisibile in altri sotto-obbiettivi:

• Recuperare le chiavi della macchina.

• Recuperare il portafoglio.

• Uscire di casa.

• Avviare la macchina.

• Guidare fino al negozio.

• ...

Da questo semplice esempio si può individuare una sequenza di operazioni im-


mediatamente eseguibili. L’esempio fatto introduce il concetto di piano ovve-
ro una collezione o una sequenza di azioni per eseguire uno specifico compito
o raggiungere qualche obbiettivo. Pianificare nel mondo reale è un problema
complesso, dovuto al fatto che:

• L’agente non possiede una conoscenza perfetta del mondo.

• Il mondo è dinamico e stocastico.

• L’agente potrebbe compiere errori durante l’esecuzione del piano.

• Pianificare è già di per se un’attività che richiede tempo.

141

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

142 CAPITOLO 21. PIANIFICAZIONE AUTOMATICA

21.2 Tipi di pianificazione


Esistono tre tipologie diverse di pianificatori:
• Domain-specific: sono pianificatori pensati per un dominio specifico.
Sono quindi ottimi per lo specifico dominio per il quale sono stati proget-
tati ma sono praticamente inutili in altri contesti.
• Domain-independent: sono pianificatori che possono essere adattati a
più contesti e quindi non utilizzano alcuna conoscenza specifica del do-
minio tranne le definizioni delle azioni di base. Dato che non è possibile
sviluppare pianificatori che funzionino in ogni possibile dominio essi fanno
delle semplificazioni per limitare l’insieme di domini.
• Configurable.
Attualmente i pianificatori che hanno riscontrato più successo sono quelli pensati
per un specifico dominio.

21.3 Modelli concettuali per pianificazione auto-


matica
21.3.1 Sistema stati-transizione
Per la pianificazione automatica, può essere utile rappresentare il sistema in
analisi come un modello stato-transizione in cui si rappresentano tutti gli stati
di cui un sistema è composto dove per passare da uno stato all’altro è necessario
eseguire un’azione.

Figura 21.1: Esempio modello stato-transizione.

Il sistema può quindi essere rappresentato come


Σ = (S, A, E, γ)

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

21.4. IL PROBLEMA DI PIANIFICAZIONE 143

dove:

• S = insieme degli stati.

• A = insieme delle azioni.

• E = insieme degli eventi esogeni, ovvero eventi che cambiano lo stato e


che non vengono generati dal sistema ma dall’ambiente.

• γ = funzione stati-transizioni.

21.3.2 Modello concettuale


Possiamo descrivere il modello concettuale di un sistema come costituito da:

• Pianificatore: Il pianificatore deve ricevere la descrizione del sistema Σ


e gli obbiettivi da raggiungere che insieme definiscono il problema di pia-
nificazione. Inoltre, all’avvio riceve lo stato iniziale mentre in esecuzione
lo stato corrente. Con tutto ciò viene prodotto un piano.

• Controllore: Il controllore riceve le istruzioni inviate dal pianificatore e,


tramite le funzioni di osservazione, l’effetto delle sue azioni di controllo.
Queste funzioni di osservazione sono delle funzioni del tipo

h:S→O

Esse permettono al controllore di decidere quali azioni A produrre sul siste-


ma oltre che a verificare che le azioni abbiano portato all’effetto desiderato
noticando eventuali imprevisti.

21.4 Il problema di pianificazione


Data una descrizione del sistema Σ ed uno stato iniziale s0 si vuole raggiungere
un determinato stato finale. Il problema appena descritto consiste quindi nel
determinare un piano, ovvero una sequenza di azioni che potrebbero non essere
ottime. Un piano può essere formulato anche tramite la policy, una funzione
parziale da S ad A. Questo significa che non viene specificata solamente l’a-
zione ma anche lo stato in cui ci si deve trovare affinché si possa applicare la
determinata azione. Fare pianificazione non è la stessa cosa di fare scheduling.
Infatti nello scheduling si decide quando e come eseguire un determinato insieme
di azioni in funzione dei vincoli temporali, di vincoli sulle risorse e in termini
di funzioni obbiettivo. Nel planning invece si decide quali azioni devono essere
eseguite per raggiungere un insieme di obbiettivi. Il problema del planning può
avere una complessità superiore ad un problema NP-completo e nel peggiore dei
casi potrebbe anche non essere decidibile. Per questo motivo è necessario fare
delle assunzioni restrittive.

21.4.1 Assunzioni restrittive


Per «limitare» il problema della pianificazione, è possibile fare delle assunzioni
restrittive:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

144 CAPITOLO 21. PIANIFICAZIONE AUTOMATICA

1. Il sistema deve essere finito (numero di stati, azioni ed eventi finito).


2. Il sistema deve essere pienamente osservabile.
3. Il sistema deve essere deterministico (ogni azione deve produrre solamente
una uscita).
4. Il sistema deve essere statico. Non devono esserci degli eventi esogeni,
ovvero non vi deve essere alcuna modifica tranne quelle determinate dalle
azioni dei controllori.
5. raggiungibilità dello stato obbiettivo.
6. Il piano deve essere una sequenza ordinate di azioni a1 , a2 , ..., an .
7. Il tempo deve essere implicito. Questo significa che non vi deve essere una
«durata» ma il cambio tra uno stato e l’altro deve essere istantaneo.
8. Il pianificatore non deve conoscere lo stato in cui si trova il sistema. Si
parla di off-line planning.

21.4.2 Pianificazione classica


La pianificazione classica richiede che tutte le 8 assunzioni restrittive siano ve-
rificate. In questo modo il problema da analizzare si riduce al seguente: dati
Σ, s0 , Sg trovare una sequenza di azioni (a1 , a2 , ..., an ) che produce una sequen-
za di transizioni (s1 , s2 , ..., sn ) tale che sn ∈ Sg . Questo significa risolvere un
problema di path-searching su un grafo in cui i nodi sono gli stati e gli archi
rappresentano le azioni. Avere tutte le 8 assunzioni verificate richiede che si
analizzi un numero molto elevato di situazioni (anche migliaia) che difficilmente
possono essere risolte in un caso reale.

21.4.3 Rilassamento delle assunzioni


Esistono delle tecniche che semplificano i calcoli rilassando alcune ipotesi re-
strittive:
• Rilassamento di 1: E’ il caso della logica del prim’ordine. La pianificazione
fatta in questo modo viene detta Hierarchical Task Network ed è una delle
più utilizzate nella robotica.
• Rilassamento di 3: Si avrà la possibilità di avere più di un esito per le
azioni. In questo modo si hanno due possibili pianificazioni:
– Discrete Markov Decision Processes se si considerano anche le pro-
babilità.
– Nondeterministic transition systems se non si considerano le proba-
bilità.
• Rilassamento di 2 ed 3: Si parla di metodo Finite POMPDPs (Partially
Observable Markov Decision Processes).
• Rilassamento di 4: Si avrà la possibilità di avere eventi esogeni.
• Rilassamento di 2 e 4: Si lavora con informazioni non-perfette.
• Rilassamneto di 6 e 7: Pianificazione temporale.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

21.5. RAPPRESENTAZIONI PER LA PIANIFICAZIONE CLASSICA 145

21.5 Rappresentazioni per la pianificazione clas-


sica
Come abbiamo visto in precedenza la pianificazione classica richiede che tutte 8
le assunzioni restrittive siano verificate. Abbiamo anche già accennato che que-
sto aspetto porta ad avere un numero molto elevato di stati. Come convenzione,
per evitare di rappresentare un numero elevato di stati, uno specifico stato vie-
ne rappresentato come un insieme di caratteristiche «vere» in quello stato.
Utilizziamo un insieme di operatori per calcolare le transizioni tra gli stati.
In questo modo non dobbiamo specificare per forza tutti gli stati: definiamo
solamente lo stato iniziale e, tramite l’applicazione degli operatori, arriviamo
ad avere gli altri stati.

21.6 Logica del primo ordine


Definiamo alcuni concetti chiave:

• atomo: un simbolo di predicato con i relativi argomenti. Questi atomi


vengono utilizzati per rappresentare relazioni sia fisse che dinamiche, ad
esempio:

– adiacente(l, l′ )
– occupato(l)
– ...

• ground expression: un’espressione che non contiene simboli di variabile


(es. in(c1, p3)).

• unground expression: un’espressione che contiene almeno un simbolo


di variabile (es. in(c1, x)).

• Si parla di sostituzione in merito ad una espressione del tipo θ = {x1 ←


v1 , x2 ← v2 , ...}in cui ogni xi è una variabile mentre ogni vi è un termine.

• istanza di e : il risultato dell’applicazione di una sostituzione θ ad e.

• stato: un insieme s di atomi ground in cui:

– Gli atomi rappresentano gli aspetti che sono veri in uno dei possibili
stati del sistema Σ.
– Può esserci un numero grande a piacere (ma finito) di atomi ground,
quindi il sistema avrà un numero finito di stati.

• operatore: una tripla o = (name(o), precond(o), ef f ects(o)) in cui:

– precond(o) indica le precondizioni che devono essere vere affinché tale


operatore possa essere utilizzato.
– ef f ects(o) indica gli effetti, ovvero i letterali che saranno resi veri
dopo l’esecuzione dell’operatore.
– name(o) è una espressione sintattica nella forma n(x1 , ..., xk ) in cui:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

146 CAPITOLO 21. PIANIFICAZIONE AUTOMATICA

∗ n è un simbolo di operatore che deve essere univoco per ogni


operatore.
∗ n(x1 , ..., xk ) è la lista di tutti i parametri che compaiono in o.
• azione: un’istanza ground, ottenuta tramite sostituzione, di un operatore.
In pratica quando si applica un operatore a delle variabili vere e proprie,
si ottiene un’azione. Un’azione è applicabile ad uno stato s se s soddisfa
la precondizione dell’azione.
• piano: una qualunque sequenza di azioni σ = (a1 , a2 , ..., an ) tale che ogni
ai è una istanza di un operatore in O. Un piano è una soluzione ad una
istanza di un problema di pianificazione P = (O, s0 , g) e, se è eseguibile,
porta alla soluzione del obbiettivo g.
Con questi concetti, dato un dominio specifico di pianificazione (composto da
un linguaggio L e da operatori O) vengono definiti:

• Il problema di pianificazione P = (Σ, s0 , Sg ) in cui:


– s0 è lo stato iniziale.
– Sg è l’insieme di stati finali.
– Σ = (S, A, γ) il sistema stati-transizioni.
– S è l’insieme di tutti gli atomi ground in L.
– A è l’insieme di tutte le instanze ground degli operatori in O.
– γ è la funzione di transizione tra gli stati, determinata dagli operatori.
• L’instanza di un problema di pianificazione è P = (O, s0 , g) in cui:
– O è una collezione di operatori.
– s0 è lo stato iniziale.
– g è un insieme di letterali, detta formula obbiettivo.

21.7 Reti gerarchiche di Task


Potremmo già avere un’idea di come risolvere i problemi in un dominio di pia-
nificazione. Ad esempio supponiamo che l’obbiettivo sia viaggiare verso una
destinazione lontana. In questo caso il pianificatore è indipendente dal dominio
data la moltitudine di combinazioni di veicoli e percorsi che potrebbero esse-
re usati. L’esperienza umana ci farebbe agire attraverso un piccolo numero di
«ricette» come:
• Acquistare un biglietto dall’aereoporto locale verso un aereoporto remoto.
• Viaggiare verso l’aereoporto locale.
• Volare verso l’aereoporto remoto.
• Viaggiare alla destinazione finale.
Per consentire ai sistemi di pianificazione di utilizzare tali ricette si potrebbe
ridurre il problema tramite:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

21.7. RETI GERARCHICHE DI TASK 147

• Attività piuttosto che obbiettivi.

• Metodi per decomporre le attività in sotto-attività.

• Rafforzamento dei vincoli (es. taxi non è un veicolo adatto per le


lunghe distanze).

Questo modo di agire è tipico delle reti gerarchiche di task. Esse possono essere
usate per pianificare in un dominio specifico (es. robotica) o per un dominio
configurabile.

Figura 21.2: Esempio di Rete di attività gerarchica.

21.7.1 Simple Task Network (STN) Planning


Questo sottotipo di reti gerarchiche di Task prevede la presenza di:

• Stati ed operatori: sono uguali, sia per concetto rappresentato che per
notazione, a quelli del planning classico, dove ogni operatore corrisponde
ad uno stato di transizione deterministico.

• Task(o attività): sono espressioni nella forma t(u1 , ..., un ) in cui t è il


simbolo del task ed ui sono termini. I simboli del task possono essere:

– Primitivi: sono task per i quali sappiamo direttamente come devono


essere eseguiti.
– Nonprimitivi: sono task che, per essere eseguiti, devono essere
decomposti in sotto-task.

• Metodi totalmente ordinati: sono insiemi di 4 valori m = (name(m), task(m), precond(m), subtasks(m))
in cui:

– name(m) è una espressione nella forma n(x1 , ..., xn ) in cui x1 , ..., xn


sono parametri, quindi simboli di variabile.
– task(m) è un task non-primitivo.
– precond(m) sono le precondizioni, così come nel planning classico.
– subtask(m) è una sequenza di task (h1 , ..., tk )

In questo tipo di metodi, l’ordine di esecuzione dei vari sottotask è fissato


solo per alcuni task, ma l’ordine di esecuzione «totale» non è fissato.

• Dominio di planning: è l’insieme di metodi ed operatori.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

148 CAPITOLO 21. PIANIFICAZIONE AUTOMATICA

• Problema di planning: è l’insieme di metodi, operatori, stato iniziale e


lista dei task.

• Soluzione: è un qualunque piano eseguibile che può essere generato in


modo ricorsivo applicando metodi ai task non-primitivi ed operatori ai
task primitivi.

Figura 21.3: Esempio di pianficazione di un problema tramite STN.

21.8 Processi di decisione markoviani


Fino ad ora, in tutta la trattazione sulla pianificazione, abbiamo sempre consi-
derato che ogni azione potesse avere un solo esito. Questo, però non è realistico,
in quanto nella realtà un’azione può avere più di un esito (ad esempio l’azio-
ne potrebbe fallire oppure potrebbero insorgere alcuni eventi esogeni...). Come
soluzione a questa incertezza si introducono i processi di decisione markoviani.

21.8.1 Sistemi stocastici


Un sistema stocastico è una tripla Σ = (S, A, P ) in cui:

• S è un insieme finito di stati.

• A è un insieme finito di azioni.

• Pa (s′ |s) è la probabilità di andare nello stato s′ se eseguiamo l’azione a


dallo stato s. Essendo una probabilità dovrà valere

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

21.8. PROCESSI DI DECISIONE MARKOVIANI 149

X
Pa (s′ |s) = 1
s′ ∈S

Per ogni stato ci sarà una probabilità P (s) di essere lo stato iniziale.
Possiamo assumere che vi sia un unico stato iniziale s0 ovvero poniamo
P (s0 ) = 1 e P (s) = 0, ∀s 6= s0 .

Questi sistemi possono essere rappresentati come un grafo e quindi risolti come
problemi di ottimizzazione.

Figura 21.4: Esempio di rappresentazione tramite grafo di un


sistema stocastico.

Definiamo policy una funzione che mappa gli stati nelle azioni. Una policy
viene definita come

π = {(s1 , azione1 (parametri)), ...}

ed ha lo scopo di «abilitare» un’azione solo quando ci si trova in un determinato


stato si .
Definiamo storia una sequenza di stati del sistema:

h = (s1 , s2 , ...)

21.8.2 Aggiunte
Agli stati ed alle azioni si possono associare alcuni valori:

• Costo C(s, a).

• Ricompensa R(s) che determina l’utilità di esecuzione dello stato.

• Funzione di Utility: E’ la generalizzazione dell’obbiettivo. Se conside-


riamo una storia

h = (s0 , s1 , ...)

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

150 CAPITOLO 21. PIANIFICAZIONE AUTOMATICA

questa funzione sarà

X
V (h|π) = (R(si ) − C(si , π(si )))
i≥0

• Fattore di «sconto» 0 ≤ γ ≤ 1. Questo valore di sconto può essere


utilizzato per «scontare» la funzione di utility, facendo pesare meno quelli
che sono i costi e le ricompense più lontane dal punto in cui ci si trova.

X
V (h|π) = γ i (R(si ) − C(si , π(si )))
i≥0

La convergenza di questa serie è garantita per 0 ≤ γ < 1.

• Utility attesa per una policy

X
E(π) = P (h|π) · V (h|π)
h

che è la funzione da ottimizzare.

21.8.3 Pianificazione come ottimizzazione


Consideriamo un caso particolare in cui:

• Partiamo dallo stato s0 .

• Tutte le ricompense sono pari a 0.

• Consideriamo i costi al posto che le utility, negando quello che avevo prima.

Questo rende le equazioni un po’ più semplici, nonostante possano essere fa-
cilmente generalizzate nel caso in cui le ricompense siano diverse da 0. I costi
scontati della storia h sono:

C(h|π) = Σi≥0 γ i C(si , π(si ))


Il costo previsto per la policy è:

E(π) = Σh P (h|π)C(h|π)
Una policy π è ottimale se per ogni π’ si ha

E(π) ≤ E(π ′ )
Una policy π è ovunque ottimale se per ogni s ed ogni π’ si ha

Eπ (s) ≤ Eπ′ (s)


dove Eπ (s) è il costo previsto se partiamo da s invece che da s0 .

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

21.9. PROCESSI DI DECISIONE MARKOVIANI P.O. 151

21.9 Processi di decisione Markoviani parzialmen-


te osservabili
Nei processi di decisione markoviani parzialmente osservabili si vuole tenere con-
to del fatto che gli stati possano essere non completamente osservabili. Questo
significa che ammettiamo il caso in cui non si possa sapere lo stato in cui ci si
trova. Definiamo POMDP (Partially observable Markov Decision Processes)
un insieme di:

• Sistema stocastico Σ = (S, A, P ).


• Un set finito O di osservazioni. O modella la parziale osservabilità: il
controllore non può capire direttamente in quale stato s si trova, quindi
può solamente fare delle osservazioni. Una determinata osservazione o si
può avere in più di uno stato.
• Pa (o|s) cioè la probabilità di un’osservazione o dopo aver eseguito un’a-
zione a nello stato s. Essendo una probabilità, deve valere
X
Pa (o|s) = 1
o∈O

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

152 CAPITOLO 21. PIANIFICAZIONE AUTOMATICA

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 22

Meccanica dei robot


manipolatori

22.1 Introduzione
Un robot industriale è un manipolatore multifunzionale riprogrammabile, co-
mandato automaticamente. Robot di questo tipo sono pensati per essere fissi a
terra e per lavorare in spazi di lavoro recintati. Un robot industriale è composto
da:

• Joints (giunti): sono le parti in movimento.

• Links: sono le parti fisse.

• End Effector: rappresenta l’utensile del robot.

Figura 22.1: Parti principali con cui è composto un robot


manipolatore.

22.2 Tipi di giunti


Esistono diversi tipi di giunti:

153

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

154 CAPITOLO 22. MECCANICA DEI ROBOT MANIPOLATORI

• Giunti di rotazione: sono giunti che, nella loro versione standard hanno
un solo grado di libertà.

• Giunti di traslazione: sono giunti che permettono di traslare e possie-


dono 2 gradi di libertà.

Per ogni grado di libertà è presente un motore che consente di effettuare i


movimenti.

Figura 22.2: A sinistra sono rappresentati due possibili giunti di


rotazione, uno composto da due cilindri concentrici mentre quella
mostrato più a destra è costituito da due parti rigide legate da un
perno. A destra invece un giunto di traslazione composto da due
barre mobili azionate da due motori diversi in modo indipendente.

22.3 Tipi di link


Esistono diversi tipi di link:

• Paralleli: hanno i due attacchi dei giunti con degli assi che sono paralleli
tra di loro.

• Ortogonali: hanno i due attacchi dei giunti con degli assi che sono
ortogonali tra di loro.

Figura 22.3: A sinistra un tipo di link parallelo mentre a destra


uno di tipo ortogonale.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

22.4. GRADI DI LIBERTÀ 155

22.4 Gradi di libertà


Definiamo grado di libertà il numero di variabili indipendenti di giunto che
devono essere specificate per definire la posizione di tutti i link della struttura.
Esempio:
• Un corpo rigido nel piano ha tre gradi di libertà.
• Una ruota su un binario senza scivolamento ha un unico grado di libertà,
ovvero la rotazione.
• Un braccio umano ha 7 gradi di libertà (3 rotazioni polso, 1 rotazione
gomito, 3 rotazioni spalla).
• Un generico robot umanoide ha tra i 40 e 50 gradi di libertà.
Dati:
• N il numero di link, inclusa la terra,
• J1 il numero di giunti con un grado di libertà.
• J2 il numero di giunti con due gradi di libertà.
si possono calcolare i gradi di libertà di una struttura nel piano attraverso la
formula di Grubler. Tale formula parte dalla considerazione che ogni corpo
rigido nel piano possiede tre gradi di libertà che vengono in parte persi se tale
corpo viene collegato tramite giunti. In particolare i giunti con un grado di
libertà faranno perdere al corpo rigido 2 gradi di libertà mentre un giunto a 2
gradi di libertà ne fa perdere solo uno. Da cui:

gdl = 3 · (N − 1) − 2 · J1 − J2
Dove nel conteggio vengono rimossi i 3 gradi di libertà della terra tramite il
−1. Quindi per ottenere un robot manipolatore in grado di raggiungere i punti
in uno spazio a tre dimensioni sono necessari almeno 3 gradi di libertà. Per
raggiungere un punto con qualsiasi orientamento sono necessari ulteriori 3 gradi
di libertà.

Figura 22.4: Esempio di robot antropomorfo avente 6 gradi di


libertà.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

156 CAPITOLO 22. MECCANICA DEI ROBOT MANIPOLATORI

22.5 Spazio di lavoro


Per spazio di lavoro si intende l’insieme dei punti (posizioni) dello spazio che il
robot può raggiungere con l’utensile. Si fa una distinzione tra:
• Spazio raggiungibile ovvero dove la mano può essere posta con almeno
un orientamento.
• Spazio di destrezza ovvero dove la mano può essere posta con ogni
orientamento.

22.6 Tipi di robot


22.6.1 Robot cartesiano
Un robot cartesiano è costituito da 3 giunti di traslazione e viene principalmente
usato per assemblaggi in ambienti molto strutturati. Presenta inoltre uno spazio
di lavoro che è un parallelepipedo.

Figura 22.5: Esempio di robot cartesiano.

22.6.2 Robot cilindrico


Un robot cilindrico presenta un giunto di rotazione verticale e due giunti di
traslazione. Ha una minor libertà di movimento dovuta al fatto che una parte
dello spazio di lavoro, di forma cilindrica, è ostruita dal robot stesso. Ha il
vantaggio di possedere giunti di rotazione la cui realizzazione risulta semplice e
conveniente.

Figura 22.6: Esempio di robot cilindrico.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

22.6. TIPI DI ROBOT 157

22.6.3 Rotot sferico o polare


Il robot sferico possiede 2 giunti di rotazione ed un giunto di traslazione. Viene
tipicamente utilizzato per operazioni di saldatura, in quanto consente facilmente
di lavorare con l’utensile orientato verso l’esterno. Inoltre ha uno spazio di lavoro
che è una semisfera.

Figura 22.7: Esempio di robot sferico.

22.6.4 Robot articolato


Un robot articolato è caratterizzato da tre giunti di rotazione. Avendo solo
rotazioni, il robot è meno costoso e più agile ma introduce una maggiore com-
plessità nella trasformazione tra lo spazio di attuazione e quello reale. Questo
robot viene spesso chiamato «antropomorfo» perché simile alla struttura del
braccio umano, che però ha una rotazione in più nella spalla. Il suo spazio di
lavoro è una parte di semisfera.

Figura 22.8: Esempio di robot articolato.

22.6.5 Robot SCARA


Questo robot è uno dei più diffusi e presenta due giunti di rotazione ed un
giunto di traslazione e possiede uno spazio di lavoro che è un cilindro cavo. La
discesa verticale della mano, dovuto al suo unico giunto di traslazione, è tipica

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

158 CAPITOLO 22. MECCANICA DEI ROBOT MANIPOLATORI

di operazioni di assemblaggio. Infatti con questo robot è possibile implementare


operazioni di assemblaggio muovendo un solo giunto, al posto che tutti e tre.

Figura 22.9: Esempio di robot SCARA.

22.6.6 Polso di robot


Si parla di polso di un robot quando i tre assi di rotazione si incontrano in un
punto fisso, detto centro del polso, indipendente dal loro orientamento.

Figura 22.10: Esempio di polso di robot.

22.7 Precisione di un robot


La precisione di un robot può essere valutata in base a tre fattori:
• Accuratezza: è la differenza tra la posizione comandata e quella effet-
tivamente raggiunta dal sistema di controllo alla fine del moto. Questo
aspetto assume un’importanza tanto maggiore quanto più piccole sono le
tolleranze.
• Ripetibilità: è la variazione della posizione raggiunta mandando ciclo
dopo ciclo lo stesso comando al controllore.
• Risoluzione spaziale: è la distanza minima che può essere rilevata
o comandata. Questo parametro dipende dalla risoluzione dei sensori
interni.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

22.8. ALTRE MISURE 159

Generalmente è più semplice costruire robot ripetibili piuttosto che robot accu-
rati.

Figura 22.11: Rappresentazione grafica di alcuni parametri di


precisione di un robot.

22.8 Altre misure


Altre misure che possono essere importanti nell’utilizzo di un robot manipolatore
sono:

• Massimo payload: è il massimo peso che può essere trasportato a


velocità ridotta mantenendo la precisione.

• Normal payload: è il massimo peso che può essere trasportato alla


velocità massima mantenendo la precisione.
• Massima velocità: è la velocità massima a cui si può muovere l’estre-
mità del robot completamente esteso e muovendo tutti i giunti insieme in
direzioni complementari.

• Tempo di ciclo: è il tempo necessario per svolgere tutta una operazione


completa, tornando alla condizione iniziale.

Per payload si intende tutto quello che viene attaccato al polso del robot, va
quindi considerato anche il peso della mano.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

160 CAPITOLO 22. MECCANICA DEI ROBOT MANIPOLATORI

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 23

Programmazione KR16

23.1 Kuka KR-C2


Il robot Kuka KR-C2 ha un controllore che lavora direttamente con il robot, ge-
stendo i motori tramite un controllo in corrente e tramite riferimenti di posizione
e velocità.

Figura 23.1: Robot Kuka.

23.1.1 On-line programming


Nella programmazione on-line i movimenti che il robot deve compiere vengono
specificati tramite un apposito strumento gestito da un operatore, garantendo i
seguenti vantaggi:

• E’ economico.

• Programmi realizzati in concordanza con la posizione attuale di attrezza-


tura e pezzi.

Questa metodo, però, ha anche alcuni svantaggi:

• La produzione viene sospesa durante la programmazione.

• La logica del programma ed i calcoli sono difficili da implementare.

161

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

162 CAPITOLO 23. PROGRAMMAZIONE KR16

23.1.2 Off-line programming


L’operazione di off-line programming viene assistita da strumenti informatici e
viene poi caricata sul robot. Questo metodo ha, come vantaggi:

• La produzione può continuare anche durante la fase di programmazione.

• Programmazione efficace di logiche e posizioni.

• Verifica del programma tramite simulazione.

• Riutilizzo di dati CAD esistenti.

Questa metodo, però, ha anche alcuni svantaggi:

• Spesso costosa.

• Sono necessari modelli accurati.

• Necessario tempo di apprendimento.

23.2 Sistema di coordinate


Esistono diversi sistemi di coordinate:

• Sistema di coordinate specifico per asse: ogni asse del robot può
essere spostato singolarmente in direzione positiva o negativa dell’asse.
Ciò avviene tramite i tasti di spostamento oppure tramite lo space-mouse,
con cui si possono spostare contemporaneamente 3 o 6 assi.

Figura 23.2: Sistema di coordinate specifico per asse.

• Sistema di coordinate WORLD: E’ un sistema di coordinate cartesia-


no, ortogonale ed assoluto (fisso) la cui origine si trova di regola all’interno
della cella di lavoro. Il punto zero di questo sistema, di default, si trova
ai piedi del robot.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

23.3. MOVIMENTI 163

Figura 23.3: Sistema di coordinate WORLD.

• Sistema di coordinate utensile TOOL: E’ un sistema di coordinate


ortogonale cartesiano, la cui origine sta nella punta dell’utensile. L’orien-
tamento di questo sistema di coordinate viene di norma scelto in modo che
il suo asse X sia identico alla direzione di lavoro dell’utensile. Il sistema
di coordinate TOOL segue sempre il movimento dell’utensile.

Figura 23.4: Sistema di coordinate utensile TOOL.

23.3 Movimenti
I movimenti permettono di raggiungere un punto finale, seguendo traiettorie
diverse. I movimenti possibili sono:

• Movimenti punto a punto: la traiettoria viene definita da un punto


iniziale, un punto finale e le accelerazione e velocità massime su ogni asse.
In un movimento punto a punto la traiettoria non è definita, ma potrebbe

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

164 CAPITOLO 23. PROGRAMMAZIONE KR16

essere scelta in base ad alcuni criteri, ad esempio quella che consente al


robot di fare il movimento nel minor tempo possibile. In un movimento
punto a punto, inoltre, tutti gli assi iniziano e terminano il movimento con-
temporaneamente e la velocità di ogni asse è inversamente proporzionale
alla variazione di posizione angolare.

Figura 23.5: Movimento punto a punto.

• Movimenti lineari: il controllore suddivide il percorso lineare in una


sequenza di punti di passaggio intermedi e tra questi punti intermedi vie-
ne fatto un movimento punto a punto. Le velocità e le accelerazione in
questo caso sono riferite al movimento dell’utensile lungo la traiettoria. In
particolare lungo la traiettoria l’utensile potrebbe rimanere fisso oppure
cambiare orientamento.

Figura 23.6: Nella figura a sinistra l’orientamento dell’utensile va-


ria mentre nella figura a destra rimane fisso. In entrambi i casi il
movimento risulta lineare.

• Movimenti circolari: la traiettoria da seguire risulta essere un arco di


circonferenza, di consenguenza è necessario definire, in aggiunta al punto
iniziale e finale, anche un punto ausiliario. Come per il movimento lineare
il controllore suddivide l’arco in una sequenza di punti di passaggio che
raggiunge con movimenti punto a punto.

Figura 23.7: Movimento circolare.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

23.4. PROGETTO TECHNIX 165

23.3.1 Movimenti approssimati


E’ possibile far eseguire al robot movimenti che approssimano quelli citati in
precedenza. Questo consente al robot di effettuare un movimento più fluido
senza che si fermi.

Figura 23.8: Esempi di movimenti approssimanti, punto a punto,


lineare e circolare.

23.4 Progetto Technix


Questo progetto ha portato lo sviluppo di un braccio robotico su cui viene
montato un dispositivo a raggi X. Presenta 3 gradi di libertà in quanto il robot
è in grado di compiere un movimento verticale, un movimento orizzontale e un
movimento rotazionale come rappresentato in figura 23.9, rispetto ad un sistema
di riferimento di coordinate WORLD. Prima di essere commercializzato sono
stati effettuati dei test in cui è stato simulato l’uso prolungato dello strumento
lungo tutte le 3 direzioni e sono stati eseguiti i tre movimenti in successione per
realizzare un ciclo da ripetere X volte.

Figura 23.9: Movimenti compiuto del robot sviluppato con il


progetto Techinx.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

166 CAPITOLO 23. PROGRAMMAZIONE KR16

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 24

Cinematica diretta dei


manipolatori

24.1 Introduzione
Generalmente, nello studio dei robot manipolatori non ci si occupa di studiare
le forze che causano il movimento ma si guardano solo le posizioni e la velocità
dei motori. Parlando di cinematica dei robot si distinguono due tipologie:
• Cinematica diretta: dalle posizioni dei vari giunti si vuole arrivare alla
posizione dell’utensile.
• Cinematica inversa: si conosce la posizione in cui si vuole mandare
l’utensile, quindi si cercano i valori delle posizioni dei vari giunti
In entrambi i valori reali dei giunti vengono forniti al robot tramite sensori.

24.2 Cinematica di un robot planare


Supponiamo di voler lavorare con un robot planare composto da due giunti di
rotazione e da 2 link, supponendo che le rotazioni siano in grado di raggiungere
i 360◦ . Nella cinematica diretta conosciamo i valori θ1 e θ2 dei due giunti e
vogliamo calcolare la posizione (x, y) dell’utensile.

Figura 24.1: Rappresentazione dei parametri in gioco.

167

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

168 CAPITOLO 24. CINEMATICA DIRETTA DEI MANIPOLATORI

Per determinare la posizione è sufficiente richiamare delle semplici funzioni


goniometriche:
(
x = l1 · cos(θ1 ) + l2 · cos(θ1 + θ2 )
y = l1 · sin(θ1 ) + l2 · sin(θ1 + θ2 )
Supponiamo ora di conoscere le coordinate (x, y) della posizione dell’utensile
e vogliamo calcolare i valori di θ1 e θ2 dei due giunti (cinematica inversa).
Considerando la Figura 24.2, conoscendo tutti i lati del triangolo che si forma
con l1 ,l2 e x2 + y 2 possiamo determinare tramite il teorema del coseno l’angolo
π − θ2 :

Figura 24.2: Rappresentazione dei parametri in gioco.

l12 + l22 − (x2 + y 2 )


cos(π − θ2 ) =
2 · l12 · l22
Dato che cos(π − α) = −cos(α):
 
x2 + y 2 − l12 − l22 )
θ2 = arcos
2 · l12 · l22
Il calcolo precedente porta a due soluzioni che differiscono tra di loro per il
segno. Si parla infatti di configurazione a gomito alto e gomito basso.

Figura 24.3: Sono due le configurazioni che portano ad uno stesso


risultato.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

24.3. METODO DI DENAVIT - HARTEMBERG 169

Nei casi in cui si hanno più soluzioni viene scelta quella più adatta (non tutte
le soluzioni sono ammissibili). Per calcolare θ1 non si hanno ambiguità, infatti
guardado la Figura 24.3 si può notare che in tutte e due le configurazioni assume
lo stesso valore. Quindi si può procedere nel seguente modo:
y  
l2 · sin(θ2 )
θ1 = (α + θ1 ) − α = arctan − arctan
x l1 + l2 · cos(θ2 )
Non sempre le equazioni della cinematica inversa sono lineari e quindi è possi-
bile determinare direttamente i valori dei giunti. Ciò comporta la necessità di
utilizzare tecniche numeriche che richiedono più tempo computazionale per il
calcolo dei giunti.

24.3 Metodo di Denavit - Hartemberg


24.3.1 Catena cinematica aperta
Una catena cinematica in cui vi è una sola sequenza di bracci a connettere
i due estremi della catena viene detta catena cinematica aperta. In questo
caso il primo estremo è l’ancoraggio a terra, mentre il secondo è l’utensile del
robot. Per calcolare l’equazione cinematica diretta di questo tipo di catena
è necessario delineare un metodo generale e sistematico per definire posizione
ed orientamento relativo di due bracci consecutivi. Tale metodo viene detto
metodo di Denavit-Hartemberg.

24.3.2 Rototraslazione nei giunti estremi di un link

Figura 24.4: Metodo di Denavit Hartembeberg descritto tramite


matrici di rototraslazione rispetto alla terna corrente.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

170 CAPITOLO 24. CINEMATICA DIRETTA DEI MANIPOLATORI

Per descrivere come è fatto un link ci interessa principalmente la posizione rela-


tiva dal giunto a monte a quello a valle del link. Questa descrizione viene fatta
tramite rototraslazione per far coincedere il sistema di riferimento del primo
giunto con il secondo.
Le operazioni svolte sono, nell’ordine:

• Rotazione Rx di angolo αi−1 (i−1


R H).

• Traslazione Tx di lunghezza ai−1 (R


Q H).

• Rotazione Rz di angolo θi (Q
P H).

• Traslazione Tz di lunghezza di (P
i H).
i−1
La matrice i risulta quindi essere fatta nel seguente modo:
H
   
1 0 0 0 1 0 0 ai−1
0 cos(αi−1 ) −sin(αi−1 ) 0 0 1 0 0 
i−1
H=  
0 sin(αi−1 ) cos(αi−1 ) 0 · 0 0 1
·
i 0 
0 0 0 1 0 0 0 1
   
cos(θi ) −sin(θi ) 0 0 1 0 0 0
sin(θi ) cos(θi ) 0 0 0 1 0 0 
·
 0
· 
0 1 0  0 0 1 d i 
0 0 0 1 0 0 0 1
 
cos(θi ) −sin(θi ) 0 ai−1
sin(θi ) · cos(αi−1 ) cos(θi ) · cos(αi−1 ) −sin(αi−1 ) −sin(αi−1 ) · di 

= 
sin(θi ) · sin(αi−1 ) cos(θi ) · sin(αi−1 ) cos(αi−1 ) cos(αi−1 ) · di 
0 0 0 1

24.3.3 Rototraslazione nei link


Per ottenere le informazioni in un link N partendo dal link 0 è necessario eseguire
la rototraslazione tra i giunti di tutti i link, come fatto prima. Una volta trovate
le matrici i−1
i H, dove i − 1 è l’i − 1-esimo link, si moltiplicano tra loro partendo
dal link 0 fino al link N:

0
HN =01 H ·12 H · ...N
N −1
H
Questo metodo permette quindi, a partire dai valori dei giunti, di calcolare la
posizione e orientamento dell’end effector (cinematica diretta).

24.3.4 L’algoritmo di Denavit-Hartemberg


In riferimento alla Figura 24.5, si può descrivere l’algoritmo di Denavit-Hartemberg
tramite i seguenti passi:

1. Con il robot in posizione di riposo, si determina (x0, y0, z0).

2. Per i = 1, ..., n − 1 si ripetono i passi seguenti:

(a) Si stabilisce l’asse del giunto i + 1 su zi .

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

24.3. METODO DI DENAVIT - HARTEMBERG 171

(b) Si posiziona l’origine Oi nel punto di intersezione tra zi e zi−1 oppure


nel punto di intersezione del segmento di minima distanza fra gli assi
stessi, con zi . Se zi e zi−1 sono paralleli, si sceglie come segmento di
minima distanza quello che è collinare con quello del link precedente.
(c) Si determina xi sulla direzione del segmento di minima distanza
oppure nella direzione del link, orientato verso la mano del robot.
(d) Si determina l’asse yi con la regola della mano destra.
3. Si stabilisce il sistema di riferimento n-esimo della mano.
4. Si trovano i parametri iterando per i = 1, ..., n i passi seguenti:
(a) Si trova ai come segmento di minima distanza fra zi e zi−1 . Questo
parametro si suppone noto e costante.
(b) Si trova αi come angolo di rotazione tra zi−1 e zi attorno all’asse xi .
Questo parametro si suppone noto e costante.
(c) Si trova di come distanza dall’origine del sistema i − 1 all’intersezione
del segmento ai con l’asse zi−1 .
(d) Si trova θi come angolo di rotazione tra xi−1 e xi attorno all’asse
zi−1 .

Figura 24.5: Schema generale di due link planari collegati.

24.3.5 Cinematica diretta


Sia data la matrice H di esempio delle rototraslazioni dei link:

H = H60 = H10 · H21 · H32 · H43 · H54 · H65


Siano dati i valori degli angoli dei giunti θ1 , ..., θ6 . La matrice:

H60 = H(θ1 , θ2 , θ3 , θ4 , θ5 , θ6 )
rappresenta la posizione e l’orientamento dell’end-effector. Per esprimere le
coordinate del punto P6 , espresse nel sistema di riferimento dell’end-effector,
rispetto al sistema fisso si può utilizzare la seguente formula:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

172 CAPITOLO 24. CINEMATICA DIRETTA DEI MANIPOLATORI

P0 = H · P6

24.4 Esempi
Gli esempi riportati in seguito utilizzano una convenzione di Denavit-Hartenberg
diversa da quella illustrata e quindi le matrici di rototraslazione dei link avranno
una forma diversa. In particolare esistono 2 tipi di convenzioni. Per maggiori
informazioni e per visionare la struttura della matrice utilizzata negli esempi vi-
sitare: https://en.wikipedia.org/wiki/Denavit-Hartenberg_parameters

24.4.1 Manipolatore a gomito planare

Figura 24.6: Schema manipolatore a gomito planare.

Consideriamo i due link planari di Figura 24.6 con gli assi dei giunti z0 e z1
normali al foglio e stabiliamo il sistema fisso (x0 , y0 , z0 ) che ha origini nell’in-
tersezione tra l’asse z0 e il foglio, come mostrato. Una volta stabilito il sistema
di origine il sistema (x1 , y1 , z1 ) è fissato dalla convenzione D-H, dove l’origine
viene localizzata dall’intersezione tra l’asse z1 e il foglio. Il sistema di riferimen-
to finale (x2 , y2 , z2 ) è fissato all’origine O2 alla fine della link 2. I parametri in
gioco sono quindi i seguenti:

Link ai αi di θi
1 a1 0 0 θ1
2 a2 0 0 θ2

con cui, tramite la cinematica diretta, è possibile determinare posizione e orien-


tamento dell’end effector O2 . αi = 0 perchè gli assi zi presentano lo stesso
orientamento (uscenti dal foglio) mentre di = 0 perchè il robot è planare, quindi
i link sono tutti sullo stesso piano.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

24.4. ESEMPI 173

24.4.2 Manipolatore RR

Figura 24.7: Schema manipolatore RR.

Il manipolatore RR (dove R sta per rotazione) presenta uno spazio di lavoro che
è la superficie interna di una sfera. I parametri in gioco sono i seguenti:

Link li αi di θi
1 0 90◦ d1 θ1
2 l2 0 0 θ2

Per cui la matrice delle rototraslazioni dei link risulta:

H = H10 · H21 =
   
cos(θ1 ) 0 sin(θ1 ) 0 cos(θ2 ) −sin(θ2 ) 0 l2 · cos(θ2 )
sin(θ1 ) 0 −cos(θ1 ) 0 sin(θ2 ) cos(θ2 ) 0 l2 · sin(θ2 )
 · 
 0 1 0 d1   0 0 1 0 
0 0 0 1 0 0 0 1

24.4.3 Manipolatore RT

Figura 24.8: Schema manipolatore RT.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

174 CAPITOLO 24. CINEMATICA DIRETTA DEI MANIPOLATORI

Questo manipolatore ha uno spazio di lavoro che è un cerchio e presenta i


seguenti parametri:

Link li αi di θi
1 0 90◦ d1 θ1
2 0 0 d2 0

Per cui la matrice delle rototraslazioni dei link risulta:


   
cos(θ1 ) 0 sin(θ1 ) 0 1 0 0 0
sin(θ1 ) 0 −cos(θ1 ) 0  0
0 1 
H = H1 · H 2 =   · 0 1 0 
0 1 0 d1   0 0 1 d2 
0 0 0 1 0 0 0 1

24.4.4 Manipolatore TR

Figura 24.9: Schema manipolatore TR.

I parametri di questo manipolatore sono:

Link li αi di θi
1 0 90◦ d1 0
2 l2 0 0 θ2

Per cui la matrice delle rototraslazioni dei link risulta:

   
1 0 0 0 cos(θ2 ) −sin(θ2 ) 0 l2 · cos(θ2 )
 0 0 −1 0  sin(θ2 ) cos(θ2 ) 0 l2 · sin(θ2 )
H = H10 · H21 = 
0
· 
1 0 d1   0 0 1 0 
0 0 0 1 0 0 0 1

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

24.4. ESEMPI 175

24.4.5 Manipolatore TT

Figura 24.10: Schema manipolatore TT.

I parametri di questo manipolatore sono:

Link li αi di θi
1 l1 90◦ 0 0
2 l2 0 0 0

Per cui la matrice delle rototraslazioni dei link risulta:


   
1 0 0 0 1 0 0 0
0 0 −1 0  0 1 0 0
H = H 1 · H2 = 
0 1  
 0 1 0 d1  · 0 0

1 d2 
0 0 0 1 0 0 0 1

24.4.6 Robot SCARA

Figura 24.11: Schema manipolatore SCARA.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

176 CAPITOLO 24. CINEMATICA DIRETTA DEI MANIPOLATORI

Il robot SCARA presenta le seguenti variabili di giunto : θ1 , θ2 , d3 e θ4 . Per


semplicità è posto il sistema di riferimento 4 sulla pinza. In questo caso z2 , z3 ,z4
sono coincidenti. I parametri di questo manipolatore sono:

Link li αi di θi
1 l1 0 0 θ1
2 l2 π 0 θ2
3 0 0 d3 0
4 0 0 d4 θ4

24.5 Convenzione per la mano


Si considera l’oggetto da manipolare con un sistema di riferimento, con origine
in un punto dell’oggetto, con gli assi orientati in modo identico a quello del
sistema di riferimento assoluto mentre per quanto rigurada la mano:
• L’origine del sistema di riferimento viene posta tra le «dita della mano».
• L’asse y viene posto lungo la direzione di scorrimento (sliding) delle dita,
ovvero lungo l’asse di chiusura delle pinze.
• L’asse z viene posto lungo la direzione di avvicinamento della pinza all’og-
getto.

Figura 24.12: Convenzione mano del robot.

24.6 Rindondanze e degenerazioni


Un robot viene detto rindondante quando può raggiungere una posizione con
più di una configurazione. Per robot con più di 6 gradi di libertà si hanno sempre
ridondanze. Tali manipolatori vengono detti infinitamente ridondanti. Avere
robot ridondanti è comodo, da un lato, perché ci permette di evitare ostacoli o
raggiungere posizioni vincolate.
Se esiste un numero infinito di configurazioni per raggiungere una posizione, tale
posizione si dice punto di degenerazione. La possibilità di raggiungere una
posizione con più di una configurazione porta problemi nella cinematica inversa
in quanto si otterrano diverse soluzioni.
Ad esempio il robot in Figura 24.13 presenta due assi z collineari è cio comporta
questo manipolatore ad essere degenere.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

24.6. RINDONDANZE E DEGENERAZIONI 177

Figura 24.13: Polso del Puma, un manipolatore degenere.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

178 CAPITOLO 24. CINEMATICA DIRETTA DEI MANIPOLATORI

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 25

Cinematica inversa

25.1 Introduzione
Data la matrice H delle rototraslazioni dei link, la posizione e l’orientamento
dell’end-effector, bisogna determinare i valori corrispondenti degli angoli dei
giunti θi o delle traslazioni nel caso i giunti traslino. Con questa operazione non
è garantita né l’esistenza ne l’unicità della soluzione cinematica inversa. Infatti
se il punto da raggiungere è nello spazio di lavoro e il robot ha 6 gradi di libertà
allora sappiamo che esiste una soluzione. Nel caso invece il punto è nello spazio
di lavoro ma il robot ha meno di 6 gradi di libertà, occorre verificare che il punto
sia raggiungibile. Determinare con sicurezza se un punto è o meno nello spazio
di lavoro del robot può non essere semplice.

25.2 Molteplici soluzioni


Nel caso ci siano più soluzioni possibili, tutte risultano di interesse, perchè bi-
sogna determinare quale risulta essere la migliore. Ad esempio, un criterio di
scelta potrebbe esesere quello di minimizzare i movimenti dei giunti facendo una
somma pesata degli spostamenti, assegnando pesi maggiori ai giunti più vicini
alla base. La somma minima trovata individua la soluzione da attuare. La
molteplicità delle soluzioni tavolta è utile perchè permette al robot di evitare
degli ostacoli. A parità di gradi di libertà, il numero delle soluzioni dipende
dalle caratteristiche della struttura. In generale si può affermare che maggiore
è il numero dei parametri caratteristici non nulli e maggiore sarà il numero di
soluzioni al problema.

25.3 Metodi di risoluzione


I metodi di risoluzione per la cinematica inversa si suddividono in:

• Metodi per il calcolo della soluzione in forma chiusa: sono metodi in


grado di fornire una soluzione esatta. Essi posso essere:

– Metodi analitici.
– Metodi geometrici.

179

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

180 CAPITOLO 25. CINEMATICA INVERSA

• Metodi per il calcolo della soluzione numerica: si ha un tempo di ese-


cuzione indefinito se si vuole un errore definito oppure un errore indefinito
se si vuole un tempo di esecuzione definito.
– Metodi iterativi (ottimizzazione).
– Metodi incrementali (inversione matrice).

25.4 Calcolo della soluzione in forma chiusa


25.4.1 Metodo analitico
La matrice delle rototraslazioni H è in funzione dei valori dei giunti e va ugua-
gliata alla matrice che definisce la posizione e l’orientamento dell’end-effector.
Da questa ugualianza si scrivono le equazioni dalle quali si ricavano i valori dei
giunti. Ad esempio, si consideri un semplice manipolatore planare RRR con tre
gradi di libertà.

Figura 25.1: Un robot manipolatore planare con 3 gradi di libertà.

Data la posizione (x, y) e l’orientamento φ del polso, rispetto all’asse z, calcolare


i valori dei giunti θ1 , θ2 e θ3 . La matrice delle rototraslazioni dei link è funzione
degli angoli θ1 , θ2 e θ3 e va egualiata alla matrice che definisce la posizione e
l’orientamento dell’end-effector:

 
cos(θ1 + θ2 + θ3 ) −sin(θ1 + θ2 + θ3 ) 0 l1 · cos(θ1 ) + l2 · cos(θ1 + θ2 )
 sin(θ 1 + θ2 + θ3 ) cos(θ1 + θ2 + θ3 ) 0 l1 · sin(θ1 ) + l2 · sin(θ1 + θ2 )
H30 = 



0 0 1 0
0 0 0 1
 
cos(φ) −sin(φ) 0 x
sin(φ) cos(φ) 0 y
=
 0

0 1 0
0 0 0 1
Si noti che la direzione z non viene considerata in quanto non c’è una variazione
di quota. Confrontando le due matrici si possono scrivere le seguenti equazioni:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

25.4. CALCOLO DELLA SOLUZIONE IN FORMA CHIUSA 181



x = l1 · cos(θ1 ) + l2 · cos(θ1 + θ2 )
y = l1 · sin(θ1 ) + l2 · sin(θ1 + θ2 )


φ = θ1 + θ2 + θ3
Si considerino ora le prime due equazioni:

(
x2 = l12 · cos2 (θ1 ) + l22 · cos2 (θ1 + θ2 ) + 2 · l1 · l2 · cos(θ1 ) · cos(θ1 + θ2 )
y 2 = l12 · sin2 (θ1 ) + l22 · sin2 (θ1 + θ2 ) + 2 · l1 · l2 · sin(θ1 ) · sin(θ1 + θ2 )

che sommandole si ottiene:

x2 + y 2 = l12 + l22 + 2 · l1 · l2 · (cos(θ1 ) · cos(θ1 + θ2 ) + sin(θ1 ) · sin(θ1 + θ2 ))

Dato che per la formula di addizione del coseno:

cos(θ1 ) · cos(θ1 + θ2 ) + sin(θ1 ) · sin(θ1 + θ2 ) = cos(θ2 + θ1 − θ1 ) = cos(θ2 )

si ottiene:

x2 + y 2 = l12 + l22 + 2 · l1 · l2 · cos(θ2 )


da cui si può ricavare:

x2 + y 2 − l12 − l22
cos(θ2 ) =
2 · l1 · l2
con il vincolo
2
x + y 2 − l12 − l22
≤1
2 · l1 · l2

e quindi si possono ottenere due valori di θ2 . Riscrivendo le equazioni per x e


y, sfruttando le formule di addizione di seno e coseno:

x = l1 · cos(θ1 ) + l2 · cos(θ1 + θ2 ) =
= l1 · cos(θ1 ) + l2 (cos(θ1 ) · cos(θ2 ) − sin(θ1 ) · sin(θ2 )) =
= (l1 + l2 · cos(θ2 )) · cos(θ1 ) − l2 · sin(θ1 ) · sin(θ2 )

y = l1 · sin(θ1 ) + l2 · sin(θ1 + θ2 ) =
= l1 · sin(θ1 ) + l2 (sin(θ1 ) · cos(θ2 ) + cos(θ1 ) · sin(θ2 )) =
= l2 · cos(θ1 ) · sin(θ2 ) + (l1 + l2 · cos(θ2 )) · sin(θ1 )
In forma matriciale diventa:
     
x l + l2 · cos(θ2 ) −l2 · sin(θ2 ) cos(θ1 )
= 1 ·
y l2 · sin(θ2 ) l1 + l2 · cos(θ2 ) sin(θ1 )

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

182 CAPITOLO 25. CINEMATICA INVERSA

Invertendo la matrice:
 
cos(θ1 )
=
sin(θ1 )
   
1 l + l2 · cos(θ2 ) l2 · sin(θ2 ) x
= · 1 ·
(l1 + l2 · cos(θ2 ))2 + l22 · sin2 (θ2 ) −l2 · sin(θ2 ) l1 + l2 · cos(θ2 ) y
Dal rapporto tra sin(θ1 ) e cos(θ2 ) si ottiene:
 
−l2 · sin(θ2 ) · x + (l1 + l2 · cos(θ2 )) · y
θ1 = arctan
(l1 + l2 · cos(θ2 )) · x + l2 · sin(θ2 ) · y
E quindi:

θ3 = φ − θ1 − θ2

25.4.2 Metodo geometrico


Sfrutta la struttura geometrica del robot per determinare i valori dei giunti.
Prendiamo sempre come esempio il manipolatore planare RRR e consideriamo
i parametri in Figura 25.2.

Figura 25.2: Struttura geometrica di un robot manipolatore


planare con 3 gradi di libertà.

Dal teorema di pitagora si ricava:

d2 = x2 + y 2
mentre dal teorema di Carnot si ricava:

d2 = l12 + l22 − 2 · l1 · l2 · cos(π − θ2 )


dato che cos(π − θ2 ) = −cos(θ2 ) si può ricavare θ2 come:

x2 + y 2 − l12 − l22
cos(θ2 ) =
2 · l1 · l2

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

25.4. CALCOLO DELLA SOLUZIONE IN FORMA CHIUSA 183

come per il metodo analitico. Per calcolare θ1 possiamo osservare che:


π
θ1 = − (α + β)
2
dove:
y
α = arctan
x
e, sfruttando ancora il teorema di Carnot:

l12 + d2 − l22
cos(β) =
2 · l1 · d

25.4.3 Metodo di Paul


Il metodo di Paul è un metodo generico per semplificare le equazioni in forma
chiusa. Data la matrice

T = H60 = H10 · H21 · H32 · H43 · H54 · H65 = H(θ1 , θ2 , θ3 , θ4 , θ5 , θ6 )


prevede i seguenti passaggi:

1. Uguagliare la matrice T , ovvero la matrice delle variabili cartesiane, alla


matrice di trasformazione del manipolatore H.

2. Cercare nella seconda matrice:

• Gli elementi che contengono una sola variabile di giunto.


• Le coppie di elementi che danno un’espressione in una sola variabile
di giunto quando vengono divisi tra loro.
• Gli elementi che possono essere semplificati.

3. Si uguagliano questi elementi ai corrispondenti ottenendo un’equazione la


cui soluzione dà un legame fra una variabile di giunto ed elementi noti di
T.

4. Se non si riescono ad identificare elementi al passo 2:

• si pre-moltiplica entrambi i termini per l’inversa della matrice H del


primo link ottenendo un nuovo insieme su cui operare. Si ripete per
tutti i link.
• Alternativamente si post-moltiplica per l’inversa della matrice H del-
l’ultimo link.

25.4.4 Metodi di risoluzione


In genere risulta molto difficile risolvere delle equazioni trascendenti (ovvero
equazioni in cui l’incognita compare all’esponente di una potenza oppure nel-
l’argomento di una funzione logaritmica o goniometrica), in quando la variabile
θ appare come cos(θ) e sin(θ). Per semplificare i calcoli della forma chiusa, si
possono applicare delle formule di approssimazione basate su:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

184 CAPITOLO 25. CINEMATICA INVERSA

 
θ
u = tan
2
da cui:
(
1−u2
cos(θ) = 1+u2
2u
sin(θ) = 1+u2

25.4.5 Caso generale: Manipolatore a 6 gdl


Si eguaglia la matrice nota T della mano (che contiene le coordinate cartesiane)
con la sua espressione simbolica (che contiene le matrici H che dipendono dalle
6 variabili di giunto). Si ottengono 12 equazioni in 6 incognite. Le 9 equazio-
ni della componente di rotazione non sono indipendenti quindi si ottengono 6
equazioni trascendenti in 6 incognite (le variabili di giunto). In genere è difficile
trovare una soluzione diretta isolando le incognite.

25.4.6 Caso particolare: Tre assi intersecanti


La condizione sufficiente per trovare una soluzione in forma chiusa è che il robot
deve avere tre giunti di rotazione consecutivi con gli assi che si intersecano in
un punto (condizione di Pieper) come avviene in Figura 25.3.

Figura 25.3: Robot manipolatore antropomorfo la cui mano


presenta 3 assi intersecati.

In un robot antropomorfo se abbiamo 6 giunti di rotazione si può suddividere il


problema in 2 sottoproblemi:

• Dove gli assi sono intersecati, si risolve trovando la soluzione in forma


chiusa.

• I restanti 3 giunti tramite altre tecniche come il metodo di Paul.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

25.4. CALCOLO DELLA SOLUZIONE IN FORMA CHIUSA 185

Figura 25.4: Decomposizione di un robot a 6 gdl in due sistemi.

In particolare si vuole capire, data la posizione desiderata dell’end effector, dove


si trova il centro del polso. In base a questa soluzione si vogliono ricavare i valori
dei giunti del polso:
• La posizione del centro del polso pc si trova dalla posizione della mano e
dalla direzione di approccio z6 .
• La posizione dipende dalle prime tre variabili di giunto: ci sono tre equa-
zioni in tre incognite che risolviamo per θ1 , θ2 e θ3 .
• L’orientamento è funzione delle ultime tre variabili θ4 , θ5 e θ6 .

T = H60 = H30 (θ1 , θ2 , θ3 ) · H63 (θ4 , θ5 , θ6 )


L’algoritmo per il calcolo della posizione del polso è il seguente:

pc = Pxyz − d6 · Rz
dove Pxyz è la quarta colonna di T , Rz è la terza colonna di T e d6 è la distanza
dal punto di lavoro al centro del polso. Successivamente si mette in relazione
pc con la matrice di rototraslazione e si risolvono i primi tre giunti:

pc = quarta colonna di H30 (θ1 , θ2 , θ3 )


Usando le soluzioni del passo precedente si calcola la matrice di rotazione
R30 (θ1 , θ2 , θ3 ). A questo punto si può calcolare R63 come:

R63 = R30 · R60


Si eguaglia R63 così calcolato a R63 (θ4 , θ5 , θ6 ) e, da questo, si ricavano θ4 , θ5 e
θ6 . Questa operazione richiede di calcolare la cinematica inversa per gli angoli
di Eulero.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

186 CAPITOLO 25. CINEMATICA INVERSA

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 26

Cinematica differenziale

26.1 Introduzione
La cinematica differenziale prende in considerazione le velocità dei movimenti.
Conoscendo la velocità dei giunti, con la cinematica differenziale si vuole cal-
colare la velocità dell’utensile. La soluzione di questo problema viene di solito
data sotto forma di una matrice, detta jacobiano del manipolatore.

26.2 Jacobiano
Supponiamo di avere un robot planare RR come in Figura 26.1.

Figura 26.1: Robot RR con 2 gradi di libertà.

La posizione dell’end-effector abbiamo visto che può essere calcolata come:


(
x = a1 · cos(θ1 ) + a2 · cos(θ1 + θ2 )
y = a1 · sin(θ1 ) + a2 · sin(θ1 + θ2 )
Derivando rispetto al tempo si ottiene:
(
ẋ = −a1 · sin(θ1 ) · θ˙1 − a2 · sin(θ1 + θ2 ) · (θ˙1 + θ˙2 )
ẏ = a1 · cos(θ1 ) · θ˙1 + a2 · cos(θ1 + θ2 ) · (θ˙1 + θ˙2 )
dove:
• ẋ e ẏ sono le velocità dell’utensile lungo l’asse x e y.

187

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

188 CAPITOLO 26. CINEMATICA DIFFERENZIALE

• θ˙1 e θ˙2 sono le velocità dei due giunti del robot.

In forma matriciale, questo può essere scritto come:


     
ẋ −a1 · sin(θ1 ) − a2 · sin(θ1 + θ2 ) −a2 · sin(θ1 + θ2 ) θ˙
= · ˙1
ẏ a1 · cos(θ1 ) + a2 · cos(θ1 + θ2 ) a2 · cos(θ1 + θ2 ) θ2
La matrice 2x2 non è una matrice costante poichè dipende da θ1 e θ2 che variano
con il movimento del robot. Essa prende il nome diJacobiano J:
   
ẋ θ˙
= J · ˙1
ẏ θ2
Quindi J va ricalcolato quando la posizione del robot cambia e da come si è
potuto vedere vale:

∂H
J=
∂θ
Nel caso abbiamo che l’end-effector ha 6 gradi di libertà e il robot presenta 6
giunti possiamo scrivere:
   
ẋ θ˙1
 
 ẏ 
  θ˙2 
 
 ż 
 =J · θ˙3 
ψ̇   
  θ˙4 
 θ̇   
θ˙5 
ϕ̇ θ˙6
Da notare che nel caso l’end-effector avesse solo 5 gradi di libertà e il robot
presenti 6 giunti otteniamo:
 
  θ˙1
ẋ θ˙ 
 ẏ   2
  ˙
 ż  = J ·  θ3 
  ˙
ψ̇   θ 
 ˙4 
 θ5 
θ̇
θ˙6
Quindi lo Jacobiano risulta una matrice rettangolare (5 × 6)

26.3 Moto differenziale


Si parla di moto differenziale quando una variazione angolare dei giunti del robot
causa una variazione di posizione ed orientamento dell’end-effector. Quindi
possiamo affermare che data la cinematica di un robot, ad esempio con 6 gdl,
e data una particolare configurazione dei giunti (θ1 , θ2 , θ3 , θ4 , θ5 , θ6 ) è possibile
calcolare lo Jacobiano J per tale configurazione. Infine data una variazione
differenziale dei giunti (δθ1 , δθ2 , δθ3 , δθ4 , δθ5 , δθ6 ) (δθ1 = θ˙1 ) è possibile calcolare
la variazione differenziale corrispondente dell’end effector (δx, δy, δz, δψ, δθ , δϕ).
Per piccole variazioni δ dei parametri di rotazione e di traslazione è possibile
fare le seguenti approssimazioni:

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

26.4. JACOBIANO INVERSO 189



sin(δθ) = δθ
cos(δθ) = 1

 2
δθ , δθ · δϕ, ... = 0
Normalmente, per calcolare la matrice H è fondamentale l’ordine con cui vengo-
no effettuate le moltiplicazioni. Se, però, vengono mantenute valide le appros-
simazioni riportate, allora è indifferente l’ordine di moltiplicazione delle varie
matrici di rotazione.

26.4 Jacobiano inverso


Lo Jacobiano inverso viene utilizzato nella cinematica differenziale inversa. Qua-
lora il numero di gradi di libertà dell’end-effector è uguale al numero di giunti del
robot (ovvero la matrice J è quadrata), allora lo Jacobiano può essere invertibile.
Se lo Jacobiano è invertibile, allora si può calcolare:

θ̇ = J −1 ẋ
Nel caso di robot RR rappresentato in Figura 26.1 lo Jacobiano inverso sarà:
1
J −1 = ·
a1 · a2 · sin(θ2 )
·  
a2 · cos(θ1 + θ2 ) a2 · sin(θ1 + θ2 )
−a1 · cos(θ1 ) − a2 · cos(θ1 + θ2 ) −a1 · sin(θ1 ) − a2 · sin(θ1 + θ2 )
Anche se la J è quadrata non è detto che essa possa essere invertita. Infatti
considerando il robot RR nella configurazione in Figura 26.2 si può notare che
θ2 = 0 ciò comporta che sin(θ2 ) = 0 non rendendo lo Jacobiano invertibile
(matrice singolare, ovvero il determinante è nullo).

Figura 26.2: Robot RR con 2 gradi di libertà in configurazione con


θ2 = 0.

Bisogna quindi prestare attenzione ai movimenti del robot per evitare le singo-
larità.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

190 CAPITOLO 26. CINEMATICA DIFFERENZIALE

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 27

Metodi iterativi per la


cinematica inversa

27.1 Introduzione
Come abbiamo già visto non sempre è possibile determinare una soluzione in
forma chiusa. Questo perchè il sistema potrebbe essere descritto da funzioni
trascendenti, ovvero funzioni in cui è difficile isolare la variabile che descrive i
valori dei vari giunti del robot. Possiamo però utilizzare delle tecniche che ci
consentino di trovare una soluzione che si avvicini a quella cercata.

27.2 Gradient descent


Vogliamo trovare il valore di x che permette di ottenere un valore target g:

f (x) = g
Per fare questo si parte da un certo valore x0 e, tramite piccoli passi si itera

xi+1 = xi + ∆x
fino a quando si trova un valore xN che soddisfa f (xN ) = g a meno di un certo
errore. Per ogni passo si cerca di scegliere un valore di ∆x che permette di
avvicinarsi sempre di più al valore goal g. Possiamo utilizzare la derivata per
approssimare la funzione nella zona di interesse ed utilizzare questa informazione
per capire la direzione di crescenza e/o decrescenza. Il gradient descent è quindi
un metodo che permette di raggiungere un obbiettivo in modo asintotico.

27.2.1 Esempio
Consideriamo la situazione rappresentata in Figura 27.1 dove abbiamo un solo
link e un solo giunto. Supponiamo che ci interessi solo la coordinata x. Dalla
cinematica diretta determiniamo H:

x = l · cos(q)

191

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

192 CAPITOLO 27. METODI ITERATIVI PER LA C.I.

Dalla cinematica differenziale possiamo ricavare lo Jacobiano:

dx
= −l · sin(q)
dq
da cui:

δx = −l · sin(q)δq

e quindi lo Jacobiano inverso risulta:

1
δq = − · δx
l · sin(q)

Figura 27.1: L’end-effector evidenziato in rosso deve raggiungere


la posizione target.

Supponiamo di voler muovere l’end-effector nella posizione xg . Le soluzioni


possono essere le due seguenti:
x
• qg = arccos( lg ). Questa è la soluzione in forma chiusa, che però per robot
complessi non si riesce a trovare.

• Con il metodo iterativo gradient descent:

1. i = 0, q0 = arbitrario: inizializzazione del metodo.


2. xi = l · cos(qi ): calcolo la coordinata attuale.
3. δx = α(xg − xi ): calcolo l’errore con un fattore moltiplicativo. E’
un fattore che stabilisce la lunghezza del passo per arrivare all’ob-
biettivo e va scelto con criterio (Passi piccoli mi avvicino lentamente
ma in modo più preciso, mentre per passi grandi ci si avvicina più
velocemente commettendo però un errore più elevato).
1
4. δq = −l·sin(q i)
· δx: Si calcola la variazione da apportare al parametro
di interesse.
5. qi+1 = qi + δq: Si aggiorna il parametro.
6. i + +, goto 2: Posso fermarmi quando ho raggiunto un certo errore
o dopo un numero finito di passi.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

27.3. INVERTIRE LO JACOBIANO 193

Figura 27.2: Schema di controllo in retroazione del gradient


descent.

Come mostrato dallo schema di controllo in retroazione, tutto il sistema funziona


solamente se si riesce a calcolare lo Jacobiano inverso.

27.3 Invertire lo Jacobiano


Se lo Jacobiano è quadrato, ovvero il numero dei giunti è pari ai gradi di libertà
dell’end-effector, è possibile determinare il suo inverso. Nel caso però la matrice
sia singolare questo non è più possibile. Inoltre una volta invertita la matrice, se
la posizione dell’end-effector cambia, è necessario ricalcolare lo Jacobiano, che
potrebbe non essere più invertibile perchè diventato singolare o perchè si trova
vicino alla singolarità. Basarsi sull’inversione della matrice Jacobiana quindi
potrebbe non portare a dei risultati.

27.3.1 Sistemi sottovincolati


Se il sistema ha più giunti rispetto ai gradi di libertà nell’end-effector è probabile
che si abbiano delle soluzioni rindondanti, potenzialmente infinite. In questa
situazione si dice che il sistema è sotto-vincolato o rindondante. Trovare la
soluzione in questi sistemi potrebbe non essere troppo complicato, ma potrebbe
essere difficile trovare la soluzione migliore.

27.3.2 Sistemi sovra-vincolati


Se il numero dei gradi di libertà dell’end-effector è maggiore del numero dei
giunti del sistema, tale sistema viene detto sovra-vincolato ed ha la possibilità di
non avere alcuna soluzione. In questi casi potremmo comunque voler avvicinarsi
il più possibile ad una soluzione. Tuttavia questo tipo di sistemi non sono cosi
comuni, in quanto non sono un modo utile per costruire un robot (fatta eccezione
per alcuni casi particolari).

27.3.3 Sistemi correttamente vincolati


Se il numero dei gradi di libertà dell’end-effector è uguale al numero dei giunti
del sistema, il sistema potrebbe essere correttamente vincolato è invertibile. In
pratica, questo richiede che i giunti siano collegati in modo da avere gli assi
non ridondanti. Questa proprietà può variare durante i movimenti del robot, e
anche sistemi vincolati potrebbero avere problemi.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

194 CAPITOLO 27. METODI ITERATIVI PER LA C.I.

27.3.4 Pseudo-inversa
Se abbiamo un matrice non quadrata, derivante da un sistema sotto-vincolato
o sopra-vincolato, possiamo usare la pseudo inversa:

Jp = (J T J)−1 J T

27.3.5 Jacobiana trasposta


Un’altra tecnica, quando non si può calcolare l’inversa dello Jacobiano, è quella
di utilizzare direttamente la matrice trasposta dello Jacobiano invece che la sua
inversa. Questa tecnica funziona abbastanza bene ed è anche molto più veloce
di quella che richiede di calcolare la matrice inversa.

27.4 Iterare verso la soluzione


Qualunque metodo venga utilizzato : J −1 , Jp o J T , deve affrontare poi il pro-
blema dell’iterazione verso la soluzione. In particolare bisogna determinare la
dimensione del passo β in modo appropriato, oltre che a decidere quando ter-
minare con le iterazioni. Sono tre le principali condizioni di stop di un metodo
iterativo:
• E’ stata trovata una soluzione, o una sua buona approssimazione. In gene-
rale, il sistema converge ad una soluzione partendo da una inizializzazione
q0 . Se tale valore è scelto «male» si potrebbe arrivare in un minimo locale
e quindi non si riesce a trovare una soluzione.
• Ci si blocca in una situazione che non è possibile migliorare, ovvero si è
arrivati in un minimo locale. Nel caso si arrivi in un minimo locale si
possono attuare diverse soluzioni. E’ possibile ad esempio accettare la
soluzione trovata oppure eseguire nuovamente il metodo iterativo con una
valore inziale scelto casualmente.
• Ci si impiega troppo tempo. In questo caso è possibile limitare il numero di
iterazioni oppure utilizzare un timer interno per fornire un tempo massimo
in secondi entro il quale ricercare la soluzione.
Tutte queste tre condizioni sono abbastanza semplici da rilevare.

27.5 Altri problemi della cinematica inversa


Altri problemi comuni della cinematica inversa sono:

• Limite dei giunti: i giunti non possono assumere tutti i valori e quindi
le funzioni su cui viene fatta la derivata risultano non essere continue.
• Non ripetibilità: non è frequente che, dato uno stesso obbiettivo, il
sistema lo raggiunga sempre nella stessa posa.
• End-effector multipli: in alcuni casi non si ha a disposizione un unico
utensile ma più di uno. In queste situazioni è molto più difficile trovare
una soluzione.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

27.5. ALTRI PROBLEMI DELLA CINEMATICA INVERSA 195

• Catene multiple: altra situazione complicata è quella in cui l’utensi-


le è collegato a due «catene» cinematiche. In questo caso si può gesti-
re la situazione considerando le due catene come se fossero tra di loro
indipendenti.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

196 CAPITOLO 27. METODI ITERATIVI PER LA C.I.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 28

Controllo assi

28.1 Introduzione
Un percorso è definito come una sequenza di configurazioni dei giunti di un
robot in un particolare ordine. Una traiettoria definisce la tempistica con cui
un percorso viene eseguito, cioè gli istanti in cui il robot deve raggiungere le
varie configurazioni del percorso.

28.2 Controllo
Il controllo di un robot può avvenire nello spazio cartesiano o nello spazio dei
giunti. Nel primo caso il sistema viene espresso in termini di coordinate car-
tesiane, nel secondo caso invece viene espresso in termini dei valori assunti dai
giunti.

Figura 28.1: A sinistra lo spazio cartesiano che risulta lineare, a


destra invece lo spazio dei giunti corrispondente che non risulta
lineare.

197

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

198 CAPITOLO 28. CONTROLLO ASSI

28.2.1 Controllo nello spazio cartesiano

Il controllo nello spazio cartesiano permette di espimere le traiettorie come fun-


zioni cartesiano del tempo. Uno dei principali svantaggi di adottare lo spazio
cartesiano è quello di non risultare efficiente in quanto occorre suddividere la
traiettoria del polso in tanti tratti e quindi calcolare la cinematica inversa ad
ogni punto intermedio. Inoltre può risultare pericoloso dato che è difficile ga-
rantire che una traiettoria non contenga punti singolari. Infine la traiettoria
potrebbe contenere punti intermedi che non appartengono allo spazio di lavo-
ro. In una situazione come questa il robot deve fermarsi bruscamente, e ciò
potrebbe provocare danni meccanici.

Figura 28.2: Traiettoria contenente punti intermedi non


raggiungibili.

Il controllore cartesiano usa il modello cinematico. Per considerare anche la velo-


cità è necessario lo Jacobiano per consentire il passaggio dalle variabili cartesiane
alle variabili di giunto e viceversa. Il calcolo dello Jacobiano come abbiamo visto
è pesante e critico.

Figura 28.3: In questo schema di controllo in anello chiuso si


confrontano la posizione e la velocità di riferimento con quelle
dell’end-effector.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

28.3. TRAIETTORIA DI UN SINGOLO ASSE 199

28.2.2 Controllo nello spazio dei giunti


Il controllo nello spazio dei giunti al contrario risulta essere efficiente perchè
richiede di calcolare la cinematica inversa solo dei punti di partenza e di arrivo
di una traiettoria. Risulta però complesso dato che la traiettoria del polso del
robot è difficilmente correlabile alla traiettoria dei giunti.

Figura 28.4: Schema di controllo nello spazio dei giunti.

In questo caso, lo schema di controllo è più semplice poichè si danno in input


al controllore i valori degli angoli e, quindi, si toglie al controllore il compito di
fare anche cinematica inversa.

28.3 Traiettoria di un singolo asse


Si consideri un robot con un solo grado di libertà come quello in Figura 28.5.

Figura 28.5: Robot con un solo grado di libertà.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

200 CAPITOLO 28. CONTROLLO ASSI

Secondo la cinematica, esiste una sola configurazione con la quale si può rag-
giungere il punto B. Essa però può essere raggiunta tramite due traiettorie
partendo dal punto A. Questo aspetto deve essere mantenuto in considerazione
perché, in alcuni casi, si potrebbe scegliere una traiettoria invece che l’altra al
fine di evitare un ostacolo.
La forma delle traiettorie può essere descritta in termini di funzioni degli angoli
di giunto θ(t). Tali funzioni possono anche essere, come visto in precedenza,
molteplici.

Figura 28.6: Diverse traiettorie descritte dai giunti in funzione del


tempo che portano alla stessa configurazione finale.

La derivata di tali funzioni ci permette di determinare la velocità dei giunti in un


certo istante di tempo. Come si può vedere in Figura 28.6 la traiettoria descritta
dal polinomio di terzo grado risulta essere la migliore dal punto di vista della
struttura meccanica del robot. Infatti tra la fase di accelerazione iniziale e quella
di decellerazione finale, il movimento raggiunge la massima velocità. E’ neces-
sario considerare che i motori non potranno fornire oltre ad un certo valore di
accelerazione e, di conseguenza, si dovranno escludere alcune traiettorie. Oltre
ai vincoli delle massime velocità dei motori, è necessario specificare dei vincoli
ulteriori per muovere un singolo giunto di rotazione tra due configurazioni in un
tempo definito:

• θ(0) = θi , θ̇(0) = 0: all’inizio il giunto deve valere θ0 con velocità nulla.

• θ(tf ) = θf , θ̇(tf ) = 0: alla fine il giunto deve valere θf con velocità nulla.

Un polinomio di terzo grado ha quattro coefficienti che soddisfano i 4 vincoli:

θ(t) = a0 + a1 t + a2 t2 + a3 t3
θ̇(t) = a1 t + 2a2 t + 3a3 t2
Sostituendo i valori dei vincoli nell’equazione si ottiene:


 θ(0) = θi → a0 + a1 · 0 + a2 · 0 + a3 · 0 = θi

θ̇(0) = 0 → a + 2a · 0 + 3a · 0 = 0
1 2 3
2 3


 θ(t f ) = θ f → a 0 + a t
1 f + a t
2 f + a 3 tf = θ f

˙
(tf ) = 0 → a1 + 2a2 tf + 3a3 t2f = 0

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

28.3. TRAIETTORIA DI UN SINGOLO ASSE 201


  

 a 0 = θi 
 a0 = θi 
 a0 = θi

 
 

a = 0  a1 =0  a1 =0
1
⇒ ⇒ a = t32 (θf − θi )
 2
2 2a2 3
 tf − 3tf · tf = θf − θi
a 
 a2 = t32 (θf − θi ) 
 2

 
 f 
 f
a3 = −2a2 a = −2a2  a3 = −2
(θf − θi )
3tf 3 3tf t3f

Nel caso più generale potremmo pensare che le velocità di partenza e di arrivo
non siano nulle. Si ottiene allora:


 a0 = θi



a1 = θ˙i
3(θf −θi )−(2θ˙i +θ˙f )·tf

 a2 = t2f



 a3 = 2(θi −θf )−(θ˙i +θ˙f )·tf
t3f

28.3.1 Punti di via


Un punto di via fornisce un vincolo del tipo:

θ̇(tvia ) = ω

Figura 28.7: Traiettoria con 2 punti di via.

Cioè impone che il giunto deve assumere un certa velocità in un certo istante.

28.3.2 Traittoria a velocità costante


Supponiamo di voler calcolare una traiettoria che abbia una velocità costante
V nella parte centrale.

Figura 28.8: Traiettoria con velocità costante nella parte centrale.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

202 CAPITOLO 28. CONTROLLO ASSI

Una funzione quadratica come questa richiede tre vincoli:


• 2 vincoli per il punto di partenza.
• 1 per la velocità costante alla fine del tratto.
Su questa traiettoria si ha una parte iniziale in cui ci si trova in una fase di
accelerazione, una parte costante ed una fase finale di decelerazione fino a fer-
marsi. Assumiamo che i tratti parabolici iniziali e finali siano simmetrici e che
si congiungano con il tratto lineare agli istanti tb e tf − tb . Avremo allora, sulla
base delle considerazioni fatte nella sezione precedente, i seguenti vincoli:
• θ(0) = θi : posizione iniziale.
• θ̇(0) = 0: velocità iniziale.
• θ̇(tb ) = ω: velocità costante al termine del primo tratto parabolico.
• θ̇(tf − tb ) = ω: velocità costante all’inizio del secondo tratto parabolico.
• θ(tf ) = θf : posizione finale.
• θ̇(tf ) = 0: velocità finale.
Identifichiamo ora le equazioni di alcuni tratti particolari:
• Rampa di salita: è una parabola, quindi è sufficiente utilizzare una
traiettoria quadratica:

( 
1
θt (t) = a0 + a1 t + 2 a2 t 2  a0 = θi 1ω 2
⇒ a1 = 0 ⇒ θ(t) = θi + t
θ̇(t) = a1 + a2 t 
 ω
2 tb
a2 = tb

Alla fine della rampa di salita la posizione risulterà:

1ω 2
θ(tb ) = θi + t
2 tb b
• Tratto rettilineo: è una retta, quindi la distanza percorsa sarà pari a:

((tf − tb ) − tb ) · ω = (tf − 2tb ) · ω


• Rampa di discesa: data la simmetria con la rampa di salita, lo spazio
percorso sarà il medesimo:

1ω 2
t
2 tb b
Componendo i tre tratti si ottiene la posizione finale:
1ω 2 1ω 2
θf = θi + t + (tf − 2tb ) · ω + t
2 tb b 2 tb b
Data la velocità ω desiderata nel tratto rettilineo e il tempo entro il quale si
vuole compiere il movimento è possibile determinare:
θ i − θ f + ω · tf
tb =
ω

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 29

Controllo in forza

29.1 Introduzione
Un robot, tramite l’utensile, può interagire con l’ambiente:
• Modificando lo stato del sistema (es. operazioni di spostamento oggetti).
• Scambiando forze (es. operazioni di assemblaggio o rifinitura superficiale).
Si può classificare il robot in base a come lavora in:
• Attivi: il robot viene mosso da una legge di controllo in modo che pos-
sa reagire in un modo appropriato a forze che vengono ad esso applica-
te. Generalmente tali forze vengono prima misurate tramite un sensore
o tramite rilevazioni di coppia. Tipicamente queste misure vengono fat-
te perché si vuole controllare la forza/coppia scambiata con l’ambiente o
semplicemente mantenerla limitata.
• Passivi: l’utensile del robot è equipaggiato con dispositivi meccatronici
che compensano le forze generalizzate applicate al robot che quindi non
necessità di sensori.

Figura 29.1: L’utensile è costituito da un insieme di molle che


forniscono elasticità all’utensile.

Questo permette anche il posizionamento in modo "automatico" dell’u-


tensile.

203

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

204 CAPITOLO 29. CONTROLLO IN FORZA

Figura 29.2: Applicando la giusta forza nel punto corretto,


l’utensile è in grado di posizionarsi da solo.

Alcuni compiti svolti da un robot che richiedono interazioni con l’ambiente sono:

• Lavorazioni meccaniche: assemblaggio, finitura di superfici, abrasioni,


...

• Manipolazioni controllate: il controllo della forza migliora le presta-


zioni degli operatori umani nei sistemi master-slave.

• Cooperazione di sistemi con più manipolatori: l’ambiente include


più robot che devono cooperare tra di loro.

• Esplorazione fisica per l’identificazione della forma: la combina-


zione tra forza e velocità/sensori di visione, consente di identificare una
forma 2D/3D di oggetti sconosciuti e il loro contorno applicando forze di
contatto sotto un controllo esplicito.

Un aspetto molto importante, oltre alle interazioni del robot con l’ambiente, so-
no le Human-Robot interaction: il robot non deve opporsi alle forze esterne.
Questo deve essere garantito anche per questioni di sicurezza.

29.2 Attività di interesse


I task più interessanti, in termine di interazioni, sono quelli che richiedono:

• Riproduzione accurata di una traiettoria desiderata, anche ad ele-


vata velocità, definita sulla superficie di un oggetto. Ad esempio la Figura
29.3 a sinistra mostra un robot intento a rimuovere la colla in eccesso dai
bordi del parabrezza di un’auto.

• Controllo di forza e/o coppia applicato al contatto con l’ambien-


te, che può essere più o meno rigido. Ad esempio un robot che deve aprire
un porta, rappresentato in Figura 29.3 a destra.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

29.3. APPROCCI DI CONTROLLO 205

Figura 29.3: A sinistra un esempio di riproduzione accurata di una


traiettoria. A destra un esempio di controllo in forza.

29.3 Approcci di controllo


Esistono diversi approcci per il controllo:

• Controllo esplicito della sola forza/coppia: viene utilizzato per le


operazioni quasi-statiche tipo quelle di assemblaggio, per evitare deadlock
durante l’inserimento delle parti.

• Controllo attivo della rigidezza: le forze di contatto vengono gestite


tramite il controllo di posizione/velocità dell’end-effector. Il robot reagisce
come una molla compressa (o smorzatore) in tutte le direzioni selezionate.

• Controllo dell’impedenza: il comportamento desiderato viene imposto


dalle interazioni tra robot e ambiente (es. un modello con forze agenti sun
un sistema massa-molla-smorzatore). Questo simula il comportamento di
un braccio umano in un ambiente sconosciuto.

• Controllo ibrido force-motion: lo spazio di lavoro viene decomposto


in un insieme di direzioni in cui può essere controllata sia la forza che il
movimento e in un insieme di direzioni dove invece il robot è sottoposto a
vincoli.

Figura 29.4: Controllo ibrido in cui lo spazio di lavoro è stato


suddiviso in tre insiemi.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

206 CAPITOLO 29. CONTROLLO IN FORZA

29.3.1 Controllo dell’impedenza VS controllo ibrido force-


motion
Possiamo evidenziare le differenze tra il controllo in impedenza e il controllo
ibrido force-motion. Nel controllo di impedenza abbiamo che:

• L’ambiente in cui si lavora è un sistema meccanico soggetto a piccole


deformazioni.
• Le forze di contatto derivano dal bilanciamento da due sistemi dinamici
accoppiati (robot+ambiente).

• Le caratteristiche dinamiche desiderate sono assegnate alle interazioni di


forza/movimento.

Mentre per il controllo ibrido force-motion:

• L’ambiente rigido riduce i gradi di libertà del robot in situazione di con-


tatto.

• Le forze di contatto risultano dal tentativo di violazione dei vincoli geo-


metrici imposti dall’ambiente.
• Lo spazio di lavoro viene suddiviso in un insieme di direzioni in cui solo il
movimento o solo le forze di reazione si possono trovare (e mai entrambi
gli aspetti contemporaneamente).

Tra questi due approcci risulta evidente che il livello di conoscenza della geome-
tria dell’ambiente risulta diverso. Inoltre per il controllo in impedenza la misura
delle forze di contatto può non essere necessaria.

29.3.2 Controllo conforme


Il controllo conforme è la tecnologia per controllare la conformità, ovvero l’im-
pedenza meccanica di un sistema meccatronico. In pratica, con il controllo
conforme si va a controllare e modellare la relazione tra la posizione e la forza.
Per misurare questo aspetto vengono utilizzate due grandezze:
• Impedenza: indica quale è lo spostamento di un braccio per effetto di
una forza.
• Ammittanza: indica la forza in funzione di uno spostamento.
Mentre il controllo in impedenza risulta essere accurato, il controllo in ammit-
tanza risulta essere robusto.

29.3.3 Retro-guidabilità
Dal punto di vista meccanico la retro-guidabilità consiste nel trasferire la po-
tenza al motore dall’ambiente. Può succedere però che parte della potenza
trasmessa viene persa nel sistema di trasmissione. Quando questo avviene la
retro-guidabilità può essere raggiunta tramite un controllo in anello chiuso per
trasferire le forze rilevate all’ingresso del motore.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

Capitolo 30

Ingegneria del software per


robot

30.1 Introduzione
I robot oggi svolgono diversi compiti anche molto diversi tra loro (guida turistica,
auto autonome, logistica, ecc...). Uno dei maggiori interessi è quello di trovare
quegli aspetti che li accomunano. Nei robot odierni il costo per lo sviluppo del
software è una parte molto significativa del costo totale. Questo significa che,
essendo il costo di sviluppo software un costo elevato, per forza di cose anche
il costo dell’intero robot deve essere elevato. Allora, l’idea che si preferisce
seguire è quella di rendere economicamente vantaggioso lo sviluppo software
sfruttandone il riutilizzo, ovvero progettare già in partenza il SW per renderlo
adatto ad utilizzi futuri.

30.2 Riuso del software


Il riuso del software è una delle pratiche più diffuse nello sviluppo software. Per
rendere il software riutilizzabile è necessario sviluppare per componenti in modo
che possano essere sfruttate le somiglianza tra requisiti e/o archiettettura tra
applicazioni diverse. Il riuso del sofware permette di ottenere sostanziali benefici
in termini di produttività, qualità e prestazionio aziendali. Uno dei problemi
più difficile da affrontare riguarda lo sviluppo di componenti che interagiscono
con i sensori. Essi infatti devono essere progettati e sviluppati in modo tale che:

• La funzionalità del componente sia stabile. Ciò consente al componente


stesso di essere riutilizzabile.

• Il meccanismo di iterazione deve essere variabile in modo che il compo-


nente risulti flessibile.

30.2.1 Separazione dei problemi


Durante lo sviluppo del software si devono affrontare problemi di:

207

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

208 CAPITOLO 30. INGEGNERIA DEL SOFTWARE PER ROBOT

• Computazione: sviluppare algoritmi di elaborazione dei dati da incap-


sulare nei componenti software.
• Configurazione: interconnettere i vari componenti per formare compo-
nenti composti e sistemi composti inizializzando i loro attributi.
• Comunicazione: disaccoppiare dal punto di vista spaziale i vari compo-
nenti.
• Coordinazione: disaccoppiare dal punto di vista temporale i vari com-
ponenti.
Questi aspetti devono essere progettati in modo indipendente per maternerli
svincolati l’uno con l’altro in modo da realizzare componenti software riutilizza-
bili. E bene quindi evitare di fare assunzioni implicite durante lo sviluppo. Ad
esempio nel codice in Figura 30.1 si può notare che nell’algoritmo sviluppato
non è possibile configurare il parametro di durata e ciò rende l’algoritmo stesso
non flessibile e quindi difficilmente riutilizzabile.

Figura 30.1: Esempio di dipendenza tra computazione e


configurazione.

30.2.2 Riuso dei componenti


In prima istanza ci si può chiedere se sia possibie sviluppare componenti in
modo indipendente. L’approccio tradizionale consiste nel suddividere in varie
fasi il processo di sviluppo. Ogni fase successiva rende il sistema finale meno
riutilizzabile.

Figura 30.2: Approccio tradizionale di sviluppo software.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

30.3. INGEGNERIA DEL DOMINIO 209

Lo sviluppo del software richiede competenze avanzate i diversi domini tecno-


logici perchè sviluppare un’applicazione per un dominio specifico ha un costo
molto elevato. In particolare il dominio robotico è affetto da un’enorme va-
riabilità tecnologica e software rendendo la vita di queste applicazioni molto
breve. E’ bene quindi, rendere più sofisticato l’approccio con il quale si svilup-
pa software cercando di immaginare come si integreranno i componenti nelle
applicazioni future, introducendo quindi nell’approcio tradizionale una fase di
analisi del dominio.

Figura 30.3: Nuovo approccio di sviluppo software.

30.3 Ingegneria del dominio


Il termine dominio è usato per denotare o raggruppare un insieme di:

• Sistemi: robot mobili, robot umanoidi, robot aerei...

• Aree funzionali: pianificazione del movimento, localizzazione basata su


mappa...

• Applicazioni: logistiche, ispezione, ricerca e rischio...

che presentano proprietà simili e condividono un insieme di caratteristiche comu-


ni. Ad esempio il mercato della robotica è presente in diversi domini: manifat-
tura, salute, agricoltura, consumer, logistica e trasporti... è evidente che questi
robot dovranno possedere delle abilità standard come l’abilità di interagire con
oggetti e persone comune a praticamente tutti i robot.

30.4 Tecniche di realizzazione della variabilità


Nella pratica tutto questo può essere fatto realizzando sistemi basati su compo-
nenti prestando particolare attenzione allo sviluppo dei loro connettori e delle
loro interfacce. Possiamo quindi introdurre una nuova fase che permetta al-
l’applicazione di essere riconfigurata durante la sua esecuzione. Dopo aver svi-
luppato l’architettura del modello è necessario infatti tenere in considerazione

Descargado por RWEN CSC (rwen.ayesa@gmail.com)


lOMoARcPSD|6740849

210 CAPITOLO 30. INGEGNERIA DEL SOFTWARE PER ROBOT

proprietà non funzionali come: vincoli di tempo, risorse disponibili, assegna-


zione di funzionalità alle risorse. E’ necessario quindi analizzare e testare le
performace di un modello in diverse situazioni per verificare se queste proprietà
non funzionali vengono rispettate.

Figura 30.4: Analisi del tempo di risposta.

Descargado por RWEN CSC (rwen.ayesa@gmail.com)

Potrebbero piacerti anche