IMA3/IMA4 2020/2022 P13 : Différence entre versions

De Wiki de Projets IMA
(Présentation du cahier de charges)
 
(15 révisions intermédiaires par le même utilisateur non affichées)
Ligne 22 : Ligne 22 :
 
Il s’agit de la mise en œuvre d’une interface 3D d'une salle industriel virtuel permet de développer des connaissances dans le traitement d'image au profit étudiants et enseignants pouvant en effet contrôler ensemble le matériel de laboratoire et interagir simultanément grâce à une interface de commande.
 
Il s’agit de la mise en œuvre d’une interface 3D d'une salle industriel virtuel permet de développer des connaissances dans le traitement d'image au profit étudiants et enseignants pouvant en effet contrôler ensemble le matériel de laboratoire et interagir simultanément grâce à une interface de commande.
  
== Présentation du cahier de charges ==
+
= Présentation du cahier de charges =
  
 
Notre projet consiste à développer un environnement virtuel adapté à un système physique, plus précisément la mise en œuvre du concept de jumelage numérique d'une industrie contrôlable avec une interface de programmation. Il s’agit de la mise en œuvre d’un modèle 3D d’un robot industriel virtuel similaire au robot réel contrôlable par une autre interface de programmation qui permet aux utilisateurs de le commander par un script de programme, cette dernière permet aux utilisateurs et plus précisément les étudiant dans le cadre des travaux pratiques dans le domaine de la robotique d’approfondir leurs connaissances.
 
Notre projet consiste à développer un environnement virtuel adapté à un système physique, plus précisément la mise en œuvre du concept de jumelage numérique d'une industrie contrôlable avec une interface de programmation. Il s’agit de la mise en œuvre d’un modèle 3D d’un robot industriel virtuel similaire au robot réel contrôlable par une autre interface de programmation qui permet aux utilisateurs de le commander par un script de programme, cette dernière permet aux utilisateurs et plus précisément les étudiant dans le cadre des travaux pratiques dans le domaine de la robotique d’approfondir leurs connaissances.
Ligne 39 : Ligne 39 :
 
Pour l'utilisateur (les étudiants dans notre cas) le produit doit être facile à installer et à utiliser sur tous les systèmes d'exploitation (Windows, Linux, macOS).
 
Pour l'utilisateur (les étudiants dans notre cas) le produit doit être facile à installer et à utiliser sur tous les systèmes d'exploitation (Windows, Linux, macOS).
  
 +
= les objectifs du projet =
 +
1️⃣-->| Anticiper une organisation industrielle.
 +
 +
2️⃣-->| Augmenter les performances d’un outil de production.
 +
 +
3️⃣-->|Optimiser les performances d’un procédé industriel (contrôle/correction automatique).
 +
 +
=La définition du system =
 +
 +
Le jumeau numérique est une réplique numérique d’un produit physique doté de capteurs qui l’informent en permanence de l’état du réel.
 +
Alors c’est un Objet physique connecté au virtuel en permanence
 +
Le modèle évolue en cadence avec son jumeau réel.
 +
Il permet d’améliorer le pilotage, la sécurisation et l’optimisation de lignes de production dans une usine.
 +
Un jumeau numérique se compose donc :
 +
 +
*  Une modélisation 3D du produit physique;
 +
*  Des capteurs;
 +
*  Un systèmes d’analyse.
 +
 +
=Les outils de développement existant=
 +
== Unity Engine ==
 +
 +
Unity utilise un système modulaire fantastique pour créer des scènes et des personnages dans le jeu. Il existe quatre versions différentes. Toutes les versions d'Unity offrent les mêmes fonctionnalités par exemple la version
 +
Personnel, il est gratuit (limite), la version plus : Coûts $35/mois , la version Pro : coûte 125 $/mois ainsi qu'il existe également une version entreprise dédie aux besoins personnalisés dictent le prix de l'abonnement.
 +
De plus, il existe différents niveaux de services Unity, tels que Cloud Build et Analytics, qui sont déverrouillés à chaque niveau de prix.
 +
Unity a des règles strictes sur la façon dont le développeur l'utilise.
 +
 +
== Unreal Engine==
 +
 +
