IMA4 2018/2019 P14 : Différence entre versions
(→Réponse à la question difficile) |
(→Choix techniques : matériel et logiciel) |
||
Ligne 73 : | Ligne 73 : | ||
'''Choix techniques''' | '''Choix techniques''' | ||
+ | |||
+ | <u>La voiture rc :</u> | ||
+ | |||
+ | Nous nous sommes orientés sur un modèle robuste, au châssis assez haut et aux roues larges (plus maniable), capable de mieux supporter les chocs et les vibrations, au détriment peut être de la vitesse. | ||
+ | |||
+ | Le circuit sur lequel devra évoluer le véhicule ne permet de toute manière pas de prendre beaucoup d'élan (nombreux virage), la maniabilité est donc le choix qui s'impose. | ||
+ | |||
+ | De plus, un modèle robuste est recommandé puisque dans les phases d'expérimentation, le véhicule n'est pas à l'abri d'une collision. | ||
+ | |||
+ | <u>Contrôle des moteurs :</u> | ||
Nous avons choisi de ne pas utiliser d'arduino en complément du raspberry puisque celui-ci prendrait de la place et nous obligerait à rajouter des câbles et à nous doter d'une meilleure alimentation externe. | Nous avons choisi de ne pas utiliser d'arduino en complément du raspberry puisque celui-ci prendrait de la place et nous obligerait à rajouter des câbles et à nous doter d'une meilleure alimentation externe. | ||
Ligne 80 : | Ligne 90 : | ||
En effet comme nous l'avons dit dans la réponse à la question difficile, un raspberry seul ne permet pas un bon contrôle de plusieurs servomoteurs mais l'utilisation d'un Hat PWM permet de régler efficacement le problème. | En effet comme nous l'avons dit dans la réponse à la question difficile, un raspberry seul ne permet pas un bon contrôle de plusieurs servomoteurs mais l'utilisation d'un Hat PWM permet de régler efficacement le problème. | ||
+ | <u>Partie informatique :</u> | ||
+ | |||
+ | Le choix du python comme langage de programmation semble le plus indiqué dans le cadre d'un réseau de neurones. En effet même s'il est loin d'être "le plus rapide", la bibliothèque Numpy lui permet de rester compétitif. | ||
+ | |||
+ | Mais c'est surtout sa syntaxe facile et concise qui nous permettra de progresser plus rapidement et aisément que dans d'autres langages. C'est d'ailleurs un langages très utilisé dans les applications relatives à l'intelligence artificielle. | ||
+ | En outre, en utilisant Python, nous sommes certains de trouver de nombreuses librairies qualitatives et de la documentation. On peut aussi souligner qu'il s'agit du langage de base de la Raspberry et que des bibliothèques Python sont fournies avec le Hat PWM pour le contrôle des moteurs. | ||
'''Liste du matériel''' | '''Liste du matériel''' |
Version du 8 décembre 2018 à 18:01
Sommaire
Présentation générale
- Nom du projet : Voiture autonome en modèle réduit
- Résumé : Le but du projet est de réaliser une voiture de taille réduite, capable de se déplacer en autonomie sur un circuit
- Etudiants : Hugo DEJAEGHER et Brandon ELEMVA
Description
Notre projet consiste à réaliser une voiture modèle réduit, capable de réaliser des tours de piste en autonomie sur un circuit tracé au sol. Ce projet s'inspire du concours IronCar France, qui a vu le jour très récemment et auquel nous pourrions par ailleurs participer. Notre véhicule autonome sera réalisé à partir d'une voiture radio-commandée à l’échelle 1:16 ou 1:8, modifiée de façon à être contrôlée par une Raspberry pi 3 (et éventuellement une Arduino), connectée à une webcam et à un ordinateur sur lequel le code sera exécuté. Il est à noter qu'aucun capteur ne doit être utilisé, la webcam seule sera utilisée pour identifier le tracé du circuit.
Objectifs
Dans le but de réaliser notre projet nous devrons remplir les objectifs suivants que nous pouvons répartir en 3 parties.
Partie mécanique :
- Réaliser un châssis pour le véhicule sur lequel disposer les roues,les moteurs et les différents autres composants
- Réaliser un support pour la webcam qui permette de l'élever à au moins 10 cm du sol (en prenant en compte la taille du châssis)
- Prévoir un système de suspension afin d'éviter d'endommager la partie interne du véhicule en cas de chute
Partie électronique :
- Les moteurs seront commandés par une carte Arduino
- La partie Deep Learning et l'analyse des images de la webcam seront traitées par un ordinateur connecté à une RaspBerry pi 3
- Raccorder les moteurs des roues à un Shield qui sera fixé sur à la Raspberry
Partie informatique :
- Faire apprendre au robot un parcours en le pilotant manuellement via une manette
- Concevoir un programme permettant au véhicule de mémoriser le parcours préenregistré
- Produire un véhicule prenant des décisions de façon autonome via plusieurs réseaux de neurones : méthode du Deep Learning (ou apprentissage approfondi)
Analyse du projet
Positionnement par rapport à l'existant
Les principaux concurrents de notre projet ne sont autres que les différents participants du concours IronCar, en particulier les gagnants des sessions précédentes, qui partagent par ailleurs leurs codes et liste de matériel sur le site du concours. Ces gagnants s’élèvent au nombre de 2 équipes, qui se partagent le sommet du podium à tour de rôle.
Analyse du premier concurrent
Il s'agit de l'équipe patate 42, gagnante de la course officielle de février 2018 ainsi que des courses d'entraînement de mai et octobre 2018. Les membres de cette équipe sont issus de l'école 42, un établissement supérieur d'autoformation, non reconnu par l’État et dont l'objectif est de former des développeurs. Leur meilleur temps pour un tour est de 25 secondes.
Analyse du second concurrent
Le deuxième concurrent est l'équipe Axionable, composée de membres issus de l'entreprise du même nom, spécialisée en Data Science et Data consulting, basée à Paris. Selon eux, leur force réside dans la qualité des données qu'ils utilisent pour la reconnaissance du circuit (qualité, diversité et labellisation semi-manuelle des photos). Ils ont gagné la course officielle de juin 2018 ainsi que les entraînements de mars et septembre 2018. Leur meilleur temps en un tour est de 29 secondes.
Scénario d'usage du produit ou du concept envisagé
La première étape consiste à poser la voiture sur la ligne départ puis à la piloter manuellement à l'aide d'une manette Xbox. Plusieurs tours de piste sont alors effectués pendant que la caméra de la raspberry prend une photo toutes les 0.1 secondes afin de constituer une base de données. À chaque photo correspond alors un label correspondant à une instruction : "droite", "gauche", "tout droit", "droite serrée" ... . Le but est de prendre un maximum d'images correctement labellisées afin d'affiner la précision de l'analyse du trajet.
Ensuite, ceci étant fait, une analyse de la base de données (les images et leur label) est hautement conseillée afin de corriger d’éventuelles erreurs de labellisation (une image correspondant à un virage nommée "tout droit" par exemple). Ces premières étapes sont primordiales et, associées à un bon code, réduiront considérablement les chances de sortie de piste. Le but étant d'arriver à un résultat égal ou proche de zéro.
Enfin, on peut alors positionner la voiture sur la ligne de départ et lancer le programme de pilotage automatique ainsi qu'un chronomètre pour mesurer sa performance. Le but est de réaliser 3 tours de pistes en moins de temps possible, avec une pénalité de 5 secondes à chaque sortie de piste.
Voyons cela sous un autre angle :
Judith, étudiante en IMA4 à Polytech Lille est une amatrice de course de mini voitures. Elle a participé à certaines de ces compétitions et a souvent fini très bien classée (sans pour autant en gagner). Judith s'intéresse également à l'univers de l'électronique et de l'informatique et souhaiterait pouvoir rendre sa voiture plus autonome car elle trouve répétitif et lassant de devoir piloter son véhicule sur un circuit. En effectuant des recherches, elle entend parler de la compétition IronCar et se dit que ça serait une excellente opportunité pour elle de réaliser son projet de voiture autonome. Alors, elle décide de prendre son ancienne voiture et de remplacer le circuit électrique s'y trouvant par une Arduino, une Raspberry et une webcam. Avec l'aide de ses enseignants et des documents obtenus lors de ses recherches, elle parvient à établir un programme permettant d'effectuer du Deep Learning. Grâce à ce programme, elle parvient à faire apprendre à sa voiture le parcours et l'optimise afin de permettre à son véhicule d'effectuer ce même parcours le plus rapidement possible. Elle espère bien gagner la compétition IronCar cette année.
Réponse à la question difficile
- Est-il possible de faire les traitements sur la Rpi ou faut-il faire un pré-traitement off line sur un PC ? (quels soft, quels réseaux de neurones ?)
La Raspberry a une mémoire vive de 256Mo. Pour pouvoir réaliser du deep learning, Il faudrait disposer
- Comment faire pour piloter efficacement les moteurs ?
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Choix techniques
La voiture rc :
Nous nous sommes orientés sur un modèle robuste, au châssis assez haut et aux roues larges (plus maniable), capable de mieux supporter les chocs et les vibrations, au détriment peut être de la vitesse.
Le circuit sur lequel devra évoluer le véhicule ne permet de toute manière pas de prendre beaucoup d'élan (nombreux virage), la maniabilité est donc le choix qui s'impose.
De plus, un modèle robuste est recommandé puisque dans les phases d'expérimentation, le véhicule n'est pas à l'abri d'une collision.
Contrôle des moteurs :
Nous avons choisi de ne pas utiliser d'arduino en complément du raspberry puisque celui-ci prendrait de la place et nous obligerait à rajouter des câbles et à nous doter d'une meilleure alimentation externe.
De plus, il ne présente pas d'avantages particuliers en comparaison avec un raspberry pi 3 doté d'un module pour le contrôle des servomoteurs.
En effet comme nous l'avons dit dans la réponse à la question difficile, un raspberry seul ne permet pas un bon contrôle de plusieurs servomoteurs mais l'utilisation d'un Hat PWM permet de régler efficacement le problème.
Partie informatique :
Le choix du python comme langage de programmation semble le plus indiqué dans le cadre d'un réseau de neurones. En effet même s'il est loin d'être "le plus rapide", la bibliothèque Numpy lui permet de rester compétitif.
Mais c'est surtout sa syntaxe facile et concise qui nous permettra de progresser plus rapidement et aisément que dans d'autres langages. C'est d'ailleurs un langages très utilisé dans les applications relatives à l'intelligence artificielle.
En outre, en utilisant Python, nous sommes certains de trouver de nombreuses librairies qualitatives et de la documentation. On peut aussi souligner qu'il s'agit du langage de base de la Raspberry et que des bibliothèques Python sont fournies avec le Hat PWM pour le contrôle des moteurs.
Liste du matériel
Un Monster Truck radiocommandé électrique à l’échelle 1/10 de la marque T2M (déjà commandé).
Une manette de Xbox(one ou 360) sans fil (pour la phase d'apprentissage).
Une Raspberry pi 3.
Un ordinateur doté de suffisamment de RAM pour exécuter le code du réseau de neurones.
Une camera pour raspberry à objectif "fisheye" et 10 fps grand minimum.
Un Hat PWM/Servo pour raspberry pi (shield pour contrôle des moteurs).
Des câbles jumper pour breadboard (pour relier les moteurs au shield du raspberry).
Une batterie externe capable de fournir 5V et au moins 2A pour l'alimentation de la raspberry.
Un cable USB/micro USB pour relier la raspberry au pc.
Liste des tâches à effectuer
Calendrier prévisionnel
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 0 |