Projet OpenDog

Dans le cadre de la première année du cycle ingénieur à Polytech Angers tous les étudiants dela spécialité SAGI ont à faire un projet de conception. Nous avons décider de travailler sur le chien robot OpenDog.

Le projet OpenDog est initialement réalisé par James Burton, un «Youtubeur» concepteur de robots en tous genres. Une série de vidéos relate la conception, la réalisation, ainsi que la programmation de ce robot.
Robot OpenDog

Nous avons consacré les premières séances à la prise en main de l’existant et à la suite de celles-ci avons décidé d’initialement nous séparer les tâches en trois parties afin de faciliter le travaille en équipe.

Shield :
La carte Arduino Mega étant la pièce centrale de notre projet. En effet, les 6 cartes ODrives ainsi que les 12 capteurs fin de course de notre chien robot sont reliés à la carte Arduino. Elle était donc évident pour nous dès le début que si on ne faisait pas quelque chose la carte deviendrais désordonnée et donc incompréhensible.

Plaque d'essais pour la liaison d'un capteur fin de course à la carte Arduino

Plaque d’essais pour la liaison d’un capteur fin de course à la carte Arduino


Liaison entre une carte Arduino Uno et une carte ODrive

Liaison entre une carte Arduino Uno et une carte ODrive


Nous avons donc pris la décision de faire un shield qui se poserait sur la carte ce qui permettrait de faire en sorte que les sorties soient ordonnées de manière à satisfaire nos besoins. Il nous fallait donc :
Pour chacune des cartes ODrive :

    Deux sorties reliées à des broches de la Mega
    Une sortie reliée à la masse

Pour chacun des capteurs fin de course :

    Une sortie reliée à un côté d’une résistance (soudé sur le shield) et à une broche analogique
    Une sortie reliée au 5V de l’Arduino
    Relier l’autre côté des résistances à la masse

Après avoir conceptualisé, fabriqué et finalisé le shield une information qui nous avait échappés depuis le début nous posa problème. En effet, nous ne savions pas qu’afin que la carte ODrive puisse correctement communiquer avec l’Arduino, il fallait que la sortie Tx de l’ODrive soit branché à des broches spécifique de l’Arduino afin que celles-ci puissent fonctionner en tant que Rx. Ces broches étant différent entre la Uno (utilisé dans les tests jusqu’ici) et la Mega notre shield était devenu inutilisable.

N’ayant constaté ce problème qu’aux dernières séances attribuées au projet nous n’avons pas pu refaire un shield utilisable sur notre carte Arduino.

Programmation :

En plus de l’électronique, ce projet portait sur le domaine de la programmation. Pour ce faire, nous avions à disposition une carte arduino à programmer. Celle-ci est reliée à une autre carte, une carte ODrive, qui permet elle d’alimenter les moteurs de notre robot.
Le travail consistait dans un premier temps de reprendre ce qui avait déjà été fait l’année précédente sur le projet. Un premier code a été réalisé permettant de faire tourner un moteur, malheureusement la commande était peu précise. Il a donc fallu reprendre le code et rendre le contrôle du moteur plus précis.

Une première fonction détermine la position d’origine du moteur :
Le moteur tourne jusqu’à toucher un bouton, il est en position initiale.
Ensuite on lit la valeur de position que le codeur retourne, on connaît la position initiale.
Il ne nous reste plus qu’à l’additionner à la position désirée et à envoyer cette nouvelle valeur au moteur, on peut désormais contrôler notre moteur de la manière la plus fiable possible.

Une seconde fonction transforme un angle commandé en position :
Les moteur servent à actionner les pattes de notre robot, nous envoyons donc un angle sur les différentes articulations et cette fonction le renvoie en une commande de position du moteur.
Premièrement à l’aide de trigonométrie
Schématisation du fonctionnement  d'une moitié de patte
On peut déterminer la longueur par rapport à l’angle commandé.
Ensuite, on peut déterminer la position à laquelle le moteur doit se diriger car on connaît le pas de la vis et le nombre de positions pour un tour de moteur.
Il ne nous reste plus qu’à ajouter cette position à la position initiale et à envoyer cette valeur au moteur.
Voilà, nous pouvons contrôler l’angle à n’importe quel instant et dans n’importe quelle position.

Malheureusement, dû à un manque de temps, nous n’avons pas pu approfondir plus sur ce projet.

Câblage :

Une autre partie de notre projet fut de reprendre le câblage existant, de le terminer ainsi que de l’optimiser afin qu’il ne soit pas un frein dans les futurs potentiels mouvements.

Pâte avant la réorganisation des câbles

Pâte avant la réorganisation des câbles


Il a tout d’abord fallu enlever tout les capteurs de fin de course de moteur afin de les câbler. Pour que la liaison avec le shield soit correcte il fallu souder des connecteur à l’extrémité des capteurs de façon à pouvoir les brancher plus tard à la carte Arduino. Dans un second temps il a fallu sortir des fils pour l’alimentation de toute les carte ODrive et les relier puisque une seule batterie alimente toute ces dernières. D’autres câbles ont ensuite été posé pour relier les moteurs aux cartes ODrive (visible en bleu ci-dessus).
Pâte après la réorganisation des câbles

Pâte après la réorganisation des câbles


Enfin on a pu mettre en place une gaine sur chaque jambe dans lesquels faire passer tous les câbles relatifs à cette partie. Ensuite il a fallu les raccourcir afin qu’ils ne s’emmêlent pas lors des futurs déplacements et en allonger certain, soient dessouder les extrémités côté moteur pour changer les fils.

Pour finir il a fallu fixer le support batterie au centre de l’ensemble de la même façon que nous l’avons fait pour les cales des gaines.

Après avoir positionné la carte Arduino nous avons relié les câbles des capteurs mais n’avons pas fixé ceux servant à transporter les ordres vers les ODrive puisque les soucis évoqué dans la partie programmation n’ont pas pu être résolu sur la carte Arduino d’où les fils visible sur la dernières photos.
Shield de l'Arduino

CRETOIS Marine
FRADET Léo
TIERCELIN Lucas

Virtual Télérobot

