Jumeaux numériques pour la programmation de système pluritechnologique
Go to file
Philippe Roy e5a03b077a Documentation contextualisée par rapport à la variante de la maquette numérique et réelle 2024-01-26 05:07:54 +01:00
asset Migrations : Qt5 -> Qt6 et Pylint v2 -> v3 2024-01-02 15:13:14 +01:00
img Migration de Forge AEIF -> Forge Apps.education 2024-01-21 17:43:50 +01:00
monte_charge Documentation contextualisée par rapport à la variante de la maquette numérique et réelle 2024-01-26 05:07:54 +01:00
poppy_ergo_jr Migration de Forge AEIF -> Forge Apps.education 2024-01-21 17:43:50 +01:00
portail_coulissant Documentation contextualisée par rapport à la variante de la maquette numérique et réelle 2024-01-26 05:07:54 +01:00
robot_haptique Gestion du niveau de qualité du rendu EEVEE 2023-07-11 15:49:37 +02:00
volet_roulant Documentation contextualisée par rapport à la variante de la maquette numérique et réelle 2024-01-26 05:07:54 +01:00
LICENSE Transfert du projet 2022-12-05 14:07:17 +01:00
README.md Restructuration des documents pédagogiques 2024-01-22 04:20:29 +01:00
blender-edutech.png Transfert du projet 2022-12-05 14:07:17 +01:00
blender-edutech.svg Transfert du projet 2022-12-05 14:07:17 +01:00
twin.png Nouvelle icône 2023-02-08 21:38:45 +01:00
twin.py Bugfix capteur barrage du portail, documentation avec plusieurs textes suivante la variante de la maquette 2024-01-18 01:49:39 +01:00
twin.svg Nouvelle icône 2023-02-08 21:38:45 +01:00
twin_about.py Migration de Forge AEIF -> Forge Apps.education 2024-01-22 03:52:04 +01:00
twin_config-bak.xml Passage à Qt6 2023-01-29 17:28:54 +01:00
twin_config.xml Documentation contextualisée par rapport à la variante de la maquette numérique et réelle 2024-01-26 05:07:47 +01:00
twin_daq.py Ajout des modes d'activation des entrées et des sorties pour le monte-charge et le volet 2023-02-03 05:58:20 +01:00
twin_doc.py Bugfix : documentation moteur de la variante Grove incomplet 2024-01-22 09:32:19 +01:00
twin_file_qt.py Migrations : Qt5 -> Qt6 et Pylint v2 -> v3 2024-01-02 15:13:14 +01:00
twin_file_wx.py Passage à Qt6 2023-01-29 17:28:54 +01:00
twin_plot.py Bugfix : variante, configuration de broche et documentation 2023-02-14 00:06:50 +01:00
twin_plot_qt.py Déplacement de la commande fin() dans les scripts 2024-01-06 10:19:56 +01:00
twin_plot_wx.py Ajout des modes d'activation des entrées et des sorties pour le monte-charge et le volet 2023-02-03 05:58:20 +01:00
twin_pylint.py Migrations : Qt5 -> Qt6 et Pylint v2 -> v3 2024-01-02 15:13:14 +01:00
twin_serial.py Bugfix capteur barrage du portail, documentation avec plusieurs textes suivante la variante de la maquette 2024-01-18 01:49:39 +01:00
twin_threading.py Bugfix : génération des plot bugée, simplification de la gestion des threads 2023-01-28 17:24:21 +01:00

README.md

Jumeaux numériques

Un jumeau numérique d'un système technique permet de visualiser son comportement à travers une maquette numérique. Le principal intérêt est de valider un modèle comportemental d'abords par la simulation (avant mise en oeuvre du jumeau réel) puis expérimentalement (mesure des écarts entre les deux jumeaux).

Ici le jumeau numérique d'un système pluritechnologique va nous servir à programmer le système en simulant (hors ligne) son évolution. Nous pourrons alors mettre en lien les deux jumeaux et appliquer les règles programmées sur le jumeau réel.

Lors de l'exécution du cycle, tous écarts entre les deux jumeaux seront mesurés afin de corriger le modèle comportemental. Par aileurs, les évènements numériques impacteront le jumeau réel et les évènements réels impacteront aussi le jumeau numérique.

Systèmes :

Systèmes dont le jumeau numérique est cours de développement :

Jumeaux numériques présentation

Jumelage numérique