Unreal Engine 4 est disponible gratuitement et disponible pour Windows et Mac (mais pas pour Linux), il propose des exemples de fonctionnalités du moteur qui contient des jeux ou des démos qu'Epic Games a réalisés et publiés. Qu’on peut l’utiliser , les télécharger gratuitement et les ouvrir pour se familiariser avec le moteur.
 +
 +
== Godot engine ==
 +
 +
Moteur de jeu multi-plateforme riche en fonctionnalités permettant de créer des jeux 2D et 3D à partir d'une interface unifiée. Il fournit un ensemble complet d'outils communs, afin que les utilisateurs puissent se concentrer sur la création de jeux sans avoir à réinventer la roue. Les jeux peuvent être exportés en un clic vers un certain nombre de plates-formes, y compris les principales plates-formes de bureau (Linux, macOS, Windows) ainsi que les plates-formes mobiles (Android, iOS) et Web (HTML 5).
 +
 +
== L' environnement choisis ==
 +
 +
Nous avons choisi godot pour plusieurs raisons :
 +
Godot est libre et open source, cela signifie qu’on peut l’utiliser librement, gratuitement, même pour des projets commerciaux sans restrictions. Unity est quant à lui propriétaire et il faudra respecter les termes de sa licence. Unity propose une version gratuite, mais au-delà de 100 000€ de chiffre d’affaires annuel, votre société devra acheter la version payante du logiciel.
 +
En termes d’utilisation et de communauté, Unity et Unreal engine sont encore loin devant. Par contre la communauté Godot est très large, un forum avec des milliers de personnes, un blog, des outils, une documentation très complète et une communauté immense de plus Godot gagne fortement en popularité et attire l’œil des plus grands. Des grosses sociétés commencent à donner de grosses sommes d’argent à Godot Engine pour l’aider dans son développement.
 
= Réalisation du Projet =
 
= Réalisation du Projet =
 
== semaine 1==
 
== semaine 1==
Ligne 54 : Ligne 94 :
 
== semaine 2==
 
== semaine 2==
  
Lors de cette séance, nous avons decouvrir un outils tres important sur notre jeu engine c'est l'mportateur de scènes Godot.
+
Au cours de cette séance, nous avons découvrir un outil très important sur notre jeu engine, c'est l'importateur de scènes Godot.
  
En ce qui concerne les ressources 3D, Godot dispose d’un importateur flexible et configurable car il travaille avec des scènes. Cela signifie que toute la scène sur laquelle vous travaillez dans votre DCC 3D préféré sera transférée aussi fidèlement que possible.
+
En ce qui concerne les ressources 3D, Godot dispose d’un importateur flexible et configurable, car il travaille avec des scènes. Cela signifie que toute la scène sur laquelle vous travaillez dans votre DCC 3D préféré sera transférée aussi fidèlement que possible.
  
Godot prend en charge les formats de fichiers de scènes 3D sous plusieurs extentions parmi eux glTF 2.0 (recommandé). Godot a un support complet pour les formats texte (.gltf) et binaire (.glb) et c'est l'extension que Blender offre.
+
Godot prend en charge les formats de fichiers de scènes 3D sous plusieurs extensions parmi eux glTF 2.0 (recommandé). Godot a un support complet pour les formats texte (.gltf) et binaire (.glb) et c'est l'extension que Blender offre.
ces fichiers comprennent le maillage et les textures mis en place dans Blender. Lorsqu'elles sont introduites dans Godot, les textures font partie du fichier matériel de l'objet.
+
Ces fichiers comprennent le maillage et les textures mis en place dans Blender. Lorsqu'elles sont introduites dans Godot, les textures font partie du fichier matériel de l'objet.
  
 
== semaine 3==
 
== semaine 3==
au cours de cette semaine on a trouve un envirenemet 3D a fin de l'implenter dans godot engine, il s'agit d'un bras robotise devlopper sur Blender.
+
Au cours de cette semaine, Nous  avons  trouvé un environnement 3D a fin de l'implémenter dans godot engine, il s'agit d'un bras robotise développer sur Blender.
 +
[[Fichier:Exempleble1.png]][[Fichier:Exempleble2.png]]
 +
 
  
