Projet

Général

Profil

Véhicule autonome » Historique » Version 3

Anonyme, 01/07/2013 20:51

1 1 Anonyme
h1. Véhicule autonome
2
3
+Objectif+
4
5
Le but de notre projet est de trouver les paramètres optimaux permettant à une voiture automatisée de faire le tour d’un circuit le plus rapidement possible.
6
7
+Déroulement du travail+
8
9
Notre projet de première année d’élève ingénieur de l’ISIMA s’est déroulé dans les locaux de Polytech Clermont-Ferrand sous la tutelle de M. Jacques Laffont, professeur à Polytech. 
10
Un code source écrit en langage C, sous un environnement Codeblocks a été mis à notre disposition. Ce code permet de lancer une voiture en fonction de différents paramètres (que l’utilisateur doit régler) sur un circuit.
11
Nous avons dû créer un programme en langage C, à partir de ce qui nous a été remis, permettant de trouver les paramètres optimaux recherchés.
12
13
14
+Présentation de la démarche mise en œuvre pour résoudre le problème+
15
16
Notre première approche fut d’abord de faire tourner le programme afin de mieux comprendre le problème et s’approprier le code qui nous a été donné. 
17
Nous avons ensuite adapté ce code et ainsi créé un programme qui lance plusieurs fois la voiture en changeant les paramètres. Nous pouvions ainsi déterminer les paramètres recherchés en lançant le logiciel. Il aurait alors fallu faire tourner le programme pendant plusieurs jours (chaque tour prenant environ une minute, avec 4 paramètres à changer chacun d’eux pouvant prendre plusieurs dizaines de valeurs différentes).
18
L’étape suivante fut d’écrire les résultats et les paramètres de chaque tour fait par la voiture dans un fichier. On a ainsi pu acquérir une base de données qui nous a été utile pour la suite. En effet, lorsqu’on lance un véhicule, on peut savoir si ces paramètres n’ont pas déjà été testés (ce qui évite le cas échéant de devoir recommencer le test). On gagne ainsi du temps et on peut relancer le programme à différent moments sans perdre les résultats obtenus précédemment.
19
La dernière étape de notre travail fut d’appliquer un algorithme s’inspirant de celui du recuit simulé pour déterminer les paramètres optimaux recherchés. 
20
Ce rapport détaille tout le travail qui a été effectué et reprend donc toutes les étapes qui ont été expliquées précédemment. 
21
22
+Prise en main et premiers essais+
23
24
La première difficulté fut de trouver un ordinateur sur lequel nous pouvions travailler.
25
Ceux de l’ISIMA et ceux du binôme ne convenaient pas pour diverses raisons. L’accès aux ordinateurs de Polytech, permis par notre tuteur de projet M. Laffont et l’acquisition d’un nouvel ordinateur par l’un des membres du binôme nous a permis de commencer le travail dans de bonnes conditions.
26
27
Nous avons fait tourner le programme en modifiant les quatre paramètres à modifier dans le but d’optimiser le temps de parcours du véhicule : 
28
-	la vitesse
29
-	la distance au mur
30
-	le coefficient de correction de l’angle
31
-	l’angle
32
33
Nous avons alors lancé quelques véhicules sur le simulateur avec des paramètres différents pour voir quelle influence à chaque paramètre sur la voiture. Nous en avons ainsi déduit les limites de chaque paramètre. Par exemple si on lance une voiture avec une distance au mur inférieur à 5 m ou supérieure à 9 m, assez rapidement la voiture rencontrera un mur et sera bloquée dans son avancée sur le parcours.
34
35
Nous avons ensuite fait une dichotomie sur le coefficient de correction de l’angle avec tous les autres paramètres fixes. Nous avons alors obtenu le tableau de résultats suivant :
36
37
Correction de l’angle	Temps
38
15	
39
30	
40 3 Anonyme
45                      103,39
41 1 Anonyme
47,5	
42
43
50	                103,38
44
60	
45
75	
46
47
Lorsque nous avons trouvé le coefficient de correction de l’angle qui nous donnait la vitesse la plus faible, nous avons ensuite fait une dichotomie sur la distance au mur :
48
49
Distance au mur	Temps
50
5	 
51
5,5	        103,38
52
6	 
53
7,5	 
54
8,75	        101,03
55
8,875	         99,05
56
9	        101,46
57
58
Nous avons alors refait une dichotomie sur la correction de l’angle pour nous assurer que la valeur obtenue précédemment (50) était bien celle qui nous donnait la vitesse la plus faible. Nous avons alors obtenu le même résultat de 50 pour le coefficient de correction de l’angle.
59
60
Pour ces paramètres de distance au mur (8,875 m) et de coefficient de correction d’angle (50) obtenus grâce à la dichotomie, nous avons alors augmenté la vitesse jusqu’à la vitesse maximum pour laquelle la voiture ne va pas directement dans le mur ou ne se retourne pas dès le départ:
61
62
Vitesse	Temps
63
25	79,25
64
30	66,06
65
35	56,64
66
40	49,6
67
45	44,11
68
50	39,77
69
55	36,22
70
60	33,21
71
62,5	32,22
72
64	31,27
73
64,5	31,22
74
65	Ne démarre pas bien
75
76
+Constitution d'une base de donnée et interet+
77
78
Le but était de créer une base de données contenant tous les essais effectués par la voiture. Ces données servent de base à l’algorithme de recuit simulé que nous avons mis en œuvre plus tard.
79
Afin de pouvoir exploiter nos résultats, il fallait donc les mémoriser dans un fichier texte. Nous avons alors créé une fonction écriture qui permet de sauvegarder les tests faits par le simulateur.
80
Comme il est inutile que le simulateur fasse tourner deux fois une voiture avec les mêmes paramètres, nous avons écrit la fonction recherche qui cherche dans le fichier « résultats.txt » si une voiture a déjà été lancée avec des paramètres identiques. Cela permet d’éviter de lancer plusieurs fois une voiture avec les mêmes paramètres.
81
82
Afin d’acquérir une base de donnée la plus importante possible, nous avons laissé
83
tourner notre programme durant tout un week-end sur six ordinateurs, ce qui nous a permis de constater qu’au-delà d’un certain temps, le simulateur ne chronomètre plus la vitesse de parcours du véhicule.
84
85
Nous avons ensuite écrit une nouvelle fonction de recherche dans un fichier ce qui nous a permis de savoir dans chaque fichier résultat.txt quelle est la plus faible vitesse de parcours et pour quels paramètres elle a été obtenue.
86
87
88
Vitesse (km/h)	Temps (s)
89
5	         323,04
90
10	         161,56
91
15	         107,73
92
20	          80,82
93
30	          53,93
94
40	          40,48
95
50	          40,46
96
97
+Le recuit simulé+
98
99
L’objectif était de rechercher un maximum en appliquant un algorithme de recuit simulé à la voiture. Pour cela, nous avons dû faire des recherches sur cet algorithme afin de le comprendre, puis nous avons cherché à le coder d’abord sur une fonction basique à une dimension. Nous l’avons ensuite appliqué à la voiture. Enfin nous l’avons fait tourner.
100
101
Principe :
102
103
Le recuit simulé est un algorithme basé sur une heuristique permettant la recherche de solutions à un problème donné. Il permet notamment d'éviter les minima locaux mais nécessite un réglage minutieux des paramètres.
104
105
Pour appliquer cet algorithme, on doit avoir des paramètres correspondant à cette fonction. On combine ensuite ces paramètres entre eux, nous obtenons ainsi un nouveau paramètre que l’on applique à la fonction que l’on cherche à minimiser. Ensuite en fonction du résultat, on garde ou non ce paramètre.
106
107
Application à une fonction à une dimension : 
108
109
Le test de l’algorithme correspondant à la fonction x^4+12x^2+3x retourne la bonne valeur : 0,1866
110
111
Application à la voiture : 
112
113
L’algorithme précédent a été modifié pour pouvoir être appliqué à la voiture. 
114
Explication du programme contenant les modifications : 
115
116
-	Le programme prend 64 valeurs au hasard dans le fichier servant de base de données et les met dans un autre fichier intermédiaire nommé « recuit.txt » sur lequel 
117
        on appliquera l’algorithme