Le jumelage numérique est basé sur la liaison série entre l'ordinateur (port USB) et un micro-contrôleur Arduino (Uno ou Mega). Suivant les jumeaux numériques, le protocole de communication peut être le protocole générique Firmata ou un protocole spécifique.

Vidéo du test de jumelage du portail coulissant

Téléchargement

Les binaires (Game Engine Runtime) sont hébergés sur phroy.org.

Ressources pédagogiques

Les applications pédagogique se trouvent dans le dépôt des ressouces pédagogiques du projet Blender-EduTech :

Modèles 3D (CAO)

Les modélisation CAO des maquettes numériques sont dans le dépôt des modèles 3D du projet Blender-EduTech.

Un autre objectif de ce projet est l'auto-construction des maquettes réelles :

Elle doivent pouvoir être fabriquées dans un FabLab (impression 3D et découpe laser). Les composants sont principalement basés sur l'éco-système Arduino et les modules Grove.

Développement

Les fichiers sources sont dans le projet Blender-Edutech / Jumeaux numériques de La Forge des Communs Numériques Éducatifs : https://forge.apps.education.fr/blender-edutech/jumeaux-numeriques .
 
L'environnement de développement est basé sur : la plateforme de modélisation et d'animation 3D [Blender](https://blender.org), le moteur de jeu 3D [UPBGE](https://upbge.org), le langage [Python](https://python.org) et les micro-contrôleurs [Arduino](https://www.arduino.cc).
 
La version de Blender/UPBGE utilisée pour le développement est la version 0.36.1 (20 août 2023).

Les bibliothèques suivantes ne sont pas incluses par défaut dans l'environnement UPBGE :

  • Pylint : vérificateur de code Python
  • pySerial : communication sur le port série
  • pyFirmata : protocole Firmata (protocole générique de communication entre un logiciel et un microcontrôleur)
  • Matplotlib : grapheur (visualisation de données)
  • wxPython : interface graphique utilisateur (GUI, utilisé ici pour Windows)
  • pyQt6 : interface graphique utilisateur (GUI, utilisé ici pour GNU/Linux)

Il faut donc les installer localement (dans UPBGE), les étapes sont :

  • GNU/Linux : La configuration ici présente est UPBGE installé sur ~ avec Python 3.10 :
    • Aller dans le répertoire local de Python de UPBGE: $ cd ~/upbge-0.36.1-linux-x86_64/3.6/python/bin
    • Télécharger le script 'get-pip.py' pour installer le gestionnaire de paquet Pip
    • Installer le gestionnaire de paquet Pip : $ ./python3.10 get-pip.py
    • Installer Pylint : $ ./pip install pylint
    • Installer pySerial : $ ./pip install pyserial
    • Installer pyFirmata : $ ./pip install pyfirmata
    • Installer Matplotlib : $ ./pip install matplotlib
    • Installer PyQt6 : $ ./pip install PyQt6
  • Windows : La configuration ici présente est UPBGE installé sur le bureau utilisateur (prenom.nom) :

    • Ouvrir un terminal Powershell (éventuellement en passant par Anaconda Navigator)
    • Aller dans le répertoire local de Python de UPBGE: cd C:\Users\prenom.nom\Desktop\upbge-0.36.1-windows-x86_64\3.6\python\bin
    • Télécharger le script 'get-pip.py' pour installer le gestionnaire de paquet Pip
    • Installer le gestionnaire de paquet Pip : python.exe get-pip.py
    • Aller dans le répertoire 'Scripts' : cd C:\Users\prenom.nom\Desktop\upbge-0.36.1-windows-x86_64\3.6\python\Scripts
    • Installer Pylint : pip.exe install pylint
    • Installer pySerial : pip.exe install pyserial
    • Installer pyFirmata : pip.exe install pyfirmata
    • Installer Matplotlib : pip.exe install matplotlib
    • Installer wxPython : pip.exe install wxpython
  • Si l'installation des paquets Python ne se fait pas dans le bon répertoire ('site-packages' des bibliothèques du Python embarqué par UPBGE), il faut allors spécifier le répertoire cible avec l'option '-t target' lors de la commande 'pip install'. Par exemple pour Pylint :

    • GNU/Linux : $ ./pip install pylint -t ~/upbge-0.36.1-linux-x86_64/3.6/python/lib/python3.10/site-packages
    • Windows : $ pip.exe install pylint -t C:\Users\prenom.nom\Desktop\upbge-0.36.1-windows-x86_64\3.6\python\lib\site-packages