[[Fichier:Exempleble1.png]][[Fichier:Exempleble2.png]]
+
 
 +
 
 +
==Semerstre S8==
 +
=Cahier des charges=
 +
 
 +
L’objectif de ce modèle sera proposé  dans la maquette pédagogique des futurs promotions dans ce cadre des cours de traitement d'image  ainsi que le cours de robotique (modélisation dynamique, asservissement, etc.).
 +
Le robot physique sera implémenté dans un environnement virtuel par une modélisation en 3D de ce dernier .
 +
Une fois la modélisation 3D effectuée, qui doit être similaire à l'environnement réel (taille, placement, repère, etc..), il faudra, dans un premier temps, travailler sur l'interface de programmation compatible : Matlab, Python, C++ etc... puis de reproduire les mouvements du robot en temps réel, c'est-à-dire, le robot exécute un programme et se déplace, tout en observant le même mouvement sur le simulateur . Bien sûr sans oublier la partie vision (caméra et objet à saisir).
 +
 
 +
=Présentation du robot =
 +
Le robot Ned est un robot 6 axes collaboratif basé sur des technologies open-source conçu pour l’éducation, la formation professionnelle et les laboratoires de recherche.
 +
[[Fichier:ned.png]]
 +
 
 +
Le robot collaboratif Ned tire pleinement profit des capacités du Raspberry Pi 4, avec un processeur 64-bit ARM V8 haute performance, 2Gb de RAM, et une connectivité améliorée.
 +
[[Fichier:Carac.png]]
 +
 
 +
 
 +
Ned est un cobot basé sur Ubuntu 18.04 et ROS (Robot Operating System) Melodic, une solution open-source complète conçue pour la robotique. Avec ROS, Ned dispose d’un ensemble de librairies permettant de concevoir des programmes des plus simples aux plus complexes pour répondre à certains besoins de manière flexible.
 +
 
 +
[[Fichier:Ross.png]]
 +
 
 +
==Usages==
 +
Utiliser Ned pour l’éducation ou la recherche, c’est disposer d’un robot collaboratif aux usages fidèles à la réalité industrielle :
 +
 
 +
1️⃣-->|Utiliser une méthode de programmation visuelle pour les processus les plus simples (Blockly, similaire à Scratch),
 +
 
 +
2️⃣-->|Créer des programmes pour réaliser des processus plus complexes, qu’il s’agisse de programmes robotiques conçus pour un robot, du multi-robot, de l’intelligence artificielle pour la vision…
 +
 
 +
3️⃣-->|Prototyper des scénarios industriels complets type « pick & place » (prendre un objet pour le déplacer), « pick & pack » (prendre un objet pour l’insérer dans un packaging)…
 +
 
 +
=La réalisation du projet=
 +
==La répartition des tâches ==
 +
Pour réaliser un produit fiable qui répond au cahier des charges, nous avons décidé de diviser notre projet en deux parties, chaque partie doit être réalisée en un semestre.
 +
 
 +
==Familiarisation avec le logiciel de simulation Godot==
 +
La deuxième étape consiste à réaliser un jumeau numérique. l’objectif est de modéliser le robot Ned dans le simulateur Godot afin d’établir une communication entre le robot réel et le robot virtuel. Le communication entre ces deux robots va permettre au robot réel de suivre les mouvements du robot virtuel.
 +
La simulation doit prendre en compte les dimensions du robot ainsi que les angles de rotation.
 +
 
 +
= Diagramme de Gantt (S8)=
 +
 
 +
Avant de commencer, nous avons prévu une répartition des tâches entre les membres du groupe selon le diagramme de Gantt suivant.
 +
 
 +
[[Fichier:s8_1.png]]
 +
 
 +
 
 +
Nous avons divisé le projet en deux étape principales:
 +
 
 +
Modélisation: pour modéliser le robot Ned, nous devons tout d’abord comprendre comment commander le robot et tester tous les mouvements possibles, cela nous permettra de réaliser une copie virtuelle  qui respecte les limites physiques du robot. Après la modélisation, il faut programmer des scripts pour permettre au utilisateur de commander la version virtuelle.
 +
