IMA5 2018/2019 P30 : Différence entre versions
(→Simon) |
(→Programmation) |
||
Ligne 173 : | Ligne 173 : | ||
Le programme Arduino sera d'abord repris du projet de Nicolas Havard, de l'année précédente. Le contrôle des moteurs par l'Arduino sera un peu amélioré afin que la transition de marche avant à marche arrière se face sans problèmes. En effet, jusque là lors d'un passage de marche avant à marche arrière, le robot ne passait pas forcément par l'état arrêt, et cet état est nécessaire pour empécher les régulateurs de se bloquer. Ca à donc été ajouté au programme. Il a ensuite fallut ajouter la lecture des senseurs du robot et envoyer le résultat de cette lecture sur le port série. | Le programme Arduino sera d'abord repris du projet de Nicolas Havard, de l'année précédente. Le contrôle des moteurs par l'Arduino sera un peu amélioré afin que la transition de marche avant à marche arrière se face sans problèmes. En effet, jusque là lors d'un passage de marche avant à marche arrière, le robot ne passait pas forcément par l'état arrêt, et cet état est nécessaire pour empécher les régulateurs de se bloquer. Ca à donc été ajouté au programme. Il a ensuite fallut ajouter la lecture des senseurs du robot et envoyer le résultat de cette lecture sur le port série. | ||
− | Ensuite, la dernière partie du programme concernant l'Arduino consiste à envoyer des informations sur le port série, puis à lire la réponse de l'ordinateur, qui à terme va remplacer le joystick pour la transmission d'ordres au robot. Il s'agit donc d'écrire un programme en C qui puisse utiliser le port série en lecture/écriture. | + | Ensuite, la dernière partie du programme concernant l'Arduino consiste à envoyer des informations sur le port série, puis à lire la réponse de l'ordinateur, qui à terme va remplacer le joystick pour la transmission d'ordres au robot. Il s'agit donc d'écrire un programme en C qui puisse utiliser le port série en lecture/écriture. Ceci est fait sans trop de problèmes, on a maintenant un programme Arduino capable de transmettre l'état des capteurs à l'ordinateur et de lire l'état du joystick virtuel donné par l'ordinateur, afin de réaliser le mouvement demandé. |
+ | |||
+ | De plus, on fait en sorte que le programme en C se lance dès l'allumage de l'ordinateur, et qu'il tourne en boucle afin d'être actif en permanence dès l'allumage du robot. | ||
===Maintien=== | ===Maintien=== |
Version du 25 janvier 2019 à 13:55
Présentation générale
Description
Encadrants : Xavier Redon / Alexandre Boé / Thomas Vantroys
Objectif : Contrôler un robot de grande taille à partir d'une tablette.
Description : Un robot de grande taille a été réalisé à partir de moteurs de fauteuil roulant.
Le système de contrôle électrique a été détruit lors d'un précédent projet, il est à reprendre totalement.
Le système de commande à base d'Arduino commandant des contrôleurs de moteurs de puissance doit être revu lui aussi.
Il faut ensuite s'assurer d'un dispositif d'arrêt d'urgence en cas d'obstacle proche. Pour la détection d'obstacles vous pouvez vous appuyer sur des détecteurs infrarouges et sur une Kinect.
Enfin le PC embarqué doit être configuré pour se connecter sur les points d'accès WiFi de l'école et comporter un site Web permettant ainsi de le contrôler à distance avec les images des Webcam comme retour.
Pour un déplacement dans tous les bâtiments de l'école, prévoir un dispositif pour appuyer sur les boutons des ascenseurs.
Objectifs
- Faire à nouveau rouler le robot, rendre son câblage compréhensible et clair.
- Connecter le robot en wifi grâce à l'ordinateur qui y sera intégré, et réaliser un site web permettant d'accéder au robot.
- Vérifier les capteurs et s'en servir pour contrôler le robot à distance, le faire se déplacer dans Polytech, et le faire prendre les ascenseurs.
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Nous utilisons un robot pré existant, et en grande partie du matériel pré existant. Pour la fixation des cartes dans le robot, nous allons acheter nous mêmes la visserie spécifique dont nous avons besoin si elle n'est pas à notre disposition. L'ordinateur a intégrer au robot, la webcam, l'écran, les régulateurs de moteur, l’Arduino méga, et les batteries sont déjà fournis.
Liste des tâches à effectuer
- Faire rouler à nouveau le robot
- Faire du ménage dans les câblages et tout faire tenir à l'intérieur pour que le robot soit mobile (joystick)
- Installer l'ordinateur et connecter le robot au wifi
- Réaliser un site web permettant de contrôler le robot
- Lire le retour de la webcam et des infrarouges pour le contrôle à distance
- Faire rouler le robot en utilisant le site web et le wifi
- Prendre les ascenseurs?
Calendrier prévisionnel
Contacter Nicolas Havard (Semaine 1)
Lire la documentation pertinente (Semaine 1)
Refaire les câblages, faire du rangement dans le robot (Semaine 1)
Comprendre le fonctionnement des régulateurs de vitesse et du robot (Semaine 1)
Etape 1: Contrôler le robot à l’aide de la manette (Semaine 1)
Y intégrer un ordinateur pour contrôler le robot de cette façon (via le port série) (Semaine 2)
Faire le site internet de contrôle du robot (Semaine 3/4)
Connecter le robot en wifi (Semaine 3/4)
Etape 2: Contrôler le robot à l’aide du site en wifi (Semaine 3/4)
Gérer la webcam (Semaine 5)
Tester les capteurs (Semaine 5)
Etape 3: Contrôler le robot à l’aide du wifi et des capteurs à distance (Semaine 5)
Wiki (Toutes les semaines) (Semaines 1-8)
Si on en a le temps: utilisation des ascenseurs.
Réalisation du Projet
Semaine 1
Nos objectifs pour la semaine sont de démonter, nettoyer, et remonter correctement le robot, afin que le câblage soit lisible et que tout puisse y rentrer. Nous allons également le tester afin de s'assurer qu'il roule sans soucis et que le contrôle au joystick soit fonctionnel. Si possible, nous désirons également corriger le système d'arrêt d'urgence et de démarrage pour qu'ils soient accessibles à la fois de façon logicielles et physiques, en parallèle. De cette façon, lorsque l'on passera à l'étape du wifi, nous pourrons contrôler le robot entièrement à distance. Il est très important que tout fonctionne sans soucis, nous comptons ensuite nous baser sur le contrôle au joystick pour créer le contrôle via l'ordinateur. Si l'on réussi à disposer d'un robot fonctionnel, et de bons plans pour y intégrer l'ordinateur et la wifi rapidement à la semaine 2, ce sera un bon début de projet.
Jour 1: Prendre connaissance de l'état du robot, et des choses à faire avant de pouvoir réellement commencer le projet. Création du wiki. Lecture de la documentation pré existante. Création d'un plan du robot et mesure de toutes ses dimensions importantes.
Jour 2: Réaliser un schéma des branchements actuels puis tout débrancher pour réorganiser le robot. Retirer les plaques de soutien actuelles, réduire la taille des borniers, trouver un moyen élégant et efficace de soutenir les différents éléments composant le robot. Comprendre le PCB présentement réalisé pour pouvoir le reproduire de façon potentiellement plus efficace, peut être avec un shield supplémentaire sur l'Arduino Méga.
Jour 3-5: Réaliser le PCB et le système de compartimentation du robot afin d'essayer de la refaire fonctionner pour la fin de la semaine 1 ou le début de la semaine 2, et pouvoir ensuite s'attaquer au projet en lui-même.
Schéma du PCB actuel
Le PCB actuel rempli un objectif principal, qui est de diminuer le nombre de câbles présents à l'intérieur du robot, et rendre le tout plus lisible et agréable à regarder. Pour cela, il fait le lien entre les régulateurs de vitesse, le joystick, les relais, l'Arduino Mega et les batteries.
En un premier temps, le joystick doit pouvoir transmettre des informations à l'Arduino pour la commande en vitesse. Un câble 'ethernet' RJ12, et le port associé, permettent de connecter l'Arduino au PCB, et 6 pins relient le PCB à l'Arduino pour cette fonction.
L'Arduino, en suivant ces informations, va commander les relais, qui influent sur les entrées des régulateurs. Le PCB présente donc des pins pour l'Arduino, pour y connecter les relais, et ensuite des pins pour les relais, pour y connecter les régulateurs.
L'intérêt de chaque pin a été intégré au PCb sur le silkscreen, afin de pouvoir s'en servir facilement et sans devoir toujours en réfèrer à la documentation.
Deux versions ont été réalisées, l'une un PCB standard, et l'autre un PCB destiné à être un shield qu'on puisse fixer sur le sensor shield déjà présent, pour encore réduire le câblage, et simplifier le tout.
On pourra conserver ce PCB à l'avenir car l'objectif est ensuite de simplement remplacer le joystick pour l'ordinateur, qui viendra se brancher sur la même prise RJ11 et enverra les mêmes informations que le joystick. Nous créons donc un système utilisable avec n'importe quel port RJ11 envoyant des informations correctes.
Plans pour le maintien des composants au sein du robot
Avant de pouvoir faire rouler le robot et le tester dans Polytech, nous devons fixer tous les composants présents dans le corps du robot. Pour ce faire, nous devons dessiner :
- 1 étage en bas pour maintenir les batteries
- 2 piliers pour fixer le bornier présent en bas et le relais
- 1 étage en haut qui va supporter toute la partie électronique (et ses pieds pour le maintenir élevé)
- 2 supports pour fixer les régulateurs de vitesse
- 1 tour qui contiendra PCB, Arduino Méga, Relais et l'ordinateur
Nous avons pris les mesures du robot comme faire se pouvait et avons dessiné un premier jet que voici :
Après l'avoir installé dans le robot, nous avons remarqué quelques modifications à faire :
- Les pieds de l'étage supérieur sont inutiles puisqu'il est déjà soutenu par les piliers fixant le bornier et le relais, nous pouvons donc les enlever
- Les trous faits pour laisser les bouchons des batteries passer sont eux aussi inutiles puisque nous avons acheter des colliers plats pour remplacer les bouchons et gagner de la place
- Nous enlevons également la barre entre les deux batteries sinon nous ne pouvons pas mettre les batteries
- Enfin nous ajustons la taille des étages et de la hauteur des piliers pour qu'ils soient adaptés au robot
Ce qui nous amène donc au deuxième jet :
Pour celui-ci, nous avons aussi voulu essayer de mettre l'emplacement de la future boîte qui contiendra le PC et l'arduino à droite afin de voir quel endroit lui convient le mieux.
Cette fois-ci, les étages sont légèrement trop long, donc en nous basant sur les deux essais précédents, nous allons pouvoir trouver une juste valeur pour la version finale. Il en va de même pour la longueur des encoches que nous avions agrandit.
Grâce aux deux versions précédentes, nous avons pu dessiner une troisième version qui sera aussi la version finale découpée en Plexi.
Celle-ci sera terminée et découpée la semaine prochaine.
Semaine 2
Nouveau PCB
Changement de design du PCB, on passe d'un shield a mettre sur le shield actuel, à un shield qui remplacerais le shield actuel et remplirais donc toutes les fonctionnalités demandées d'un coup. Ce shield sera posé directement sur l'Arduino Mega, nous allons utiliser directement les pins dont nous avons besoin et les autres seront toujours accessibles, grâce à des connecteurs femelle similaires à ceux présents sur l'Arduino Mega de base. De par sa fonction, ce shield doit être très bien documenté afin qu'il soit facilement compréhensible et utilisable.
Ce shield disposera d'une led pour le debug, de pins pour les deux régulateurs, les relais, ainsi que les DAC. Une prise RJ11 sera présente pour le joystick tant qu'on en aura besoin. Nous allons également inclure 18 pins à 5V et 18 pins au Gnd sur le PCB afin de pouvoir utiliser autant de capteurs que l'on désire. Les quelques résistances nécesaires aux branchements sont également inclues sur ce montage.
Jusq'aù mardi de la deuxième semaine, le deuxième PCB est en cours de design. Il est ensuite envoyé à Monsieur Boé pour approbation. Une fois que ces premières étapes de PCB et rangement dans le robot sont terminées, un plan est réalisé pour les semaines restantes, afin de savoir quoi faire de jour en jour.
Cependant, les PCB réalisés à Polytech ne peuvent pas être vraiment fait en double couche, du fait de l'impossibilité de réaliser des vias métalliques. De plus, les câbles étaient initialement trop fins. Il a donc fallut réaliser un nouveau routage du PCB en simple couche. J'ai néamoins pu optimiser le routage, ce qui fait que l'on n'aura besoin que de deux jumpers pour finaliser le routage. Les gravures ont également été diminuées afin de simplifier le travail à la découpe.
Design des pièces de maintien
Cette semaine, nous avons terminé le design des étages du haut et du bas qui serviront à créer des compartiments au sein du robot.
Grâce aux deux versions tests dessinées et découpées la semaine dernière, nous avons pu élaborer une troisième et dernière version. Pour celle-ci, nous avons ajuster la longueur des étages, nous avons ajouté des encoches pour les derniers éléments qui n'avaient pas encore de place attitrée. De plus, nous avons ajouté les trous de vis dans les piliers pour aider à fixer les éléments.
Nous avons pris le soin de faire les découpes et de tester le résultat au fur et à mesure pour éviter tout problème et gâchis de matériau. Nous avons donc découpé les deux étages. Malheureusement, la découpeuse est devenue HS alors que nous devions découper les piliers ce qui retardera le processus. En attendant, nous allons réaliser le premier jet de design de notre site internet pour la commande à distance du robot.
Après seulement deux jours, la découpeuse était à nouveau opérationnelle, nous avons donc repris le cours normal de notre projet. Nous avons donc découpé les piliers qui vont servir à maintenir l'étage du haut à une certaine hauteur de l'étage du bas et sur lesquels seront vissés certaines pièces du robot.
Une fois ces pièces prêtes, nous avons entamé de remonter le robot. Cette partie a pris plus de temps que prévu puisque les câbles sont assez rigides et il est compliqué de leur donner la forme que l'on souhaite. De plus, comme nous avons changer la place des différents éléments du robot, la longueur des câbles n'est plus forcément adapté et nous avons du les ajuster ce qui s'est révélé assez long.
Entre temps, nous avons commencé le design des boîtes qui serviront à garder en place l'électronique de l'étage supérieur et nous les testerons la semaine prochaine. Nous finirons également de monter le robot la semaine prochaine.
Test des capteurs
Les valeurs renvoyées par les capteurs ne correspondent pas vraiment aux valeurs indiquées sur la datasheet. Cependant, il semblerait qu'il puisse détecter des objets plus proches et moins loin que prévus, ce qui correspond mieux à nos besoins.
Insérer graphique, tableau, référence
Semaine 3
Convertisseur
La première chose à faire à été de faire sertir les câbles qui seraient utilisés pour le convertisseur 24->12V. Ces câbles devaient être présents pour la finition de l'étage du bas du robot. Il n'est possible de sertir que des câbles souples, il n'a donc pas été possible d'utiliser des câbles rigides utilisés dans le reste du robot.
Programmation
Ensuite un premier test de la Kinect a été réalisé, afin de vérifier la simplicité d'utilisation de celle-ci. Pour notre application actuelle, à savoir simplement afficher le retour vidéo sur un écran, il est très simple d'installer les bibliothèques recquises sont linux et d'afficher la vidéo sur notre écran. Il sera ensuite simplement question d'ouvrir ce flux vidéo en le redirigeant vers le serveur plutôt que vers un écran directement.
Le programme Arduino sera d'abord repris du projet de Nicolas Havard, de l'année précédente. Le contrôle des moteurs par l'Arduino sera un peu amélioré afin que la transition de marche avant à marche arrière se face sans problèmes. En effet, jusque là lors d'un passage de marche avant à marche arrière, le robot ne passait pas forcément par l'état arrêt, et cet état est nécessaire pour empécher les régulateurs de se bloquer. Ca à donc été ajouté au programme. Il a ensuite fallut ajouter la lecture des senseurs du robot et envoyer le résultat de cette lecture sur le port série.
Ensuite, la dernière partie du programme concernant l'Arduino consiste à envoyer des informations sur le port série, puis à lire la réponse de l'ordinateur, qui à terme va remplacer le joystick pour la transmission d'ordres au robot. Il s'agit donc d'écrire un programme en C qui puisse utiliser le port série en lecture/écriture. Ceci est fait sans trop de problèmes, on a maintenant un programme Arduino capable de transmettre l'état des capteurs à l'ordinateur et de lire l'état du joystick virtuel donné par l'ordinateur, afin de réaliser le mouvement demandé.
De plus, on fait en sorte que le programme en C se lance dès l'allumage de l'ordinateur, et qu'il tourne en boucle afin d'être actif en permanence dès l'allumage du robot.
Maintien
Une fois les pièces rassemblées, nous avons pu commencer le montage du robot. Gros câbles durs à plier à notre volonté. Ajuster l'étage. Casser l'étage, le redécouper. Test découpe boite convertisseur. Partie dénudé abimé => on coupe et on dénude => prend du temps car gros cables compliqués Pour les plier, les skotcher toute la nuit pour qu'ils prennent la forme => ça fonctionne!! Jour d'après => montage de l'étage du bas dernier détail à régler => coups de maillet sur les cosses des batteries pour qu'elles s'insèrent.
Site
A partir du design du site, nous avons choisi un bootstrap pour gagner du temps et faire un truc pas trop moche. On a ensuite adapté ce bootstrap à nos besoins (supprimer tout ce qui n'est pas utile/nécessaire) Modifié la page html index.html pour qu'elle nous corresponde à nous et notre projet.
En parallèle recherches sur le joystick virtuel.