IMA4 2017/2018 P66 : Différence entre versions

De Wiki de Projets IMA
(Page créée avec « __TOC__ <br style="clear: both;"/> =Présentation générale= ==Description== ==Objectifs== =Analyse du projet= ==Positionnement par rapport à l'existant== ==Analyse du ... »)
 
(Recopie de notre travail (pas forcément correctement réparti dans les catégories))
Ligne 5 : Ligne 5 :
  
 
==Description==
 
==Description==
 +
La coupe de France de robotique est un événement où des équipes doivent créer un robot autonome afin de réaliser un maximum de tâches données au préalable dans un cahier des charges. Pour ce projet, nous nous concentrerons sur la réalisation de sa base mobile lui permettant de se déplacer ainsi que son “cerveau” qui lui permettra de le contrôler.
 
==Objectifs==
 
==Objectifs==
  
Ligne 10 : Ligne 11 :
  
 
==Positionnement par rapport à l'existant==
 
==Positionnement par rapport à l'existant==
 +
On se limitera pour cette comparaison aux robots qui visent le même but que le nôtre (à terme) : marquer des points pour les matchs de la coupe de France de robotique. En effet, la robotique est omniprésente dans nos vies maintenant, et il y a un nombre incalculable de bases mobiles existantes, avec différentes caractéristiques : avec des moteurs pas à pas, asservies, rapides, puissantes, capables de se déplacer sur différents terrains… Et ne parlons pas des systèmes de contrôles.
 +
 +
Il y a approximativement 200 participants à l'événement, et donc presque autant de systèmes similaires au notre développés ou en train d’être développés. Cependant leur détails de conceptions sont jalousement gardés par les équipes. On fera donc notre études sur les robots de l’année dernière. On prendra le robot fait par Robotech Lille et celui fait par une autre équipe finaliste, Robotech Legends.
 +
 
==Analyse du premier concurrent==
 
==Analyse du premier concurrent==
 +
 +
Pour progresser il faut apprendre de ses erreurs. C’est pourquoi regarder en quoi le robot de l’année dernière n’a pas été un franc succès nous paraît judicieux pour pouvoir faire quelques chose de plus performant cette année.
 +
 +
L’erreur qui nous avait été fatale l’année dernière était le manque de qualité du contrôleur moteur. Réalisé avec la graveuse numérique de Polytech et non verni, son ancienneté aura eu raison de lui. De plus, on peut constater quelques défauts d’optimisation : le driver L298 sur la carte peut supporter le contrôle de deux moteurs mais n’en contrôle qu’un seul à la fois. La fonction de freinage est rendue inaccessible par le design de la carte. La solution que nous proposons est simple : créer une nouvelle carte, qui sera vernie pour pouvoir tenir plusieurs coupes.
 +
 +
La carte de puissance avait été réalisée de la même façon, et était beaucoup plus grande que nécessaire. Elle risque de d’avoir le même sort que son congénère. La solution que nous proposons est la même que précédemment, refaire une nouvelle carte plus optimisée et vernie.
 +
 +
L’asservissement en position du robot était aussi dérisoire (heureusement, nous n’avions pas eu à l’utiliser). Seule un encodeur sur deux était utilisé, et seule une des deux sorties de l’encodeur était considérée. De plus le fonctionnement de l’Arduino récupérant les données pouvait parfois faire en sorte qu’un front pouvait être négligé. Pour pallier à ça, on utilisera un FPGA, qui permettra de faire tourner autant de processus en simultané que l’on désire sans qu’ils n’interfèrent entre eux.
 +
 +
De plus, l’utilisation seule des encodeurs n’autorise pas les dérapages (même légers). Pour pallier à ça, on utilisera une centrale inertielle comme seconde source pour récupérer la position du robot.
 +
 +
Enfin, un souci assez récurrent que l’on a rencontré est la difficulté à modifier un programme dans un des processeurs du robot. Il fallait pour cela rapprocher son ordinateur du robot, déplacer la carte de son logement, et la brancher (en prenant le risque de déloger un autre composant au passage). Pour améliorer le processus, on fera en sorte que le Raspberry Pi puisse être mis à jour via une communication sans fil et puisse mettre à jour les autres cartes (Arduino, FPGA) à son tour. Cela permettra d’éviter de perdre du temps à rebrancher des composants.
 +
 +
On remarquera que le choix du matériel n’étais pas tellement un problème l’année dernière, ce dernier se situant plutôt de la manière dont il a été utilisé. C’est pourquoi on peut se permettre d’améliorer sans pour autant trop changer ce qui nous est disponible au départ.
 +
 
==Analyse du second concurrent==
 
==Analyse du second concurrent==
 +
 +
Regardons désormais ce qui se fait chez le voisin. Nous avons choisi cette équipe parce qu’elle nous a parlé des méthodes qu’elle a utilisé tout en faisant un bon score.
 +
 +
Cette équipe utilisait un moteur pas à pas afin d’éviter d’avoir à utiliser des encodeurs. Cependant, le caractère discret de la rotation du moteur rajoute un phénomène de glissement, qu’il est difficilement possible de calculer. Pour réduire ce phénomène, nous utilisons des moteurs à courant continu, et nous récupérons leur rotation à l’aide d’encodeurs. Un régulateur PID permet alors de réduire les variations de vitesse trop brusques.
 +
 +
Ils avaient un système de LEDs pour pouvoir savoir où en était le robot dans son programme, et ainsi faciliter le débogage des programmes. Pour reprendre ce principe et l’améliorer, on enregistrera toutes les informations que le système puisse obtenir, et on les transmet par liaison sans fil pour un débogage encore plus simple.
 +
 +
Enfin, ils utilisaient des microcontrôleurs STMicroelectronics pour tout le contrôle du robot. Bien que ces cartes soient très puissantes, elles embarquent un système d’exploitation multi-tâches. Cela simplifie énormément l’étape de programmation, cependant le multi-tâche rajoute de la latence pour les entrées sorties, et perd donc en précision. À la place, nous utiliserons trois puces (deux micro-contrôleurs et un FPGA) plus ou moins complexes parfaitement adaptées à leur tâche. On pourra aussi se vanter d’avoir un robot totalement open-source. Ces puces seront chargées avec le strict minimum pour répondre aux contraintes du cahier des charges, ni plus, ni moins.
 +
 +
Certes, certaines de ces “améliorations” ne sont pas nécessaires pour l’accomplissement du cahier des charges et/ou du défi. Les autres méthodes que nous n’utilisons pas peuvent être “suffisantes”, preuve en est, cette équipe est arrivée en finale alors que d’autres équipes avec des techniques similaires aux nôtres sont arrivées bien plus bas. Mais où est le challenge si on se contente du fait que ça fonctionne ?
 +
 
==Scénario d'usage du produit ou du concept envisagé==
 
==Scénario d'usage du produit ou du concept envisagé==
 +
 +
Le scénario d’usage voulu serait de jouer et de remporter un match de la coupe de robotique. Cependant, cela ne pourra être atteint sans un travail hors contexte de ce projet, donc voici un scénario type utilisant toutes les éléments que nous aurons eu à réaliser pour ce projet.
 +
 +
Lorsque l’on appuie sur un bouton du robot, il doit se déplacer en suivant un trajet prédéfini ou aléatoire sur un terrain plat. Ce terrain peut être composé de différentes matières. Il possède des mur et des obstacles, si ces derniers se trouvent sur le trajet du robot, ce dernier émet un signal (sonore ou lumineux) et change de trajectoire. Il doit à terme revenir à sa position exacte de départ, avec une faible dérive même en étant passé sur sur des surfaces différentes. Des robots utilisant des capteurs similaires à ceux utilisés par le robot peuvent être disposés sur le parcours, ils doivent être évités mais ne pas faire de faux positifs liés aux interférences. L’utilisateur peut alors se connecter au robot via une communication sans fil et récupérer les journaux de fonctionnement du robot pendant son parcours.
 +
 
==Réponse à la question difficile==
 
==Réponse à la question difficile==
  
Ligne 18 : Ligne 54 :
  
 
==Cahier des charges==
 
==Cahier des charges==
 +
 +
Le robot (du moins la partie du robot sur laquelle nous travaillons) devra répondre aux contraintes suivantes :
 +
 +
'''Réutilise le matériel disponible.''' La création depuis zéro d’un tel robot est largement hors-budget pour un projet IMA4. On utilisera au maximum le matériel mis à disposition par Robotech pour minimiser les dépenses.
 +
 +
'''Se déplace en suivant un parcours.''' Sur une piste de 2m×3m en PVC (type bâche adhésive décorative pour sol). On utilisera pour cela la base mécanique du robot utilisé pour l’année dernière, avec deux moteurs à courant continu faisant tourner des roues par le biais d’un réducteur (la stabilité de la base est assurée par deux roues libres).
 +
 +
'''Est capable de savoir où il est.''' Pour cela on utilisera les encodeurs des moteurs. Les valeurs seront lues via un FPGA qui transmettra les informations par liaison série au système de contrôle.
 +
 +
'''Asservit son déplacement.''' On utilisera pour cela un régulateur PID implémenté sur le FPGA. Les variables de ce dernier seront envoyées par le système de contrôle.
 +
 +
'''Évite les obstacles à l’avant et à l’arrière.''' Le parcours à réaliser est statique, cependant une protection basique contre les imprévus semble nécessaire.
 +
 +
'''Résiste aux interférences causées par d’autres capteurs de distance de même type.''' Il y aura d’autres robots présents sur la piste, et certains d’entre eux pourront utiliser les mêmes capteurs que nous utilisons. Il faudra donc faire en sorte que les interférences ne perturbent en rien le bon fonctionnement de notre robot.
 +
 +
'''Possède un circuit imprimé de puissance et d'un contrôleur moteur “maison”.''' Ils seront dimensionnés, modélisés sur un logiciel de conception de PCB (Altium, Eagle, Kicad…) puis imprimés à Polytech et éventuellement en sous-traitance pour pouvoir faire du double-couche et améliorer la finition.
 +
Nous devrons réaliser une carte de puissance convertissant une tension de 14.8V sortant d’une batterie LiPo vers les différentes tensions de travail à savoir 5v et 24v pour le robot principal.
 +
 +
Le contrôleur moteur utilisera un pont en H, deux contrôleurs seront étudiés :
 +
 +
- “haut niveau” : conception d’une carte utilisant un composant de type L298
 +
 +
- “bas niveau” : réalisation de notre propre pont en H.
 +
 +
'''Possède un système de contrôle tournant sous un système d’exploitation “maison”.''' Le système de contrôle est un Rasbperry Pi, qui s’occupera de coordonner tout le reste du robot. Le système d’exploitation qu’il embarquera devra posséder le minimum nécessaire au bon fonctionnement du robot afin de diminuer la latence et l’overhead créé par un système d’exploitation dit desktop (ex : Raspbian). Le système devra être capable de :
 +
 +
- Démarrer en moins de 5 secondes après un arrêt électrique
 +
 +
- Utiliser un minimum de processeur et de mémoire vive quand le robot n’est pas en action
 +
 +
- Assurer une communication avec l’Arduino et le FPGA (directe ou non)
 +
 +
- Pouvoir être mis à jour via une communication sans fil (Wi-Fi ou Bluetooth donné par le Raspberry Pi 3)
 +
 +
- Pouvoir mettre à jour les programmes de l’Arduino et du FPGA
 +
 +
- Afficher quelques informations sur un afficheur LCD
 +
 +
- Enregistrer ou transférer les informations sur l’état du robot continuellement pour analyse et débogage.
 +
 +
'''Utilise une centrale inertielle (IMU) comme source secondaire pour l’asservissement.''' Cela afin d’éviter de ne dépendre que sur les codeurs du moteur pour savoir ou se trouve le robot sur la piste. Cela peut être utile en cas de dérapage des roues, qui conduirait à une dérive. Il faudra trouver comment intégrer ces données dans la boucle de retour de manière efficace.
 +
 
==Choix techniques : matériel et logiciel==
 
==Choix techniques : matériel et logiciel==
 
==Liste des tâches à effectuer==
 
==Liste des tâches à effectuer==

Version du 27 novembre 2017 à 10:34


Présentation générale

Description

La coupe de France de robotique est un événement où des équipes doivent créer un robot autonome afin de réaliser un maximum de tâches données au préalable dans un cahier des charges. Pour ce projet, nous nous concentrerons sur la réalisation de sa base mobile lui permettant de se déplacer ainsi que son “cerveau” qui lui permettra de le contrôler.

Objectifs

Analyse du projet

Positionnement par rapport à l'existant

On se limitera pour cette comparaison aux robots qui visent le même but que le nôtre (à terme) : marquer des points pour les matchs de la coupe de France de robotique. En effet, la robotique est omniprésente dans nos vies maintenant, et il y a un nombre incalculable de bases mobiles existantes, avec différentes caractéristiques : avec des moteurs pas à pas, asservies, rapides, puissantes, capables de se déplacer sur différents terrains… Et ne parlons pas des systèmes de contrôles.

Il y a approximativement 200 participants à l'événement, et donc presque autant de systèmes similaires au notre développés ou en train d’être développés. Cependant leur détails de conceptions sont jalousement gardés par les équipes. On fera donc notre études sur les robots de l’année dernière. On prendra le robot fait par Robotech Lille et celui fait par une autre équipe finaliste, Robotech Legends.

Analyse du premier concurrent

Pour progresser il faut apprendre de ses erreurs. C’est pourquoi regarder en quoi le robot de l’année dernière n’a pas été un franc succès nous paraît judicieux pour pouvoir faire quelques chose de plus performant cette année.

L’erreur qui nous avait été fatale l’année dernière était le manque de qualité du contrôleur moteur. Réalisé avec la graveuse numérique de Polytech et non verni, son ancienneté aura eu raison de lui. De plus, on peut constater quelques défauts d’optimisation : le driver L298 sur la carte peut supporter le contrôle de deux moteurs mais n’en contrôle qu’un seul à la fois. La fonction de freinage est rendue inaccessible par le design de la carte. La solution que nous proposons est simple : créer une nouvelle carte, qui sera vernie pour pouvoir tenir plusieurs coupes.

La carte de puissance avait été réalisée de la même façon, et était beaucoup plus grande que nécessaire. Elle risque de d’avoir le même sort que son congénère. La solution que nous proposons est la même que précédemment, refaire une nouvelle carte plus optimisée et vernie.

L’asservissement en position du robot était aussi dérisoire (heureusement, nous n’avions pas eu à l’utiliser). Seule un encodeur sur deux était utilisé, et seule une des deux sorties de l’encodeur était considérée. De plus le fonctionnement de l’Arduino récupérant les données pouvait parfois faire en sorte qu’un front pouvait être négligé. Pour pallier à ça, on utilisera un FPGA, qui permettra de faire tourner autant de processus en simultané que l’on désire sans qu’ils n’interfèrent entre eux.

De plus, l’utilisation seule des encodeurs n’autorise pas les dérapages (même légers). Pour pallier à ça, on utilisera une centrale inertielle comme seconde source pour récupérer la position du robot.

Enfin, un souci assez récurrent que l’on a rencontré est la difficulté à modifier un programme dans un des processeurs du robot. Il fallait pour cela rapprocher son ordinateur du robot, déplacer la carte de son logement, et la brancher (en prenant le risque de déloger un autre composant au passage). Pour améliorer le processus, on fera en sorte que le Raspberry Pi puisse être mis à jour via une communication sans fil et puisse mettre à jour les autres cartes (Arduino, FPGA) à son tour. Cela permettra d’éviter de perdre du temps à rebrancher des composants.

On remarquera que le choix du matériel n’étais pas tellement un problème l’année dernière, ce dernier se situant plutôt de la manière dont il a été utilisé. C’est pourquoi on peut se permettre d’améliorer sans pour autant trop changer ce qui nous est disponible au départ.

Analyse du second concurrent

Regardons désormais ce qui se fait chez le voisin. Nous avons choisi cette équipe parce qu’elle nous a parlé des méthodes qu’elle a utilisé tout en faisant un bon score.

Cette équipe utilisait un moteur pas à pas afin d’éviter d’avoir à utiliser des encodeurs. Cependant, le caractère discret de la rotation du moteur rajoute un phénomène de glissement, qu’il est difficilement possible de calculer. Pour réduire ce phénomène, nous utilisons des moteurs à courant continu, et nous récupérons leur rotation à l’aide d’encodeurs. Un régulateur PID permet alors de réduire les variations de vitesse trop brusques.

Ils avaient un système de LEDs pour pouvoir savoir où en était le robot dans son programme, et ainsi faciliter le débogage des programmes. Pour reprendre ce principe et l’améliorer, on enregistrera toutes les informations que le système puisse obtenir, et on les transmet par liaison sans fil pour un débogage encore plus simple.

Enfin, ils utilisaient des microcontrôleurs STMicroelectronics pour tout le contrôle du robot. Bien que ces cartes soient très puissantes, elles embarquent un système d’exploitation multi-tâches. Cela simplifie énormément l’étape de programmation, cependant le multi-tâche rajoute de la latence pour les entrées sorties, et perd donc en précision. À la place, nous utiliserons trois puces (deux micro-contrôleurs et un FPGA) plus ou moins complexes parfaitement adaptées à leur tâche. On pourra aussi se vanter d’avoir un robot totalement open-source. Ces puces seront chargées avec le strict minimum pour répondre aux contraintes du cahier des charges, ni plus, ni moins.

Certes, certaines de ces “améliorations” ne sont pas nécessaires pour l’accomplissement du cahier des charges et/ou du défi. Les autres méthodes que nous n’utilisons pas peuvent être “suffisantes”, preuve en est, cette équipe est arrivée en finale alors que d’autres équipes avec des techniques similaires aux nôtres sont arrivées bien plus bas. Mais où est le challenge si on se contente du fait que ça fonctionne ?

Scénario d'usage du produit ou du concept envisagé

Le scénario d’usage voulu serait de jouer et de remporter un match de la coupe de robotique. Cependant, cela ne pourra être atteint sans un travail hors contexte de ce projet, donc voici un scénario type utilisant toutes les éléments que nous aurons eu à réaliser pour ce projet.

Lorsque l’on appuie sur un bouton du robot, il doit se déplacer en suivant un trajet prédéfini ou aléatoire sur un terrain plat. Ce terrain peut être composé de différentes matières. Il possède des mur et des obstacles, si ces derniers se trouvent sur le trajet du robot, ce dernier émet un signal (sonore ou lumineux) et change de trajectoire. Il doit à terme revenir à sa position exacte de départ, avec une faible dérive même en étant passé sur sur des surfaces différentes. Des robots utilisant des capteurs similaires à ceux utilisés par le robot peuvent être disposés sur le parcours, ils doivent être évités mais ne pas faire de faux positifs liés aux interférences. L’utilisateur peut alors se connecter au robot via une communication sans fil et récupérer les journaux de fonctionnement du robot pendant son parcours.

Réponse à la question difficile

Préparation du projet

Cahier des charges

Le robot (du moins la partie du robot sur laquelle nous travaillons) devra répondre aux contraintes suivantes :

Réutilise le matériel disponible. La création depuis zéro d’un tel robot est largement hors-budget pour un projet IMA4. On utilisera au maximum le matériel mis à disposition par Robotech pour minimiser les dépenses.

Se déplace en suivant un parcours. Sur une piste de 2m×3m en PVC (type bâche adhésive décorative pour sol). On utilisera pour cela la base mécanique du robot utilisé pour l’année dernière, avec deux moteurs à courant continu faisant tourner des roues par le biais d’un réducteur (la stabilité de la base est assurée par deux roues libres).

Est capable de savoir où il est. Pour cela on utilisera les encodeurs des moteurs. Les valeurs seront lues via un FPGA qui transmettra les informations par liaison série au système de contrôle.

Asservit son déplacement. On utilisera pour cela un régulateur PID implémenté sur le FPGA. Les variables de ce dernier seront envoyées par le système de contrôle.

Évite les obstacles à l’avant et à l’arrière. Le parcours à réaliser est statique, cependant une protection basique contre les imprévus semble nécessaire.

Résiste aux interférences causées par d’autres capteurs de distance de même type. Il y aura d’autres robots présents sur la piste, et certains d’entre eux pourront utiliser les mêmes capteurs que nous utilisons. Il faudra donc faire en sorte que les interférences ne perturbent en rien le bon fonctionnement de notre robot.

Possède un circuit imprimé de puissance et d'un contrôleur moteur “maison”. Ils seront dimensionnés, modélisés sur un logiciel de conception de PCB (Altium, Eagle, Kicad…) puis imprimés à Polytech et éventuellement en sous-traitance pour pouvoir faire du double-couche et améliorer la finition. Nous devrons réaliser une carte de puissance convertissant une tension de 14.8V sortant d’une batterie LiPo vers les différentes tensions de travail à savoir 5v et 24v pour le robot principal.

Le contrôleur moteur utilisera un pont en H, deux contrôleurs seront étudiés :

- “haut niveau” : conception d’une carte utilisant un composant de type L298

- “bas niveau” : réalisation de notre propre pont en H.

Possède un système de contrôle tournant sous un système d’exploitation “maison”. Le système de contrôle est un Rasbperry Pi, qui s’occupera de coordonner tout le reste du robot. Le système d’exploitation qu’il embarquera devra posséder le minimum nécessaire au bon fonctionnement du robot afin de diminuer la latence et l’overhead créé par un système d’exploitation dit desktop (ex : Raspbian). Le système devra être capable de :

- Démarrer en moins de 5 secondes après un arrêt électrique

- Utiliser un minimum de processeur et de mémoire vive quand le robot n’est pas en action

- Assurer une communication avec l’Arduino et le FPGA (directe ou non)

- Pouvoir être mis à jour via une communication sans fil (Wi-Fi ou Bluetooth donné par le Raspberry Pi 3)

- Pouvoir mettre à jour les programmes de l’Arduino et du FPGA

- Afficher quelques informations sur un afficheur LCD

- Enregistrer ou transférer les informations sur l’état du robot continuellement pour analyse et débogage.

Utilise une centrale inertielle (IMU) comme source secondaire pour l’asservissement. Cela afin d’éviter de ne dépendre que sur les codeurs du moteur pour savoir ou se trouve le robot sur la piste. Cela peut être utile en cas de dérapage des roues, qui conduirait à une dérive. Il faudra trouver comment intégrer ces données dans la boucle de retour de manière efficace.

Choix techniques : matériel et logiciel

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


Prologue

Semaine 1

Semaine 2

Documents Rendus