Tous les mouvements doivent être identiques à la réalité. Nous avons prévu de réaliser cette partie en 6 semaines.
 +
Établir la communication: avant de commencer cette étape, il faut trouver une solution simple et fiable qui permettra au deux robots d’échanger les informations. Nous avons ajouté 2 semaines pour se familiariser avec le langage python, car on l’utilise pour commander le robot réel.
 +
Nous avons prévu de réaliser cette partie en 6 semaines.
 +
 
 +
Durant la réalisation du projet, nous avons rencontré des problèmes qui nous ont empêché de suivre le planning que nous avions programmé avant. alors, nous avons effectué des modifications sur le diagramme de gantt prévisionnel pour qu’il représente notre avancement à la réalité.
 +
 
 +
 
 +
[[Fichier:s8_2.png]]
 +
 
 +
=Etape de modélisation=
 +
Pour commencer la modélisation du robot, nous avons pris un modèle de Ned (fichier .STEP). Ce dernier n’est pas compatible avec Godot, alors, nous avons effectué quelques modifications pour pouvoir l'intégrer dans Godot (convertir en fichier .stl, ajouter les couleurs, redimensionner…).
 +
[[Fichier:robottt.png]]
 +
 
 +
Le modèle se compose de 6 parties : base, shoulder, arm, elbow, forearm, hand, wrist. Chacune de ces parties peut être commandée séparément pour faire un mouvement de rotation, sauge la base, elle reste fixe.
 +
Afin d’effectuer des mouvements identiques au robot réel, il faut mesurer l’angle de rotation maximale et minimale pour chaque composant.
 +
Pour effectuer ces mesures, nous avons utilisé une fonction prédéfinis dans la bibliothèque pniyro, cette fonction permet de renvoyer un vecteur de 6 dimensions , chaque composant dans ce vecteur représente la valeur en radians de l’angle d’un bras du robot.
 +
Donc grâce à cette fonction, on peut avoir un vecteur qui représente la valeur max et min pour chaque angle. Ces mesures sont faites pour éviter un conflit entre le robot réel et le robot virtuel, en fait, dans Godot, le robot peut faire des rotations de 360° dans toutes les directions, ce qui n’est pas possible dans la réalité.
 +
Après avoir pris les mesures, nous avons codé des scripts qui permettent de commander chaque partie avec clavier en respectant ces mesures.
 +
 
 +
==Etape de communication==
 +
Pour synchroniser les deux robots, il doivent avoir un moyen pour échanger les informations entre eux. Donc le premier problème est de trouver une méthode compatible avec Godot qui permet d'échanger des valeurs avec un autre programme.
 +
Notre première solution était de créer une base de données. Cette solution est beaucoup utilisée dans Godot, car elle permet aux développeurs des jeux de stocker des valeurs (id,niveau… ) dans le cas d’un jeu en ligne.
 +
Dans notre cas, cette base de données va être utilisée par les deux robots, elle stockera les valeurs des angles dans un vecteur de 6 dimensions (en radians).
 +
Dans ce cas, si le robot virtuel effectue un mouvement, il va envoyer un nouveau vecteur à la base de données. Le robot réel va lire ce vecteur et effectue les mêmes mouvements en utilisant la fonction “move_joints()”.
 +
Mais cette solution nécessite une connexion internet, et nous cherchons une solution simple qui ne demande pas beaucoup de ressources.
 +
Après des recherches, nous avons trouvé une possibilité dans Gdscript pour manipuler les fichiers, cela va nous permettre de créer un fichier dont on peut stocker des informations qu’on veut échanger. Cette solution est plus simple et ne demande pas une connexion internet, elle peut être appliquée dans n’importe quel ordinateur.
 +
Pour tester cette méthode, nous avons ajouté une fonction dans Godot qui prend en charge l’ouverture et l'écriture dans le fichier, si un bras virtuel fait un mouvement, la fonction génère un vecteur de 6 dimensions qui représente le mouvement effectué, et elle l’écrit dans le fichier.
 +
Concernant le robot réel, nous avons créé un programme python basé sur la bibliothèque “pniyro”. Ce programme compare la position actuelle du robot avec le vecteur qui est écrit dans le fichier, si les valeurs sont différentes, il prend la position indiqué par le fichier.
 +
 
 +
