IMA3/IMA4 2018/2020 P9
Sommaire
Présentation générale
Description
Le projet consiste à réaliser une voiture autonome dans le but de participer au concours Ironcar dès 2019.
Ce dernier est une course de voitures (modèle réduit) intelligentes.
Afin d'y prendre part il nous faudra concevoir un véhicule pouvant suivre un circuit sans être télécommandé et pouvant s'adapter au tracé ainsi qu'à ses obstacles grâce à la Deep Learning Technologie.
Pour arriver à cette fin nous nous appuierons sur les fiches de conceptions des anciens concurrents disponibles ici.
Objectifs
Pour participer à ce concours, on devra notamment :
- mettre en place un réseau de capteurs et concevoir un algorithme qui les exploite pour pouvoir suivre la ligne discontinue du tracé;
- mettre en oeuvre un Linux temps réel pour contrôler la voiture avec une phase de comparaison par rapport à un Linux classique ;
- mettre en oeuvre d'autres algorithmes pour l'apprentissage automatique, déjà disponibles pour contrôler la voiture ;
- gérer les servo-moteurs contrôlant la direction et la vitesse de la voiture (on utilisera un shield et un Arduino), et implémenter des algorithme de contrôle de l'accélération et du freinage.
Analyse du projet
Positionnement par rapport à l'existant
Analyse des concurrents
Patate42
Le grand gagnant de la compétition édition 2018, réalisé par des élèves de l’école 42 paris, leur prototype a réussi à boucler les 3 tours en un temps record dont le meilleur tour a duré 1'17mn, ces résultats ont leurs permis de gagner le premier titre dans ce championnat national.
Ils ont choisi la Raspberry au lieu d'autres cartes électroniques parce qu’elle présente les avantages d’être facilement programmé, sa puissance et son prix très bon marché [1][2][3]
AxioNaut
AxioNaut sont des étudiants qui viennent du groupe Axionable,qui est une principale entreprise de conseil de la Science de données basée à Paris, France, ils ont remportés la seconde manche de l’Iron Car France. Il ont utilisés le modèle de Raspberrry pi 3 B+ équipé d'une camera qui assure l'autonomie dans le positionnement de la voiture et contrôle la vitesse durant le parcourt. [4][5]
C'est un véhicule autonome qui est équipé de capteurs numériques (caméras, radars, sonars, lidars,etc) et concernant le stockage des informations, ça s'enregistre sous des microprocesseur et via des logiciels spécifique. Pour les avantages , les statistiques relèvent que 90% des accidents de la route sont liés à une erreur humaine. La génération des voitures autonomes comme la navette qui permettre de réduire les accidents a travers le meilleur temps de réaction det d'une plus grande fiabilité des systèmes informatisés. [6][7]
Scénario d'usage du produit ou du concept envisagé
Phase d’entraînement :
On disposera d'une piste pour pouvoir effectuer la phase d'apprentissage de l'IA. Lors de la journée compétition que l'on organisera, les participants commanderont la voiture avec la manette type xbox et tenteront de faire des tours de piste le plus rapidement possible.
Pendant ce temps, la caméra de la voiture sera active et enregistrera les images du circuit, et les commandes entrées correspondantes par les utilisateurs seront elles aussi stockées. On pourra par la suite pondérer les résultats, par exemple une sortie de piste implique une mauvaise commande, et un tour rapide implique un bonne commande.
Pour plus de diversité, on entraînera la voiture à partir d'images générées aléatoirement qui correspondent à une portion de circuit Ironcar.
Phase de course autonome
On déposera la voiture sur la ligne de départ, et on attend le lancement de la course. Après celui-ci, la voiture démarre et essaie de suivre le tracé le plus rapidement possible. Dans le cas où elle sortirait de la piste, c'est à nous de la repositionner correctement.
La question difficile
Comment entrainer notre IA ?
Réponse à la question difficile
- Nous pouvons organiser des courses participatives à Polytech pour récupérer des données de trajectoire qui permettront à notre voiture de connaitre davantage de situations pour lui permettre de réagir dans des conditions plus variées. Il faudrait tracer un circuit sur le parking par exemple, puis organiser une compétitions entre étudiants et personnels pour récupérer le plus de données possibles. On peut pondérer les résultats en "récompensant" les temps plus courts dans le programmation de l'IA.
- Nous pouvons aussi mettre en place un environnement virtuel pour simuler un tracé et laisser le réseau de neurones s'entrainer d'elle même au sein de cette simulation.
Bibliographie et webographie
[1]: https://www.42.fr/iron-car-2018-etudiants-champions/
[3]: https://github.com/EParisot/Patate
[4]: https://github.com/Axionable/Axionaut
[5]: https://www.axionable.com/axionaut-termine-1er-de-la-deuxieme-course-iron-car/
[7]: https://www.univ-lille.fr/nc/actualites/detail-actualite/?tx_news_pi1%5Bnews%5D=1423
[*]: https://github.com/vinzeebreak/road_simulator
[*]: https://github.com/vinzeebreak/ironcar
Préparation du projet
Cahier des charges du groupe
Cahier des charges pour la première année :
Reprendre le code source d'un ancien concurrent et l'implémenter dans notre châssis.
Avoir un modèle fonctionnel pour participer au concours de Septembre avec cette voiture.
Cahier des charges pour le seconde année :
Optimisation de la voiture (code, commandes, ...) afin qu'elle soit plus performante.
La voiture fera 3 tours de pistes sans sortie lors de la compétition.
La voiture sera autonome sur au moins un circuit
Ramenez la coupe à la maison
Détecter une sortie de piste sans avoir recours à des capteurs autres que la caméra.
La voiture finit la course le plus rapidement possible
Reconnaître des virages et des lignes droites plus ou moins grandes et adapter sa trajectoire et sa vitesse en conséquence.
Pouvoir faire exécuter le code de réseau de neurones par l'ordinateur suffisamment rapidement pour pouvoir réagir le plus rapidement possible (proche du temps réel).
Cahier des charges des équipes
Equipe 1
- Mettre en place un Linux RT dans une raspberry PI
Equipe 2
- Récupérer le code des équipes précédentes et l'implémenter sur un PC puis sur une autre raspberry
Equipe 3
- Asservir les moteurs du chassie
- Créer une base en plexiglas pour tout le système de commande pour le rendre amovible
Choix techniques : matériel et logiciel
Equipe 1
Equipe 2
- On a utilisé le logiciel python pour tester le programme des vainqueurs de l'année précédente, qui comprend le réseau neuronal et l'entrainement de la voiture à partir d'images capturées, ou même générées par le programme d'entrainement.
- Nous avons dû pour cela installer toutes les librairies associées pour permettre au code de fonctionner correctement.
Equipe 3
Liste des tâches à effectuer
Asservissement de la voiture
Commande de la voiture (moteur, vitesse, virages) par raspberry Possibilité de commander la voiture manuellement ou par ordinateur.
Mise en place d'un Linux temps réel sur Raspberry
Implémentation de l'IA sur le Linux temps réel de la voiture.
Liaisons entre les différents organes de la voiture
Agencement de la voiture
Equipe 1
Equipe 2 : Réseau neuronal
- Récupération du code des anciens vainqueurs
- Adaptation à notre système
- Amélioration / Entraînement du réseau neuronal
Equipe 3
Calendrier prévisionnel
Le calendrier prévisionnel peut se concrétiser sous la forme d'un diagramme de GANTT.
Equipe 1
Equipe 2
Equipe 3
Réalisation du Projet
Projet S6
Eventuellement créer des sous-pages par équipe avec le compte-rendu des réunions de groupe sur cette page principale.
Semaine 4
- Réponse à la question difficile
- Prise d'informations sur le projet en général,
- Analyse des projets des IMA4 et IMA5
Semaine 5
Semaine 6
Equipe 2
Pendant la première séance en équipe, nous avons recherché des ressources fiables et compréhensibles. Nous avons exploré le Github des gagnants des années précédentes, et avons retenu Patate 42. Leur code nous semblait plus fiable au départ, puisqu'ils ont réalisé le meilleur temps sur le parcourt, mais quand nous avons voulu le tester, nous n'avons pas compris les instructions à réaliser avant l'implémentation.
Nous nous sommes tourné alors vers Axionaute, qui ont pris soin de détailler les étapes nécessaires pour faire fonctionner leur code.