Notre projet consiste à simuler les déplacements d’un robot industriel et à utilisé la réalité virtuel pour le contrôler.
Pour cela, nous utilisons Unity 3D et un casque oculus rift.
KUKAKR1000Titan3.jpg484da3c0-7251-4bad-a96d-2fd3cff81f7bZoomRobot ABB KUKA
Unity3D est un moteur de jeux vidéo, il permet de concevoir un environnement virtuel composé de modèles 3D que l’on contrôle par des scripts. Pour notre cas, nous avons un robot ABB KuKa à 6 axes de rotation comme sur l’image ci-dessus. Et un système de calcul de cinématique inverse permettant de contrôler les angles de chaque axe à partir d’une position finale de la tête du robot souhaité.

Pour les déplacements nous avons tout d’abord créés des limites de rotation pour chaque axe du robot, pour générer un mouvement fluide et réaliste.
Ensuite, nous avons testé un script de déplacement avec le clavier pour contrôler chaque axe indépendamment.
Et finalement nous avons fait un environnement dans lequel nous avons disposé 3 boules avec lesquelles le robot peut interagir, toujours contrôlé par le clavier, il se déplace vers une boule différente en fonction de la touche appuyée, il se dirige vers la boule à l’aide du système de calcul de cinématique inverse, et attrape la boule ou la lâche lors de l’appui sur la barre espace.
61ueGFutGgL._AC_SX522_occulus rift
L’Oculus Rift est un périphérique de réalité virtuelle composé d’un casque et de deux manettes, l’idée est de connecter l’oculus à notre environnement unity pour permettre une immersion de l’utilisateur et lui permettre de contrôler le bras avec les manettes de l’oculus.
Pour ceci, nous avons téléchargé « steam Vr » gratuitement sur unity pour introduire le personnage virtuel dans l’environnement du robot, l’idée étant de permettre a l’utilisateur de déplacer la tête du robot et donc que le robot suive la main (manette) de l’utilisateur.

Cette utilisation de la réalité virtuelle pourrait par exemple servir à contrôler un bras robot à distance avec un casque et des manettes pour des opérations délicate ou dangereuse pour l’homme ou encore dans un cadre industrielle pour permettre une coopération homme-machine.

Par Stanislas Launay et Victor Péneau

PROJET BOMBE FACTICE

Bonjour à tous !

En ce début de cycle ingénieur à Polytech Angers, nous avons été amenés à réaliser un projet en rapport avec notre formation (Systèmes Automatisés et Génie Informatique). Nous avons choisi de réaliser une bombe factice. Nous intéressant particulièrement pour son aspect pluridisciplinaire, ce projet combine codage, câblage et technicité. A travers ce dernier nous avons pu de manière ludique et concrète nous exercer à la programmation et l’électronique.                                                                                                                       Les bombes factices sont des artefacts très prisées des joueurs d’airsoft et de paintball. Ils doivent la désamorcer avant la fin d’un compte à rebours en résolvant une énigme.

La réalisation :

Dans un premier temps nous avons énuméré toutes les spécificités relatives à une bombe, qui nous venaient à l’esprit :

-détonation                                                                                                                    -flash                                                                                                                                         -fumée                                                                                                                                  -compte à rebours                                                                                                              -code…etc

Ensuite nous avons cherché un moyen de les mettre en œuvre le plus efficacement possible et dans le temps imparti (33h) .                                                                     Dans un premier temps nous cherchions un support pratique pour faire fonctionner le “cœur” de notre bombe. Nous avons décidé de créer notre système à partir d’un Arduino. Sa simplicité d’utilisation et son prix bon marché en faisaient de notre point de vue le microcontrôleur idéal. En outre, il consomme très peu d’énergie et permet d’effectuer des tâches extrêmement diverses. Il permettra de commander une sirène qui fera office de détonation, un stroboscope pour le flash et un pavé numérique couplé d’un écran LCD pour rentrer un code. Nous avons été obligé de renoncer à la fumée sortant de la mallette lors de l’explosion, par manque de temps et d’imagination pour le réaliser.

La réalisation de la partie fonctionnelle de la bombe s’est déroulée en plusieurs étapes :

Étape 1 : Câblage

A l’aide de leur documentation nous avons branché les composants entre eux : Soudage des afficheurs 7 segments, câblage de l’arduino, la breadboard, l’ecran LCD, la sirène, le pavé numérique etc..

Etape 2 : La temporisation

Nous avons fait en sorte que dès l’ouverture de la mallette le compte à rebours se lance. Pour cela nous avons utilisé un bouton poussoir normalement fermé, qui branché entre la batterie et l’arduino permet tout simplement de couper l’alimentation de l’arduino à la fermeture de la mallette. Le réglage de la temporisation se code assez facilement sur arduino en décrémentant toutes les secondes la valeur 1 à une variable.

Etape 3 : Programmation du système de désamorçage

1. Une suite de chiffres s’affiche sur l’écran LCD, au moyen du pavé numérique il faut y répondre correctement sinon la bombe explose.

     2. La résolution de la suite donne la couleur du fil a débrancher en code RGB. Il suffit alors de couper le fil indiqué avant la fin du compte à rebours pour provoquer l’arrêt du minuteur et donc de la bombe.

 

Etape 4 : L’explosion

En cas d’échec du désamorçage, l’Arduino active, via un transistor, une sirène d’alarme et un gyrophare. La suite n’étant pas forcément évidente à trouver nous avons rajouté un indice en cas d’erreur (cela dit la bombe “explosera” quand même)

Etape 5 : Mise en forme

Après la programmation terminée nous devions mettre en forme cet amas de fils et de composants peu esthétiques. Pour cela nous avions besoin d’un support dans lequel nous allions mettre l’arduino. La mallette bien qu’un peu clichée nous offrait une armature légère, compact et facilement transportable, bref parfaite pour notre projet.                                                                                                                          Nous avons découpé un panneau de médium pour permettre au composant important de ressortir et cacher les fils inutiles. Une fois fixé nous avons recouvert le panneau d’un film à l’aspect fibre de carbone.

 

Conclusion :