[[Fichier:comm.png]]

Version actuelle datée du 6 mai 2022 à 15:38

Présentation générale

Introduction

Depuis des années, la majorité des pannes et des défaillances des systèmes industriels était détectées et réparées par l'être humain afin d'éviter la paralysie de la production qui entraînait des pertes budgétaires. Actuellement, grâce à l'évolution de l'électronique et l'informatique une nouvelle génération industrielle est apparue, elle est basée sur des nouvelles technologies qui ont été mises en place pour faciliter le contrôle et la détection des pannes. Cette nouvelle génération s'appuie généralement sur l'intelligence artificielle, l'impression 3D et la réalité augmentée. Pour parvenir au bon fonctionnement de l'industrie, les jumeaux numériques collent au plus près du système réel qui modélise, ils sont utilisés pour surveiller en temps réel, optimiser les machines et permet d'anticiper d'éventuelles pannes. Leur modélisation est alimentée par des données collectées via des capteurs disposés sur le système réel. Le but de notre projet est de modéliser le jumeau numérique d'une usine connectée et de l'optimiser en ajoutant des variantes grâce à un logiciel de modélisation 3D sur lequel les étudiants peuvent suivre une formation pédagogique sur l'asservissement industriel. Au cours de la pandémie, la majorité des universités ont changé le mode d’enseignement au monde d’enseignement à distance, ou il n'y avait que les cours théoriques donc il n'y avait pas la possibilité d’avoir une formation assez solide sans voir l’aspect pratique. Ce projet sera proposé comme un simulateur d’une salle de travaux pratiques virtuelle permettant aux apprentis éloignés la possibilité d’effectuer des travaux pratiques à distance dans le domaine de la robotique et l’automatique.

Contexte

Dans le cadre de notre projet de 4eme année, nous sommes choisis le projet maquette virtuelle pour le traitement d’image , il s’agit d’une salle de TP virtuelle base sur le traitement d’image.


Comme toutes les universités au cours de la pandémie ont changé le mode d’enseignement au monde d’enseignement distance, ou il n'y avait que les cours théoriques donc il n'y a eu pas la possibilité d’avoir une formation assez solide sans voir l’aspect pratiques.


Ce projet offre aux apprenants éloignés la possibilité d’effectuer des travaux pratiques à distance dans le domaine de la robotique et l'automatisme.


Il s’agit de la mise en œuvre d’une interface 3D d'une salle industriel virtuel permet de développer des connaissances dans le traitement d'image au profit étudiants et enseignants pouvant en effet contrôler ensemble le matériel de laboratoire et interagir simultanément grâce à une interface de commande.

Présentation du cahier de charges

Notre projet consiste à développer un environnement virtuel adapté à un système physique, plus précisément la mise en œuvre du concept de jumelage numérique d'une industrie contrôlable avec une interface de programmation. Il s’agit de la mise en œuvre d’un modèle 3D d’un robot industriel virtuel similaire au robot réel contrôlable par une autre interface de programmation qui permet aux utilisateurs de le commander par un script de programme, cette dernière permet aux utilisateurs et plus précisément les étudiant dans le cadre des travaux pratiques dans le domaine de la robotique d’approfondir leurs connaissances.

Les robots fonctionnent en commande mutuelle, l’une commande l’autre, l'environnement virtuel reçoit des consignes de la part de l’environnement physique qui à son tour reçoit en permanence une réponse du robot sur son comportement dynamique, ainsi que les deux systèmes seront équipés d’une caméra de vision et certains actionneurs qui permettent aux robots de connaître son entourage, ils sont accessibles et contrôlables via l’interface qui permettra à son tour aux apprentis de faire varier les différents paramètres tout en respectant les contraintes exigées par le principe du jumelage numérique pour que les robots puissent exécuter le programme développé sur l’interface.

En effet, le modèle réalisé doit être le plus fidèle possible à son jumeau réel (le système physique) et être capable d’évoluer en temps réel, Cela impose :

1️⃣-->| Un échange de données entre les deux jumeaux : une capacité à générer de la donnée pertinente, fiable et au bon niveau de précision via la mise en place des capteurs distribués, une capacité de collecte, d’acheminement et de stockage sécurisée des données.

