IMA3/IMA4 2018/2020 P8
Sommaire
- 1 Présentation générale
- 2 Analyse du projet
- 3 Préparation du projet
- 4 Réalisation du Projet
Présentation générale
Description
Notre projet consiste à réaliser un simulateur configurable de processus physiques destiné à la conception et au développement de systèmes automatisés.
Cette application devra avoir une interface facile d'utilisation donnant la possibilité d'interagir sur la simulation physique via des boutons, et lisible afin d'avoir une vue sur les états des objets et des capteurs que comportent leur système.
Ce projet s'inspire des besoins de développement des outils de production tels qu'ils sont vus dans le concept d'industrie 4.0.
Objectifs
Cette application doit ainsi simuler le comportement dynamique des objets d'une scène, et permettre de les visualiser dans un environnement éventuellement en 3D.
L'application contiendra un simulateur de processus physiques autonome dont les paramètres pourront être initialisés par l'utilisateur.
Par ailleurs, dans un but de conception d'un contrôle commande, le simulateur doit pouvoir également communiquer avec d'autres applications, dont le système de contrôle commande, et échanger des informations liées à l'instrumentation, c'est-à-dire à l'état des capteurs et aux ordres donnés aux actionneurs.
Analyse du projet
Positionnement par rapport à l'existant
Analyse du premier concurrent
RoboDK est notre premier concurrent. Cet entreprise propose une logiciel de simulation de robots industriel exactement comme notre projet.
Points forts :
- Grande bibliothèque de robot industriels intégrée
- Calibration de robot existants
- Export des programmes compatibles avec les principaux microcontrolleurs de robots
- Optimisation automatique
- Compatible Linux/Android/MacOS/Windows
Points faibles :
- Prix (2995€/an)
Nous voulons proposer un logiciel plus spécialisé mais gratuit.
Analyse du second concurrent
DELMIA Robotics est notre second concurrent. Ce logiciel fait partie du portofolio 3DSEXPERIENCE a coté de logiciel comme CATIA ou Solidworks.
Ses points fort sont :
- Prédiction et detection des erreurs
- Gestion centralisé de tous les robots d'une chaîne de production
- Planning du coût de la chaine de production, prenant en compte beaucoup de paramètres
- Société mère reconnue : Dassault-Systèmes.
Point faibles :
- Prix (non affiché, se négocie au cas par cas)
- Difficulté de prise en main
- Est optimal au sein d'une suite d'outils également onéreux
- Non disponible sous Linux
Le logiciel crée lors de ce projet se veut plus simple et léger et sera disponible sous Linux.
Scénario d'usage du produit ou du concept envisagé
L'utilisateur peut être un technicien, un ingénieur ou un étudiant.
Il utilisera les bibliothèques d'objets afin de créer un système permettant de réaliser les tâches qu'il souhaite accomplir.
L'utilisateur utilisera le logiciel pour simuler un système physique et l'étudier, il aura le choix entre paramètrer les capteurs du système qui agiront sur des actionneurs, ou lancer la simulation en mode libre afin d'avoir un système modulable en temps réel via les boutons de l'interface utilisateur qui agiront sur les actionneurs.
Il peut ensuite, après l'avoir simulé avec notre logiciel, décider de le réaliser ou non.
Exemple de scénario d'usage :
Une entreprise souhaîte créer un réseau de tapis roulants automatiques afin d'amener une caisse d'une postion de départ jusqu'à un endroit de stockage prévu à cet effet. Il va utiliser notre application afin de créer son système qui est une chaîne de tapis roulants qui comporte par exemple un tapis où l'on dépose les caisses et plusieurs zone de destination. L'utilisateur placera des capteurs aux bords des tapis roulants qui capteront si une caisse arrive, un autre capteur détectera sur la caisse la destination affichée. En fonction de ce que le capteur lit, la caisse va par exemple être ammenée sur un tapis roulant qui tourne à gauche au lieu d'aller sur celui qui tourne à droite. L'utilisateur pourra lui-même placer les capteurs et les programmer afin d'activer certains mécanismes (par exemple le plateau rotatif qui choisi la direction de la caisse) via des actionneurs, il créera donc des liens entre capteurs et actionneurs en choisissant un certain délais d'attente entre la détection et l'activation du mécanisme.
Réponse à la question difficile
Problématique: Définir les champs d'applications de notre projet et le logiciel utilisé.
Utilisation de Godot pour la partie animation. Envoie d'ordre à partir d'un terminal par voie TCP/IP vers Godot
Bibliographie et webographie
Etude des concurrents :
RoboDK : https://robodk.com/index
Delmia Robotics : https://www.visiativ-industry.fr/delmia-robotics/
Préparation du projet
Cahier des charges du groupe
- Etudier les solution logiciels possible (Avantages, inconvénients)
Cahier des charges
- La création de l'interface utilisateur comprenant :
- la scène permettant de visualiser la simulation
- un contrôleur du système via des boutons
- La modélisation du système :
- modélisation de différents types de capteurs
- fonctionnalités propres aux objets ajoutés par l'utilisateur (temps de marche, vitesse de déplacement...)
- La création du système communiquant avec d'autres applications et d'échange d'informations liées à l'instrumentation :
- création de commandes pour agir sur le système
- implémentation de l'utilisation d'un automate
Choix techniques : logiciel
Pour concevoir notre application nous utilisons le moteur de jeu Godot.
Les raison sont les suivantes :
- Optimisation , logiciel écrit en C++
- facilité d'installation
- prise en main rapide
- interfaçage du langage d'edition Godot script avec C++ possible si nécessaire
site : https://godotengine.org/
Exemple de communication interprocessus (ajout de B. Conrard)
Les codes suivants forment un exemple de communication entre 2 applications, ici en python 2.7, au travers d'une communication TCP/IP.
Liste des tâches à effectuer
Nous nous organisons avec un Trello :
Lien : https://trello.com/b/8wZ9xndy
Répartition du travail
Equipe 1 : Simulation
Alex Lagneau
Quentin Normand
Clément Hue
Equipe 2 : Communication
Corto Callerisa
Sébastien Dardenne
Réalisation du Projet
Projet S6
Le projet se divise en 2 parties, la première étant de mettre en place les objectifs du sujet, l'étude des différents logiciel de simulation et la recherche des méthodes de communication existante. La seconde partie est la modélisation du système sous Godot et la mise en place de la communication.
Semaine 1
Découverte du projet, présentation par M. Conrard de systèmes existant dans Polytech et précision sur la finalité du projet.
Nous avons notamment découvert un logiciel correspondant à l'application de notre projet; celui-ci permet de simuler différents systèmes tout en ayant la vision de l'état de tous les capteurs et de donner libre cours à l'utilisateur de modifier et manipuler ces systèmes. Cette démonstration nous permet de mieux cerner notre projet et nous allons nous appuyer sur les fonctionnalités de cette application pour construire notre projet.
De plus, nous avons découvert dans la salle C006 des systèmes réels comme l'ascenseur et un train miniature reliés à des commandes. Nous pensons donc créer ces systèmes dans notre logiciel pour, après les avoir simulés, pouvoir les appliquer sur ces systèmes réels.
Semaine 2
Recherche des logiciels concurrents déjà existants et développement des objectifs.
Semaine 3
Présentation orale, nouvelle problèmatique : Définir les champs d'applications de notre projet et le logiciel utilisé.
Semaine 4
Mise en place du cahier des charges divisé en 3 parties : Modélisation/Simulation, Réseau et Commande. Première étude sur le choix du logiciel à utiliser pour notre système (UnrealEngine, Unity, Godot) ainsi que pour les différentes méthodes de communication.
Lien vers la justification des choix du moteur graphique :[1]
Semaine 5
Présentation par M.Conrard d'un exemple de communication sur un système de train en 2D. Choix du logiciel Godot pour la simulation, tests d'applications déjà existante.
Semaine 6
Prise en main de Godot à l'aide du tutoriel, Prise de RDV avec M. Conrard pour l'organisation des tâches. Étude de l'exemple du TCP/IP fourni. Découpage des tâches dans l'optique SMART avec le site trello.com
Semaine 7
Essai d'utilisation du script donné par M.Conrard
Justification du choix de méthode de communication parmi TCP/IP, pipes, mémoire partagé.
Nous avons choisi de partir sur un des projets présenté dans la salle C006 par Mr Conrard, l'ascenseur. Cela nous permettra de tester l'utilisation d'un automate.
Lien vers la justification des choix du système de communication: [2]
Semaine 8
Simulation
Création d'une caméra pour se déplacer dans l'espace godot :
Communication
creation d'une "proof au concept" communication UDP entre deux programmes godot. La communication se fait en un seul sens.
Voici le serveur.
Et le client :
Cela fonctionne mais le client n'envoi qu'un seul message.
Semaine 9
Simulation
Cette semaine nous avons modélisé la cage d'ascenseur directement dans l'interface de Godot. Il a des portes coulissantes qui pourront être activées par l'appui d'un futur bouton et elles s'ouvriront automatiquement quand l'ascenseur arrivera à son étage de destination.
Modélisation de l'ascenseur et des portes :
Création du script qui permet l'ouverture des portes de l'ascenseur :
Commande
Création des scripts Python pour se connecter au godot :
Semaine 10
Simulation
Cette semaine nous ajoutons des boutons et les capteurs. Les capteurs utilisent l'objet RayCast de Godot qui permet de regarder dans une direction les objets qui sont présents. Le bouton a été plus compliqué à implémenter car il n'y a pas d'objet bouton existant dans Godot, nous avons pris un script sur un forum que nous avons adapté à notre utilisation. La fonction permettant d'activer un bouton se trouve dans le script relié à la caméra et utilise un RayCast pour détecter au clic si un bouton est présent dans la vue de l'utilisateur.
Modélisation des boutons et des capteurs :
Permet l'appel de l'ascenseur à un étage.
Détecte la présence de l'ascenseur pour connaître sa position.
Script du bouton permettant l'appel de l’ascenseur :
Commande
Modification du programme pour envoyer l'etat sur un autre serveur UDP.
Voici le code python :
Semaine 11
Simulation
Nous avons créé une scène globale comportant 6 niveaux pour l'ascenseur et un bouton à chaque palier. A chaque étage nous avons mis 2 capteurs car il faut détecter la position de l'ascenseur quand il est en train de monter ou de descendre. Les capteurs ne réagissent que quand un objet arrive devant lui mais pas quand un objet quitte son champ de vision, c'est pour cela qu'il faut un capteur en haut et un capteur en bas de l'étage.
Assemblage des différents objets afin de créer une scène globale :
Ajout du script des fonctions permettant le déplacement de l'ascenseur :
Commande
Implementation d'un terminal pour l'envoi des commandes .
Semaine 12+
Simulation
Ajout du boitier intérieur :
Vidéo de présentation
Rapport du projet
Code du projet
Remarque de la présentation
- Pas de code dans les diapositives.
- Diapo trop sombre.
- Intro/Conclusion : Ne pas mettre que le titre.
- Rapide/Lent : Mettre un ordre de grandeur, chiffrer l'objectif opérationnel.
- Répartir des diapositives en fonction de la charge de travail effectuée.
- L'oral doit être lié à la diapositive, rester dans le sujet.
- Pas de répétition, diviser la soutenance en partie bien définie.
Projet S7
Objectif
Reproduire un système sous Godot (Exemple : maquette des trains en C008, Cuve) en modifiant la commande actuelle par l'automate de la maquette.