118
-	L’algorithme prend 2 lignes de ce fichier et combine les paramètres entre eux pour en fabriquer un autre
119
-	Si ces paramètres ont déjà été testés, le programme récupère juste la valeur du temps et réécrit ou non et à la bonne place dans le fichier « recuit.txt » en
120
        fonction de cette valeur.
121
-	Si ces paramètres n’ont pas été testés, le programme lance la voiture avec ces paramètres, ajoute le résultat trouvé au fichier résultats.txt contenant tous les
122
        résultats obtenus depuis le début et comme précédemment traite ce nouveau résultat selon l’algorithme
123
124
Le programme est fonctionnel, mais il faudrait malgré tout le faire tourner plusieurs
125
heures sans discontinuité avant d’obtenir un résultats, chose que nous n’avons pas eu le temps de faire.
126
127
+Conclusion+
128
129
Ce projet qui était notre premier choix ne correspondait pas à ce que nous pensions. Néanmoins, malgré quelques difficultés techniques nous ayant empêché de démarrer rapidement le projet, nous avons passé de nombreuses heures dessus afin de franchir une à une toutes les étapes nécessaires pour résoudre le problème. Il nous aura manqué un peu de temps afin de pouvoir réellement arriver à une solution optimale.
130
De plus l’algorithme utilisé, qui n’est qu’un algorithme modifié du recuit simulé peut rester bloquer dans un minimum local, ce qui est un obstacle dans la recherche de paramètre optimaux. La prochaine étape consisterait à régler ce problème.
131
En conséquence malgré un engagement important de notre part, et suite à quelques difficultés techniques, il nous aura manqué un peu de temps pour arriver à bout de ce projet.