2️⃣-->| Une stratégie de communication entre les deux systèmes.

3️⃣-->| Une capacité du Jumeau numérique à intervenir sur son jumeau physique pour du (de la) contrôle/correction automatique.


Pour l'utilisateur (les étudiants dans notre cas) le produit doit être facile à installer et à utiliser sur tous les systèmes d'exploitation (Windows, Linux, macOS).

les objectifs du projet

1️⃣-->| Anticiper une organisation industrielle.

2️⃣-->| Augmenter les performances d’un outil de production.

3️⃣-->|Optimiser les performances d’un procédé industriel (contrôle/correction automatique).

La définition du system

Le jumeau numérique est une réplique numérique d’un produit physique doté de capteurs qui l’informent en permanence de l’état du réel. Alors c’est un Objet physique connecté au virtuel en permanence Le modèle évolue en cadence avec son jumeau réel. Il permet d’améliorer le pilotage, la sécurisation et l’optimisation de lignes de production dans une usine. Un jumeau numérique se compose donc :

  • Une modélisation 3D du produit physique;
  • Des capteurs;
  • Un systèmes d’analyse.

Les outils de développement existant

Unity Engine

Unity utilise un système modulaire fantastique pour créer des scènes et des personnages dans le jeu. Il existe quatre versions différentes. Toutes les versions d'Unity offrent les mêmes fonctionnalités par exemple la version Personnel, il est gratuit (limite), la version plus : Coûts $35/mois , la version Pro : coûte 125 $/mois ainsi qu'il existe également une version entreprise dédie aux besoins personnalisés dictent le prix de l'abonnement. De plus, il existe différents niveaux de services Unity, tels que Cloud Build et Analytics, qui sont déverrouillés à chaque niveau de prix. Unity a des règles strictes sur la façon dont le développeur l'utilise.

Unreal Engine

Unreal Engine 4 est disponible gratuitement et disponible pour Windows et Mac (mais pas pour Linux), il propose des exemples de fonctionnalités du moteur qui contient des jeux ou des démos qu'Epic Games a réalisés et publiés. Qu’on peut l’utiliser , les télécharger gratuitement et les ouvrir pour se familiariser avec le moteur.

Godot engine

Moteur de jeu multi-plateforme riche en fonctionnalités permettant de créer des jeux 2D et 3D à partir d'une interface unifiée. Il fournit un ensemble complet d'outils communs, afin que les utilisateurs puissent se concentrer sur la création de jeux sans avoir à réinventer la roue. Les jeux peuvent être exportés en un clic vers un certain nombre de plates-formes, y compris les principales plates-formes de bureau (Linux, macOS, Windows) ainsi que les plates-formes mobiles (Android, iOS) et Web (HTML 5).

L' environnement choisis

Nous avons choisi godot pour plusieurs raisons : Godot est libre et open source, cela signifie qu’on peut l’utiliser librement, gratuitement, même pour des projets commerciaux sans restrictions. Unity est quant à lui propriétaire et il faudra respecter les termes de sa licence. Unity propose une version gratuite, mais au-delà de 100 000€ de chiffre d’affaires annuel, votre société devra acheter la version payante du logiciel. En termes d’utilisation et de communauté, Unity et Unreal engine sont encore loin devant. Par contre la communauté Godot est très large, un forum avec des milliers de personnes, un blog, des outils, une documentation très complète et une communauté immense de plus Godot gagne fortement en popularité et attire l’œil des plus grands. Des grosses sociétés commencent à donner de grosses sommes d’argent à Godot Engine pour l’aider dans son développement.

Réalisation du Projet

semaine 1

Lors de cette séance, nous avons :

1️⃣-->|Discuter les détails de projet avec notre encadrant Mr.lakhal.

2️⃣-->|Essayer de trouver un environnement a développer ainsi que on énumérer ses éléments essentiels.

3️⃣-->|Effectué un Diagramme de Gantt pour répartir dans le temps le travail qu'il nous reste à faire ainsi que les taches.

Exempl3e.png

semaine 2