Ce projet nous a appris beaucoup de choses. Il a été un bon moyen de nous familiariser avec la programmation Arduino. En outre, nous avons pu approfondir nos connaissances sur les transistors et leurs applications. La programmation de l’Arduino est ce qu’il nous a pris le plus de temps. Sur 30 heures nous en avons passé une vingtaine à programmer, déboguer et optimiser le code de notre bombe.                                                                                                                         Nous regrettons le manque de temps qui nous a obligé à faire des compromis par rapport à notre idée de départ, mais dans l’ensemble nous sommes satisfaits.

Un outil de communication: l’hologramme 3D

Dans le cadre de notre Projet de 3ème année, nous avons choisi de travailler sur la conception d’hologrammes 3D au service de la promotion de Polytech Angers lors de diverses interventions de l’école (salons, déplacements à l’international…).
Pour réaliser ce projet nous avions à disponibilité un système de projection holographique HyperVSN de l’entreprise KiNo-Mo, sous filiale de l’entreprise française Orbis Holographics.
Nous avons utilisé le logiciel gratuit de modélisation et d’animation Blender 2.8 afin de créer et de modéliser des animations mettant en valeur l’école de manière concise et attractive, afin d’attirer l’oeil et de ne pas le perdre.

    Présentation du système: l’HyperVSN