Au cours de cette séance, nous avons découvrir un outil très important sur notre jeu engine, c'est l'importateur de scènes Godot.

En ce qui concerne les ressources 3D, Godot dispose d’un importateur flexible et configurable, car il travaille avec des scènes. Cela signifie que toute la scène sur laquelle vous travaillez dans votre DCC 3D préféré sera transférée aussi fidèlement que possible.

Godot prend en charge les formats de fichiers de scènes 3D sous plusieurs extensions parmi eux glTF 2.0 (recommandé). Godot a un support complet pour les formats texte (.gltf) et binaire (.glb) et c'est l'extension que Blender offre. Ces fichiers comprennent le maillage et les textures mis en place dans Blender. Lorsqu'elles sont introduites dans Godot, les textures font partie du fichier matériel de l'objet.

semaine 3

Au cours de cette semaine, Nous avons trouvé un environnement 3D a fin de l'implémenter dans godot engine, il s'agit d'un bras robotise développer sur Blender. Exempleble1.pngExempleble2.png



Semerstre S8

Cahier des charges

L’objectif de ce modèle sera proposé dans la maquette pédagogique des futurs promotions dans ce cadre des cours de traitement d'image ainsi que le cours de robotique (modélisation dynamique, asservissement, etc.). Le robot physique sera implémenté dans un environnement virtuel par une modélisation en 3D de ce dernier . Une fois la modélisation 3D effectuée, qui doit être similaire à l'environnement réel (taille, placement, repère, etc..), il faudra, dans un premier temps, travailler sur l'interface de programmation compatible : Matlab, Python, C++ etc... puis de reproduire les mouvements du robot en temps réel, c'est-à-dire, le robot exécute un programme et se déplace, tout en observant le même mouvement sur le simulateur . Bien sûr sans oublier la partie vision (caméra et objet à saisir).

Présentation du robot

Le robot Ned est un robot 6 axes collaboratif basé sur des technologies open-source conçu pour l’éducation, la formation professionnelle et les laboratoires de recherche. Ned.png

Le robot collaboratif Ned tire pleinement profit des capacités du Raspberry Pi 4, avec un processeur 64-bit ARM V8 haute performance, 2Gb de RAM, et une connectivité améliorée. Carac.png


Ned est un cobot basé sur Ubuntu 18.04 et ROS (Robot Operating System) Melodic, une solution open-source complète conçue pour la robotique. Avec ROS, Ned dispose d’un ensemble de librairies permettant de concevoir des programmes des plus simples aux plus complexes pour répondre à certains besoins de manière flexible.

Ross.png

Usages

Utiliser Ned pour l’éducation ou la recherche, c’est disposer d’un robot collaboratif aux usages fidèles à la réalité industrielle :

1️⃣-->|Utiliser une méthode de programmation visuelle pour les processus les plus simples (Blockly, similaire à Scratch),

2️⃣-->|Créer des programmes pour réaliser des processus plus complexes, qu’il s’agisse de programmes robotiques conçus pour un robot, du multi-robot, de l’intelligence artificielle pour la vision…

3️⃣-->|Prototyper des scénarios industriels complets type « pick & place » (prendre un objet pour le déplacer), « pick & pack » (prendre un objet pour l’insérer dans un packaging)…

La réalisation du projet

La répartition des tâches

Pour réaliser un produit fiable qui répond au cahier des charges, nous avons décidé de diviser notre projet en deux parties, chaque partie doit être réalisée en un semestre.

Familiarisation avec le logiciel de simulation Godot

La deuxième étape consiste à réaliser un jumeau numérique. l’objectif est de modéliser le robot Ned dans le simulateur Godot afin d’établir une communication entre le robot réel et le robot virtuel. Le communication entre ces deux robots va permettre au robot réel de suivre les mouvements du robot virtuel. La simulation doit prendre en compte les dimensions du robot ainsi que les angles de rotation.

Diagramme de Gantt (S8)

Avant de commencer, nous avons prévu une répartition des tâches entre les membres du groupe selon le diagramme de Gantt suivant.

S8 1.png


Nous avons divisé le projet en deux étape principales:

Modélisation: pour modéliser le robot Ned, nous devons tout d’abord comprendre comment commander le robot et tester tous les mouvements possibles, cela nous permettra de réaliser une copie virtuelle qui respecte les limites physiques du robot. Après la modélisation, il faut programmer des scripts pour permettre au utilisateur de commander la version virtuelle. Tous les mouvements doivent être identiques à la réalité. Nous avons prévu de réaliser cette partie en 6 semaines. Établir la communication: avant de commencer cette étape, il faut trouver une solution simple et fiable qui permettra au deux robots d’échanger les informations. Nous avons ajouté 2 semaines pour se familiariser avec le langage python, car on l’utilise pour commander le robot réel. Nous avons prévu de réaliser cette partie en 6 semaines.

Durant la réalisation du projet, nous avons rencontré des problèmes qui nous ont empêché de suivre le planning que nous avions programmé avant. alors, nous avons effectué des modifications sur le diagramme de gantt prévisionnel pour qu’il représente notre avancement à la réalité.


S8 2.png

Etape de modélisation

Pour commencer la modélisation du robot, nous avons pris un modèle de Ned (fichier .STEP). Ce dernier n’est pas compatible avec Godot, alors, nous avons effectué quelques modifications pour pouvoir l'intégrer dans Godot (convertir en fichier .stl, ajouter les couleurs, redimensionner…). Robottt.png

Le modèle se compose de 6 parties : base, shoulder, arm, elbow, forearm, hand, wrist. Chacune de ces parties peut être commandée séparément pour faire un mouvement de rotation, sauge la base, elle reste fixe. Afin d’effectuer des mouvements identiques au robot réel, il faut mesurer l’angle de rotation maximale et minimale pour chaque composant. Pour effectuer ces mesures, nous avons utilisé une fonction prédéfinis dans la bibliothèque pniyro, cette fonction permet de renvoyer un vecteur de 6 dimensions , chaque composant dans ce vecteur représente la valeur en radians de l’angle d’un bras du robot. Donc grâce à cette fonction, on peut avoir un vecteur qui représente la valeur max et min pour chaque angle. Ces mesures sont faites pour éviter un conflit entre le robot réel et le robot virtuel, en fait, dans Godot, le robot peut faire des rotations de 360° dans toutes les directions, ce qui n’est pas possible dans la réalité. Après avoir pris les mesures, nous avons codé des scripts qui permettent de commander chaque partie avec clavier en respectant ces mesures.

Etape de communication

Pour synchroniser les deux robots, il doivent avoir un moyen pour échanger les informations entre eux. Donc le premier problème est de trouver une méthode compatible avec Godot qui permet d'échanger des valeurs avec un autre programme. Notre première solution était de créer une base de données. Cette solution est beaucoup utilisée dans Godot, car elle permet aux développeurs des jeux de stocker des valeurs (id,niveau… ) dans le cas d’un jeu en ligne. Dans notre cas, cette base de données va être utilisée par les deux robots, elle stockera les valeurs des angles dans un vecteur de 6 dimensions (en radians). Dans ce cas, si le robot virtuel effectue un mouvement, il va envoyer un nouveau vecteur à la base de données. Le robot réel va lire ce vecteur et effectue les mêmes mouvements en utilisant la fonction “move_joints()”. Mais cette solution nécessite une connexion internet, et nous cherchons une solution simple qui ne demande pas beaucoup de ressources. Après des recherches, nous avons trouvé une possibilité dans Gdscript pour manipuler les fichiers, cela va nous permettre de créer un fichier dont on peut stocker des informations qu’on veut échanger. Cette solution est plus simple et ne demande pas une connexion internet, elle peut être appliquée dans n’importe quel ordinateur. Pour tester cette méthode, nous avons ajouté une fonction dans Godot qui prend en charge l’ouverture et l'écriture dans le fichier, si un bras virtuel fait un mouvement, la fonction génère un vecteur de 6 dimensions qui représente le mouvement effectué, et elle l’écrit dans le fichier. Concernant le robot réel, nous avons créé un programme python basé sur la bibliothèque “pniyro”. Ce programme compare la position actuelle du robot avec le vecteur qui est écrit dans le fichier, si les valeurs sont différentes, il prend la position indiqué par le fichier.

Comm.png