Le système que l’on a utilisé pour réaliser nos hologrammes est constitué d’une valise contenant une hélice avec 4 branches. Des leds sont fixés sur ces branches, qui tournent lorsqu’on allume le système.
Cependant, pour projeter nos hologrammes, plusieurs étapes doivent être réalisées au préalable.
Tout d’abord, il faut modéliser les objets que nous voulons projeter avec le logiciel Blender 2.8. Une fois que les objets ont été modélisés, il faut les rassembler dans un seul fichier qui constitue une scène que l’on peut exporter en respectant les paramètres définis par la machine à hologrammes.
La scène exportée doit ensuite être uploadée sur le site d’HyperVSN (https://platform.kino-mo.com) et être acceptée par celui-ci.
Ensuite, il faut installer l’application HyperVSN sur smartphone et créer une playlist avec les scènes créées. Enfin, il faut se connecter au réseau de la machine et valider la playlist à jouer.
Il ne reste plus qu’à allumer la machine et admirer le travail accompli.

    La recherche d’informations

Étant tous les 3 débutants sur le logiciel Blender, nous avons démarré ce projet à partir de rien. Il a donc fallu parcourir internet pour trouver des tutos sur lesquels nous entraîner.
79703474_2487660851455470_2187903997539516416_n

tuto

tuto2

    Le scénario

Pour écrire le scénario, nous avions à notre disposition la charte graphique de Polytech Angers et les pictogrammes et images utilisés pour la communication de l’école. L’animation étant majoritairement destinée à présenter l’école à des lycéens, nous avons, après avoir échangé avec le service communication, décidé de présenter le réseau Polytech, puis la ville d’Angers et pour finir les 4 spécialités enseignées ici.
Il a donc fallu créer une carte de la France avec des logos Polytech placés pour représenter les différentes écoles du réseau, puis trouver quelque chose représentant Angers. Nous avons donc choisi le Château d’Angers car c’est le monument le plus connu de la ville. L’idée était de voir le réseau dans sa totalité puis de zoomer sur la ville d’Angers.
En deuxième partie nous nous sommes donc concentrés sur les spécialités. Nous nous avons utilisés les 4 pictogrammes suivant qui font partie de la charte graphique Polytech :

QIFBEMSGBSSAGI

    La modélisation

Lors de la modélisation du château d’Angers, de nombreuses difficultées se sont posées devant nous. La plus importante étant de choisir des textures le plus proche possible du château parmi les bibliothèques gratuites mis à notre disposition. Une autre difficulté à été de traduire le terrain pentu du château en modélisation. Et enfin la modélisation d’un tel monument prend du temps, les 17 tours du château ainsi que les détails qui leurs sont propres on nécessités minutie et patience.
chateau

Pour le logo de la filière SAGI nous nous sommes essayés à la fonction “Squelettes” de Blender permettant de mettre en mouvement un système physique et de l’animer à notre guise. De la sorte nous avons pu créer un bras robotisé animé qui lors de l’animation peut se mouvoir selon ses cinq articulations.
sagi

Pour le logo de la filière QIF, la difficulté majeure résidait dans la modélisation de l’ampoule. En effet, modéliser les différents composants d’une ampoule en partant de rien était compliqué : le culot de l’ampoule étant extrêmement difficile à réaliser, nous avons contourné ce problème en utilisant un mesh déjà existant : le bolt (boulon) qu’on a modifié pour qu’il prenne l’apparence d’une vis.
qif

Concernant le logo GBS, la modélisation des objets n’était pas très compliquée car il existe de nombreux tutos pour concevoir des verres et bouteilles dont nous avons pu nous inspirer. La partie qui nous a pris le plus de temps est la création d’une texture réaliste semblable à celle du verre. Il a fallu tester les nombreux paramètres de textures et également utiliser le shader editor comme on peut le voir ci-dessous.
gbs

Finalement, voici le logo de la filière BEMS:

bems

    Le rendu final

Finalement, nous avons réalisé différentes scènes :
Le logo du réseau polytech
La carte de la France avec les différents localisations des écoles du réseau
Le château d’Angers
Le logo SAGI
Le logo BEMS
Le logo QIF
Le logo GBS

Ce scénario permet de mettre en valeur l’école et sa localisation, ainsi que ses filières et leur natures en une vidéo de moins d’une minute et attractive car la technologie est innovante et peu répandue.

APOCAP Entrez dans l’apocalypse

IMG_20191113_080457Je suis Corentin Dumortier Piraud
Mon equipe pour le challenge était composée de AUBOUIN Eva, CROISSANT Pauline, PAGNOUX Enora et PARMENTIER Nolwenn et moi même
Il nous a été demandé de créer un dispositif afin de permettre à la Tenture de l’Apocalypse de retrouver son activité mobile. En effet la Tenture de l’Apocalypse demeure actuellement au château d’Angers, endroit duquel elle ne peut pas bouger. Le COPIL du projet a décidé de faire appel à différentes écoles angevines afin de réfléchir ce dispositif. C’est pourquoi l’École des Beaux-Arts en spécialité techniques textiles, l’école d’ingénieur et l’ESTHUA Tourisme et Culture ont été sollicités.

dans le cadre de ce projet nous voulions creer une capsule

La capsule apocalyptique, ou Apocap’, est un dispositif itinérant qui émergera sur les grandes places du monde. Elle se veut ludique, multisensorielle et immersive de par son couloir textile et sa salle apocalyptique disposant d’une installation numérique. Les plus curieux d’entre vous pourront s’immerger dans des scènes tirées de la tenture. Tous les sens, ou presque, seront convoqués : le toucher, l’ouÏe, la vue, ainsi que votre imagination.

pour ma part dans ce projet j’etais en charges de la salle imersive .

Cette salle de 9m2 serais une salle constituer de 3 écran de 2 m80 sur 2m
Constituer de 4 projecteur
La partie merci ce sera t’assurer grâce à un mapping vidéo en utilisant le logiciel modulo player. Ce logiciel est utilisé par exemple par l’atelier des Lumières à Paris.
pendant les 3 mois qu’on duré ce projet nous avons tout d’abord eu deux réunion au château d’Angers les 3 et 10 octobre.
suite à cela l’idée de réaliser une capsule a été posé par mon équipe.
J’ai donc passé le reste du temps à chercher les dispositifs techniques et technologiques permettant de réaliser ce type de capsules.
Au final La salle immersive coûte 11000 €.

Le convoyeur vibrant

I- Contexte et objectifs du projet

1

Le projet s’inscrit à la demande du club de mécatronique de l’ISTIA. Nous avions donc pour but de concevoir un convoyeur vibrant pour l’ensachage de comprimés qui réponde à la demande du club. L’objectif était de réaliser un prototype à bas coût permettant d’automatiser l’ensachage de comprimés. Pour ce faire, il s’agit de concevoir un transporteur vibrant qui est une machine utilisée en général pour le convoyage, la séparation, le tri et le dosage. Ce type de dispositif est employé dans des secteurs industriels aussi divers que l’agroalimentaire, la pharmaceutique, les carrières, les fonderies, etc. Le transporteur vibrant est composé d’un « couloir », généralement métallique, auquel un vibrateur (électrique, électromagnétique, pneumatique ou hydraulique) transmet des oscillations ou vibrations dont la fréquence inculque un mouvement d’avance aux produits à transporter.

Les directives :

Le projet du convoyeur vibrant nous a demandé quelques indications à suivre tout au long de notre avancement.

Dans un premier temps, le couloir vibrant doit être connecté à un automate et une balance renseignera ce dernier afin de modifier la fréquence des vibrations. Dans un second temps, il sera en particulier nécessaire de stopper le couloir vibrant quand la masse contenue dans le sachet aura atteint la consigne.

Les différents points suivants devront être étudiés :
1. Dimensionnement et montage de la partie : couloir + actionneur (vibrations)
2. Première campagne de tests pour vérifier la réponse du système à différentes vibrations
3. Choix d’un capteur pour le poids du sac
4. Seconde campagne de tests pour affiner les fréquences des vibrations (petite, moyenne et grande vitesse)

Planning prévisionnel :

Pour mener à bien le projet, la réalisation du planning prévisionnel est requise pour visualiser l’ensemble des tâches à accomplir. Celui-ci permet de donner une première perspective de temps pour achever la mission. Il donne une idée de l’avancement du projet en fonction de la position actuelle sur les différentes étapes complétées. Voici le planning prévisionnel réalisé afin de terminer le projet le 19 décembre 2019 :
2

Afin d’optimiser le temps imparti, nous nous sommes divisés les tâches. Après les avoir attribuées en début de projet, nous avons débuté nos missions respectives. Cependant, au cours du projet, il est arrivé que nous changions de tâches pour aider notre collègue. Ce tableau ci-dessous répertorie les tâches attribuées à chacun d’entre nous.
3

II- Présentation des tâches principales

Dès le début de notre projet, nous nous sommes attardé sur le principe du projet. Cette analyse a engendré des questionnements, des interrogations. Accompagné par M. AUTRIQUE, nous avons pu comprendre réellement les attentes demandées, notamment sur les points qui nous paraissaient flous.

Pour mener à bien ce projet, nous avons utilisé des ressources matérielles. Notre projet consiste à réaliser un convoyeur vibrant. Il a donc été nécessaire de commander du matériel adéquat. Pour réaliser la nomenclature du matériel, il a fallu réfléchir à l’assemblage du convoyeur. Nous avons pu répertorier le matériel approprié concernant la structure globale et acheter une tôle en acier. Après validation de Mr.AUTRIQUE, tout le matériel a été commandé une fois la nomenclature terminée.

Système de vibration :

Tout d’abord nous avons trouvé une entreprise qui construit des vibrateurs linéaires, nous avons donc demandé un devis ainsi que la documentation technique. Après réponse du fournisseur, un vibrateur varie entre 350 et 980£ en fonction du modèle. Le prix était trop important pour commander ce genre de vibrateur.

4

Nous nous sommes donc ravisé et pris la décision de réaliser nous même notre vibrateur. À l’aide d’un petit moteur et d’une came sous impression 3D, grâce à laquelle il est possible de réaliser un choc périodique sur le convoyeur vibrant. La came viendrait taper périodiquement dans le convoyeur afin de le faire vibrer.

5
6

Système de pesée :

En ce qui concerne la pesée nous voulions utiliser une jauge de contrainte. Cependant, il nous fallait réaliser un circuit imprimé et cela, n’était pas possible au vu du temps qu’il nous restait. Nous avons donc choisi de simuler la pesée. Pour cela nous avons utilisé un potentiomètre ainsi qu’un comparateur.

Structure du convoyeur :

Pour mener à bien ce projet, nous avons consacré un certain temps pour se mettre d’accord sur la réalisation de la maquette. En effet, nous avons décidé d’utiliser une tôle en acier suffisamment fine afin de la plier. Le convoyeur est en forme de V et mesure 50 cm de longueur. Nous l’avons fixé à un socle qui servira à lier l’ensemble des éléments.

7

Principe de fonctionnement :

7

Dans un premier temps, un récipient doit être placé sur l’espace de pesée. Si aucun récipient n’est mis au bout du convoyeur, le cycle ne peut démarrer.

Ensuite, la vibration rentre en jeu et fait avancer les objets jusque dans le récipient.

Une fois que la valeur de la pesée souhaitée est atteinte le vibrateur s’arrête. L’opérateur peut alors retirer le récipient de la balance.

Un nouveau cycle peut se lancer si un récipient est placé au bout du convoyeur et si le bouton “départ cycle” est activé.

III- Programmation de l’automate

Afin de réaliser le grafcet, nous nous sommes d’abord renseigné sur la structure du projet afin de traduire le principe de fonctionnement d’un cycle en langage SFC (grafcet). Dans un premier temps, nous avons effectué un brouillon sur papier. À partir de celui-ci, nous avons pu modifier le grafcet avec facilité et avoir un aperçu de la programmation dans sa globalité.

Nous avons ensuite dessiné au propre le corps du programme pour pouvoir le reproduire sur le logiciel RSlogix 500.

9

Le logiciel RSlogix 500 se programme en ladder. Il a donc fallu traduire notre grafcet en langage ladder.
Avant de programmer sur un logiciel, il faut réaliser la configuration matérielle de l’automate. Pour cela, il suffit de déclarer les cartes d’entrées/sorties de l’automate et ensuite affecter les variables “Start Cycle”, “Moteur” et “Poids” à la bonne carte.

10

Pour qu’un bloc de programmation soit actif, on lui affecte une variable. Par exemple, pour qu’un cycle soit activé, le bouton “Start Cycle” doit être vrai.
11

Ci-dessous, on retrouve l’initialisation du programme en activer comme étape initiale ET0.

12

13

Le programme ci-dessus traduit en langage ladder, le grafcet un peu plus haut.

IV- Améliorations possibles

Notre projet n’ayant pas atteint tous les objectifs que nous nous étions fixés initialement, il est encore sujet à améliorations.
En effet il est notamment possible de régler le problème des pics qui se forment lorsqu’un objet tombe sur la balance. Pour cela on peut utiliser un filtre.
Avec plus de temps il aurait également été possible de réaliser le système de pesage grâce à une jauge de contrainte comme nous l’avions prévus au départ. Une fois un certain seuil atteint, le moteur s’arrête.

V- Conclusion

Nous avons choisi ce projet car nous étions intéressé par l’automatisme mais aussi du concept de vibration linéaire. Ce convoyeur vibrant nous a permis de découvrir la gestion de projet, avec les erreurs à éviter comme les temps de livraison mais la gestion du temps. Nous aurions aimé répondre à toutes les exigences car ce projet liait la programmation, la conception et l’électronique.

Projet : Virtual Zoo

Virtual Zoo

Présentation du projet

L’objectif de ce projet est de créer une version immersive du “Test du Zoo”.

PlanZoo

Plan du zoo

C’est un test neuropsychologique destiné à déterminer la capacité d’un patient à formuler un plan et à l’exécuter. Ce test s’effectue habituellement sur papier, il est demandé au sujet d’indiquer, sur le plan du zoo, le parcours qu’il emprunterait pour visiter une série de lieux déterminés. Cependant, il y a certaines règles de parcours à respecter :

  • Il faut visiter les lieux demandés dans l’ordre.
  • Il est interdit de passer deux fois par le même chemin (Cette règle ne s’applique pas aux chemins ombragés).
  • Il ne faut pas sortir des chemins.

Afin de créer la version immersive de ce test, nous possédions un zoo virtuel développé sur Unity3D ainsi que les scripts necéssaires aux déplacements du joueur et à l’affichage des instructions et d’une carte.

Tâches demandées

Le programme doit :

  • Valider le passage du joueur dans les enclos.
  • Mesurer les temps de trajet entre les enclos.
  • Compter les erreurs effectuées par le joueur.

Travail effectué

    • Pour réaliser ses tâches, nous avons créé des colliders mis à l’entrée de chaque enclos.
collider enclos

Colliders à chaque enclos
    • Puis, nous avons créé et attaché un script C# à chaque collider permettant de valider le passage du joueur lorsqu’il rentre dans ce dernier. Ce script nous informe de la validation de l’enclos avec un bruit caractéristique. Il nous donne également le temps auquel le joueur est passé dans l’enclos ainsi que le temps passé dedans.
    • De plus, nous avons conçu d’autres colliders placés sur les chemins et hors des chemins (pelouse, forêt, etc..).


      collider pathes

      Colliders des chemins



      collider pelouse

      Colliders en dehors des chemins

    • Ensuite, un script Python qui permet de traiter la console Unity3D pour compter le nombre d’erreurs effectuées par le joueur. Il y a différents types d’erreurs traitées. Tout d’abord, il y a les erreurs d’addition qui correspondent au fait que le sujet aille à des enclos non demandés. Puis, il y a les erreurs d’omission qui traduisent le fait que le sujet ne parcourt pas tous les enclos demandés. Et enfin, il y a les erreurs de répétition ,qui sont une sous-catégorie d’erreurs d’addition, qui correspondent au fait le sujet aille successivement dans le même enclos.
script python

Script Python comptant le nombre d’erreurs
  • Notre dernière tâche réalisée a été d’intégrer la réalité virtuelle dans le projet en utilisant l’Oculus Rift.

Projet Bombe Factice

Présentation

Bonjour, nous sommes Nathan Portier et Kévin Rolland, étudiants en première année de cycle ingénieur SAGI à Polytech Angers. Dans le cadre de notre projet, nous devions réaliser une bombe factice sous forme d’un « Escape Game » en une durée totale de 33H.

Bombe Factice réalisée

Bombe Factice réalisée

 

Réalisation

Pour commencer ce projet, avant de nous lancer sur la programmation sur Arduino, nous devions d’abord choisir les différents éléments constituant la bombe. Pour ce faire, nous avions effectué un bilan de nos idées ainsi que des contraintes qui s’imposaient à nous, notamment celle de l’espace disponible. Notre décision a été de réaliser la bombe avec une énigme en 2 temps, composée de 2 éléments principaux, un pavé numérique avec un écran LCD et une « Defusable Clock ».

Déroulement de l’énigme :
L’énigme pour désamorcer la bombe est composée de deux étapes : dans un premier temps, il faut retrouver un code à 4 chiffres à partir des informations laissées dans la mallette, en rentrant ce code dans le pavé numérique, l’écran affiche alors un indice quant à l’ordre de coupe des fils.

 

Le pavé numérique est connecté à l’écran pour permettre à l’utilisateur de voir le code que celui-ci à rentrer. Ce code est composé de 1 à 4 chiffres et est déduit par rapport à une énigme. En effet, les différents éléments visuels mis en avant dans la mallette permettent d’obtenir un mot de passe. Celui-ci sera nécessaire pour voir un indice permettant l’arrêt du compteur expliqué plus loin.

Pavé numérique – Cas d’erreur

Pavé numérique – Cas d’erreur

 

L’utilisateur possède 3 tentatives afin de révéler l’indice, dans le cas où celui-ci échoue, il devra continuer l’énigme sans information supplémentaire et donc l’autre partie devra être résolue au hasard. Il est donc important de prendre son temps avant de faire une erreur qui pourra empêcher la connaissance de certaines mécaniques qui pourront causer l’explosion de la bombe.

Pavé numérique – 3 échecs consécutifs

Pavé numérique – 3 échecs consécutifs

 

La Defusable Clock est composée d’un Timer et de 4 fils, elle permet de lancer un compte à rebours qui ne s’arrête que si les bons fils sont coupés. Si un mauvais fil est coupé ou si le compte à rebours atteint 0s, l’alarme se déclenche.

20191211_113603 - Copie

Defusable Clock

 

Construction de la Defusable Clock :
- Soudure des composants selon le montage du site :
- Configuration du Timer, initialement à 1 minute, nous avons choisi d’augmenter la durée du Timer à 10 min et 30 secondes.
- Dans un dernier temps, nous avons également modifié le code implanté par défaut dans le microcontrôleur de la Defusable Clock : initialement, celui-ci permettait d’initialiser un fil qui désamorçait la bombe, un autre qui la faisait exploser et les deux dernier étaient des fils neutres, n’ayant aucune incidence si ils étaient coupés. Le problème est que ceci se faisait aléatoirement. Afin de créer une énigme résoluble, nous avons donc modifié le firmware afin que la Defusable clock se comporte de la manière suivante : pour désamorcer la bombe, les 4 fils doivent être coupés dans un ordre précis, si cet ordre n’est pas respecté, l’alarme se déclenche.

20191211_113654

Defusable Clock en cas d’erreur

 

Quelques exemples de notre programme

Le code ci-dessous a été réalisé sur Arduino.

Capture

 

Voici une partie du code de du pavé numérique. Les différents éléments gérés sont :

 

  • Le nombre de caractères maximal et minimal
  • La suppression d’un caractère
  • La vérification du mot de passe
  • Les tentatives d’échecs

 

 

 

Virtual Télérobot

Nous sommes deux étudiants en première année du cycle ingénieur SAGI (Système Automatisé et Génie Informatique): ACHARD Grégoire et HASELVANDER Samuel.

Capture d’écran 2019-12-17 à 09.18.32

Notre projet consistait à pouvoir diriger un robot via différents canaux de communication dans un environnement industriel. Ce robot devait effectuer différentes tâches comme un Pick and Place, c’est à dire prendre un objet à un endroit et le déplacer à un autre endroit. La première étape était d’effectuer cette tâche en utilisant le clavier et la souris. Enfin l’objectif final était d’effectuer cette tâche en utilisant le casque Occulus Rift ainsi que les manettes.

Intégration et commande par clavier/souris:

Tout d’abord, nous avons importé les assets du robot et de son environnement. Une fois le robot en place sur Unity3D, nous avons établi différentes contraintes sur les axes du robot. Nous avons notamment fixer le bâti afin qu’il ne se déplace pas lors de mouvements des axes du robot. De plus, nous avons établi des contraintes suivant les axes pour empêcher certaines rotations qui mettraient ainsi le robot dans une position impossible. Pour cela nous avons utilisé les scripts Rotation Limit Hinge et Rotation Limit Angle.

Une fois les limites établies, nous sommes passé à l’étape programmation. Nous avons fixé un objet sur l’outil du bras. Sur cet objet nous avons appliqué un script permettant le déplacement du bras avec l’objet. Ainsi nous avons pu vérifier que les contraintes établies sur le robot étaient correctes. Voici le script en question:
Capture d’écran 2019-12-16 à 22.14.44
Chaque touche du clavier correspond donc a un mouvement du bras afin de suivre l’objet.

Afin de rendre cela le plus réaliste possible nous avons amélioré ce script afin que les différentes parties du robot ne se traversent pas. Nous avons ajouté des conditions de distance qui, si elles ne sont pas respectées, bloquent le bras comme s’il était arrivé en butée. La modification donne le script suivant:
Capture d’écran 2019-12-17 à 08.39.39
La condition if vérifie la position de chaque partie du robot. Si elles sont vraies alors on a un mouvement du bras. Sinon le bras reste bloqué dans sa position actuelle.

Finalement, nous avons voulu automatisé le robot afin qu’il prenne un objet à une certaine position et le dépose sur une caisse afin de simuler un Pick and Place. Le script devait permettre, lors de l’appui sur une touche, de visualiser ce procédé. Voici le script en question:
Capture d’écran 2019-12-17 à 08.53.40

Intégration de l’Occlus Rift

La dernière étape de notre projet était d’intégrer le casque Occulus Rift ainsi que les manettes pour interagir avec l’environnement. Pour se faire nous avons importer le plug-in SteamVR ainsi que les différents scripts mis à notre disposition pour utiliser ces différents organes. Après paramétrage du casque via SteamVR, nous avons importer un OVRPlayerController disponible une fois le plug-in importer et qui permet d’utiliser le casque et donc pouvoir bouger la tête dans l’environnement souhaité.
Cependant nous n’avons pas réussi à utiliser les manettes dans l’environnement pour des raisons inconnues. L’objectif aurait été de pouvoir attraper l’objet avec les manettes afin de le placer à un endroit souhaité et, grâce a un bouton des manettes, activer le robot pour qu’il aille chercher cet objet pour le placer à un endroit fixe.

Remerciement
Nous tenon à remercier Mr Paul Richard pour ses conseils sur l’utilisation du logiciel ainsi que l’utilisation des organes de réalité virtuelle.

Analyse d’image pour la commande d’un tapis roulant

Nous sommes deux étudiants, Dylan JOLY et Clément MACADRÉ en première année de cycle ingénieur SAGI (Systèmes Automatisés et Génie Informatique) à Polytech Angers.

Dans le cadre de notre projet de premier semestre, nous devions réaliser une analyse d’images pour la commande d’un tapis roulant dans un total de 33h. Le but de ce projet est de piloter un convoyeur et gérer des actionneurs afin de tenir compte de la forme des pièces qui circulent sur la bande.

Pour cela, nous avions à notre disposition une maquette d’un convoyeur Langlois PSY4001 reliée à un automate Siemens S300 et une caméra infrarouge Optris PI.

au
Programmation de la maquette

Pour la programmation de l’automate, nous avons utilisé le logiciel Simatic Manager avec lequel nous avons dû utiliser le langage LIST. Nous n’avions aucune base sur le logiciel ni sur le langage LIST, nous avons principalement appris à les utiliser par nous-même. Nous avons rapidement réussi à faire fonctionner le convoyeur et ses actionneurs, et ainsi commencer à élaborer le programme final.

On a donc le cycle suivant : quand une pièce est détectée au niveau du premier capteur (SW-1), le tapis se met en marche jusqu’au second capteur (PS-1) où le tapis s’arrête. C’est à ce moment que la prise d’images et leurs traitements s’effectuent. Si la pièce est considérée comme un cylindre alors le tapis se remet en marche après une temporisation de 2 secondes. Elle sera ensuite éjectée du tapis. Si elle est détectée comme un parallélépipède rectangle alors le tapis se remet en marche en vitesse maximale jusqu’au bout du tapis (capteur PS-3).


Traitement d’image Matlab

 

Nous‌ ‌disposions‌ ‌d’une‌ ‌caméra‌ ‌infrarouge‌ ‌Optris‌ ‌PI‌ ‌que‌ ‌nous‌ ‌avons‌ ‌placée‌ ‌au-dessus‌ ‌du‌ ‌convoyeur‌ ‌et‌ ‌qui‌ ‌prend ‌des‌ ‌photos‌ ‌des‌ ‌objets‌ ‌convoyé‌ ‌par‌ ‌l’automate.‌ ‌Nous avions une interface Matlab qui permet un lien direct entre le logiciel de la caméra et Matlab. Il‌ ‌faut‌ ‌noter‌ ‌que‌ ‌nous‌ ‌avons‌ ‌chauffé‌ ‌la‌ ‌pièce‌ ‌pour‌ ‌qu’elle‌ ‌se‌ ‌démarque‌ ‌bien‌ ‌de‌ ‌l’environnement et ainsi simplifier le traitement de l’image infrarouge. ‌

Capture1

La‌ ‌première‌ ‌étape‌ ‌de‌ ‌notre‌ ‌programme‌ ‌est‌ ‌de‌ ‌convertir‌ ‌l’image‌ dit matricielle ‌en‌ ‌noir‌ ‌et‌ ‌blanc‌ ‌afin‌ ‌que‌ ‌chaque‌ pixel‌ ‌soit‌ ‌codé‌ ‌sur‌ ‌un‌ ‌niveau‌ ‌de‌ ‌gris,‌ ‌de‌ ‌0‌ ‌=‌ ‌noir‌ ‌à‌ ‌255‌ ‌=‌ ‌blanc.‌ ‌Ensuite, nous‌ ‌avons‌ ‌appliqué‌ ‌plusieurs ‌fois‌ ‌un‌ ‌filtre‌ ‌passe-bas‌ ‌dans‌ ‌le‌ ‌but‌ ‌d’améliorer‌ ‌l’aspect‌ ‌de‌ ‌l’image.‌ Cependant, à ‌chaque‌ ‌filtrage‌ ‌la‌ ‌moyenne‌ ‌des‌ ‌valeurs‌ ‌de‌ ‌tous‌ ‌les‌ ‌pixels‌ ‌de‌ ‌l’image‌ ‌“s’écrase”‌ ‌et‌ ‌il‌ ‌est‌ ‌nécessaire‌ ‌d’appliquer‌ ‌un‌ ‌rehausseur‌ ‌à‌ ‌notre‌ ‌matrice‌.


Après ces étapes,‌ ‌nous‌ ‌pouvons‌ ‌enfin‌ ‌nettoyer‌ ‌l’image‌ ‌en‌ ‌comparant‌ ‌la‌ ‌valeur‌ ‌des‌ ‌pixels‌ ‌à‌ ‌un‌ ‌seuil‌,‌ ‌tous ‌les pixel‌s ‌sous‌ ‌ce‌ ‌seuil‌ ‌sont mis‌ ‌à‌ ‌0‌ ‌et‌ ‌au‌ ‌contraire‌ ‌toutes‌ ‌valeurs‌ ‌supérieures‌ ‌sont‌ ‌mises‌ ‌à‌ ‌1.‌ Un balayage des pixels permet de vider ‌l’intérieur‌ ‌de‌ ‌notre‌ ‌objet‌ ‌pour‌ ‌ne‌ ‌laisser‌ ‌que‌ ‌les‌ ‌contours.‌ ‌Pour‌ ‌finir,‌ ‌on‌ ‌calcul‌ ‌le‌ ‌centre‌ ‌de‌ ‌gravité‌ ‌induit par le périmètre de la pièce, ainsi que la‌ ‌distance‌ qui sépare ce centre et chaque pixel.


Enfin,‌ ‌on‌ ‌peut‌ ‌calculer‌ ‌le‌ ‌ratio‌ ‌de‌ ‌la‌ ‌distance‌ ‌minimale‌ ‌sur‌ ‌la‌ ‌distance‌ ‌maximale‌ ‌séparant‌ ‌un‌ ‌pixel‌ ‌du‌ ‌centre.‌ ‌Plus‌ ‌ce‌ ‌ratio‌ ‌est ‌proche‌ ‌de‌ ‌1‌, ‌plus‌ ‌l’ensemble‌ ‌des‌ ‌pixels‌ ‌sont‌ ‌concentrées‌ ‌sur‌ ‌un‌ ‌cercle‌ ‌autour‌ ‌du‌ ‌centre‌ ‌de‌ ‌gravité.‌ ‌Nous‌ ‌avons‌ ‌fixé‌ ‌la‌ ‌valeur‌ ‌de‌ ‌seuil‌ ‌à‌ ‌0.8‌ ‌par‌ ‌expérimentation afin d’assurer un traitement correct de l’image.


Communication‌ ‌Matlab-Automate‌

 

Elle se‌ ‌fait‌ ‌grâce à ‌un protocole‌ ‌de‌ ‌réseau‌ ‌local.‌ ‌Nous‌ ‌avons‌ ‌utilisé‌ ‌la‌ ‌bibliothèque‌ ‌de‌ ‌fonction‌ ‌de‌ ‌Matlab‌ ‌qui‌ ‌permet‌ ‌de‌ ‌communiquer‌ ‌entre‌ ‌le‌ ‌port‌ ‌Ethernet‌ ‌de‌ ‌l’ordinateur‌ ‌et‌ ‌celui‌ ‌du‌ ‌module‌ ‌Ethernet‌ ‌de‌ ‌l’automate‌ ‌:‌

Capture8

Nous‌ ‌avons‌ ‌accès‌ ‌à‌ ‌la‌ ‌lecture‌ ‌et‌ ‌à‌ ‌la‌ ‌modification‌ ‌des‌ ‌variables‌ ‌DB‌ ‌111‌ ‌de‌ ‌l’automate.‌ ‌On‌ ‌peut‌ ‌alors‌ ‌envoyer‌ ‌une‌ ‌valeur‌ ‌à‌ ‌l’automate‌ ‌avec‌ ‌Matlab‌ ‌ou‌ ‌en‌ ‌envoyer‌ ‌une‌ ‌avec‌ ‌l’automate‌ ‌vers‌ ‌Matlab.‌ ‌Nous‌ ‌avons‌ ‌donc‌ ‌utilisé‌ ‌deux‌ ‌variables.‌ ‌La‌ ‌première‌ ‌(DB111.DBB‌ ‌3)‌ ‌est‌ ‌communiquée‌ ‌par‌ ‌l’automate‌ ‌pour‌ ‌prévenir‌ ‌Matlab‌ ‌que‌ ‌la‌ ‌pièce‌ ‌est prête à être traitée.‌ ‌L’autre‌ ‌variable‌ ‌(DB111.DBB‌ ‌2)‌ ‌est‌ ‌envoyée‌ ‌par‌ ‌Matlab‌ ‌pour‌ ‌donner‌ ‌le‌ ‌résultat‌ ‌du‌ ‌traitement‌.‌ ‌

Capture9

Ci-dessus,‌ ‌dans‌ ‌le‌ ‌cas‌ ‌où‌ ‌varauto=1,‌ ‌le‌ ‌traitement‌ ‌a‌ ‌estimé‌ ‌que‌ ‌la‌ ‌pièce‌ ‌est‌ ‌un‌ ‌cylindre, Matlab envoi 1.‌ ‌Dans‌ ‌le cas contraire, ‌la‌ ‌variable‌ ‌reste‌ ‌à‌ ‌0, ‌la‌ ‌pièce‌ ‌est‌ ‌un‌ ‌parallélépipède.‌ ‌


Conclusion‌ ‌

 

Ce‌ ‌projet‌ ‌fut‌ ‌une‌ ‌bonne‌ ‌occasion‌ ‌d’utiliser‌ ‌le‌ ‌logiciel‌ ‌Matlab‌ ‌et‌ ‌de s’expérimenter‌ ‌avec‌ ‌une‌ ‌caméra‌ ‌infrarouge.‌ ‌En‌ ‌effet,‌ ‌nos‌ ‌techniques‌ ‌de‌ ‌filtrage‌ ‌d’images‌ ‌consistaient‌ ‌à‌ ‌indexer‌ ‌chaque‌ ‌niveau‌ ‌de‌ ‌gris‌ ‌codé‌ ‌sur‌ ‌8‌ ‌bits‌ ‌dans‌ ‌une‌ ‌matrice,‌ ‌et‌ ‌d’y‌ ‌appliquer‌ ‌des‌ filtres et des ‌calculs.‌ ‌Ce‌ ‌qui‌ ‌est‌ ‌le‌ ‌point‌ ‌fort‌ ‌de‌ ‌Matlab.‌ ‌Nous‌ ‌avons‌ ‌pu‌ ‌découvrir‌ ‌le‌ ‌langage‌ ‌List‌ ‌que‌ ‌nous‌ ‌avons‌ ‌utilisé‌ ‌pour‌ ‌piloter‌ ‌l’automate‌ ‌et‌ ‌réaliser‌ ‌le‌ ‌tri‌ ‌des‌ ‌pièces‌.‌ ‌Dans‌ ‌l’industrie‌, ‌les‌ ‌applications‌ ‌impliquant‌ ‌l’analyse‌ ‌d’images‌ ‌sont‌ ‌nombreuses‌ ‌et‌ ‌ce‌ ‌fut‌ ‌une‌ ‌bonne‌ ‌occasion‌ ‌de‌ ‌nous‌ ‌y‌ ‌familiariser.‌ ‌Une‌ ‌bonne‌ ‌évolution‌ ‌du‌ ‌projet‌ ‌serait‌ ‌de‌ ‌ne‌ ‌plus‌ ‌avoir‌ ‌besoin‌ ‌d’arrêter‌ ‌le‌ ‌convoyeur‌ ‌pour‌ ‌obtenir‌ ‌une‌ ‌image‌ ‌net‌ ‌et ainsi ‌gagner‌ ‌du‌ ‌temps‌ ‌sur‌ ‌le‌ ‌processus.‌ ‌Ou‌ ‌bien‌ ‌la‌ ‌possibilité‌ ‌d’identifier‌ ‌plusieurs‌ ‌pièces‌ ‌en‌ ‌même‌ ‌temps‌ ‌ou encore traiter des pièces plus complexes.

Enfin,‌ ‌nous‌ ‌tenons‌ ‌à‌ ‌remercier‌ ‌Mme‌ ‌Gérard‌ ‌et‌ ‌Mr‌ ‌Autrique‌ ‌pour‌ ‌leurs‌ ‌aides‌ ‌précieuses.‌ ‌