IMA3/IMA4 2021/2023 P14

De Wiki de Projets IMA
Logo BraVeD.png

Résumé

Le projet BraVeD (projet n°14) consiste en un système de manipulation d'un bras robotique à distance avec un retour visuel dans un casque de réalité virtuelle. Des caméras placées autour de l'opérateur permettent de capter les mouvements de son bras, de les analyser et de les reproduire avec le bras robotique. Le casque de réalité virtuelle permet à l'opérateur de contrôler le bras comme s'il s'agissait de son propre bras. L'ajout de la vision 3D augmenterait encore cette immersion. Le but final est de pouvoir contrôler le bras robot depuis n'importe quel endroit possédant une connexion internet. Nous pourrions de ce fait déplacer le savoir-faire humain, ses compétences et son analyse dans des situations où ce dernier ne serait agir. Nous inscrivons BraVeD dans l'avenir. En cette nouvelle ère de digitalisation, notre projet offre la possibilité à n'importe qui de travailler n'importe où.

Présentation générale

Un projet est avant tout les personnes travaillant à sa réalisation. Nous nous présentons à vous. Nous sommes un groupe de 4 étudiants de SE 4 :

  • Julien CHARLEUX
  • Karl HABRE
  • Thomas LEFRANC
  • Tanguy RIDREMONT

Le projet BraVeD est constitué de 3 parties majeures :

  • Le système mécanique : bras robotique
  • La reconnaissance d'image : intelligence artificielle et traitement des données
  • La transmission des données : transfert des flux vidéos et des commandes au bras

Contexte

Avant de commencer, nous devons mieux définir le sujet qui nous est donné, lui donner un cadre. Pour nous aider, nous réalisons le diagramme “bête à cornes” ci-dessous :

Bete a corne.png

Nos recherches d’idées seront donc axées sur le principe suivant : le bras robot doit être capable de reproduire les mouvements du bras de son utilisateur tout en offrant une commande intuitive. Nous offrons aussi un retour visuel afin que l’opérateur ait l’impression que le bras robotique est un prolongement de son propre bras. Nous ajoutons la possibilité d’utiliser notre système depuis n’importe quel endroit.

Nous souhaitons réaliser un bras manipulateur pouvant s’adapter à plusieurs situations, il est donc difficile de fixer un client type. Cependant, nous pouvons cibler certains domaines : la manutention, l’art, la santé et l’industrie.

Pour donner un exemple, prenons un joaillier. Son savoir-faire est unique et lui permet de travailler avec précision. Notre bras pourrait lui permettre d’appliquer son art à une différente échelle tout en gardant une utilisation simple afin de pleinement lui permettre de réaliser son travail.

Objectif

Cahier des charges

Le sujet donné étant assez large, nous devons nous fixer un cadre et approfondir. Le but est de construire un bras manipulateur contrôlé par la réalité virtuelle. Nous choisissons de définir plusieurs points clés qui définissent notre projet. Nous appelons ces points “fonctions principales” :

  • FP1 : Doit permettre des manipulations efficaces
  • FP2 : Doit pouvoir communiquer avec l’utilisateur
  • FP3 : Doit respecter les normes de sécurité
  • FP4 : Doit être modulable
  • FP5 : Doit être résistant
  • FP6 : Doit être ergonomique
  • FP7 : Doit avoir un prix raisonnable
  • FP8 : Doit être respectueux de l’environnement

A partir de ces axes principaux, nous avons explicité des fonctions complémentaires permettant de créer un cahier des charges détaillé. Ce cahier des charges contient l’ensemble des points que l’objet final doit pouvoir respecter ou effectuer. Les priorités sont fixées pour la réalisation du prototype. Nous fixons des limites à notre projet afin de le rendre réalisable mais en gardant les fonctions qui semblent intéressantes à implémenter.

Diagramme pieuvre / APTE :

Diagramme apte.png

Notre cahier des charges : Fichier:Cdc P14.pdf

Description

Faire un choix parmi les idées proposées ne fut pas une étape facile. Cependant, nous nous sommes vite accordés. L’idée permettant de contrôler un bras robotique à partir des mouvements de son propre bras semblait assez novatrice. De plus, après une rapide étude de faisabilité, cette solution nous a paru la meilleure. Nous aurions aimé pouvoir ajouter l’option du retour de force au système, mais faute de moyen et de temps nous avons abandonné cette idée.

Schema systeme P14.png

Ce schéma nous montre comment l’ensemble du système que nous souhaitons développer est censé fonctionner. De gauche à droite, nous avons : 2 à 3 caméras permettant d’observer les mouvements de l’utilisateur. Une 3ème caméra servirait dans le cas où nous voudrions implémenter la retranscription des mouvements des 2 bras de la personne. Le flux vidéo est ensuite transmis vers une unité de traitement de données (Raspberry PI) qui va convertir le mouvement des bras en vecteurs dans un référentiel en 3 dimensions. Ce même Raspberry PI servira à transmettre le flux vidéo reçu vers le casque de réalité virtuelle. Pour envoyer et recevoir des données, nous passons par un routeur WiFi connecté, de préférence, au réseau en Ethernet pour une meilleure stabilité et une connexion plus rapide. Celui-ci transmettra vers un deuxième routeur situé à distance (quelques mètres ou à des milliers de kilomètres) communiquant avec la deuxième unité de traitement des données (Raspberry PI) Le rôle de ce Raspberry PI sera de transmettre les informations de déplacement au bras manipulateur directement (si nous utilisons un protocole UDP, sinon nous passerons par l’intermédiaire d’une carte Arduino). De plus, il servira à combiner le flux vidéo des 2 caméras situées au niveau du robot pour former une image 3D visualisable par un casque de réalité virtuelle.

Ce modèle peut être amené à changer au fur et à mesure de notre avancement, des potentielles difficultés rencontrées ou si de meilleures solutions sont trouvées. Par exemple, si nous disposons d’une caméra 3D, nous pourrions éviter la conversion des 2 flux vidéo si cela nous permet de garder une bonne qualité d’image. D’autres changements dans le même genre pourront être envisagés en fonction de notre avancement l’année prochaine.

Réalisations et résultats

Système mécanique
Niryo NED bras.jpg

Le bras que nous utilisons pour ce projet et le bras NED de la société Niryo. Nous avons choisi ce bras (ci-contre) car il remplissait la majorité de nos attentes :

  • Ses proportions sont proches de celles d’un bras humain.
  • Ses articulations permettent plus de liberté dans les mouvements possibles.
  • La communication sans fil nous permet de contrôler le bras en aillant un espace de travail sans câble.
  • Le robot peut être commandé par un programme Python qui est un langage de programmation que nous connaissons bien.


Pour la commande du bras, nous avons décidé de développer deux modes pour laisser le choix en fonction des performances obtenues pour chacun d'entre eux.

  • Le premier utilise les commandes fournies par le package du robot Niryo NED. Nous saisissons les valeurs de rotation des angles souhaitées sur un ordinateur. Le robot se déplace alors à cette position.
  • Le second se base sur les coordonnées de l'articulation du "poignet" par rapport au socle du robot. En utilisant les touches du clavier, nous changeons les coordonnées X, Y et Z de cette articulation. Le robot effectue les mouvements choisis. Ce mode de commande nécessite plus de calcul car il se base sur la résolution d'un système d'équations pour trouver les valeurs des angles nécessaires pour atteindre les coordonnées.

Lien de la démonstration du second mode de commande : Vidéo de démonstration

Le développement du modèle mathématique nous a également permis de créer une représentation graphique du bras pour vérifier que la position dans laquelle est le robot est bien celle ordonnée par les commandes. Cependant, le développement de la modélisation a retardé l'interface de contrôle du robot qui n'est pour l'instant qu'à l'état d'ébauche :

Modelisation3D 1.jpg Modelisation3D 2.jpg Debug GUI.jpg

Les résultats de notre travail sont présents. Les deux modes de commandes fonctionnent et offre une précision correcte. Cependant, nous relevons plusieurs problèmes suites aux essais que nous avons réalisé :

  • Le temps de réponse du robot est long. Si le déplacement demandé est très éloigné la position actuelle du robot, son déplacement prendra du temps à s'exécuter. A chaque déplacement lancé par le code Python, ce dernier n'effectue par d'autre calculs tant que ce déplacement n'est effectué.
  • Le modèle mathématique actuel ne présente que 3 des 6 articulations que possède le bras. La prise en compte des autres augmentera significativement le temps de résolution du système d'équations.

Nous avons donc chercher des solutions et des changements que nous devrons réaliser pour obtenir un meilleur résultat :

  • Si le programme de commande des moteurs du robot fourni avec le package Pyniryo est lent, nous pouvons essayer de trouver un moyen de commander nous même les moteurs et de refaire l'asservissement. Dans le cas où l'opération serait impossible, il faudra refaire la commande sur un autre bras offrant une meilleure réactivité.
  • Le modèle mathématique doit être améliorer afin de prendre en compte l'intégralité des articulations. Cependant comme le calcul des coordonnées se fait à partir de la pince, le système d'équation resterait identique.


Intelligence artificielle

-- TBD --

Transmission de données

Interface graphique du logiciel Hamachi

Concernant la transmission des données, encore une fois nous avons choisi de nous servir de scripts Python, ce qui permet de faire facilement le lien avec les autres programmes en développement pour notre projet. Dans un premier temps, notre script permet d'établir la communication entre deux ordinateurs distants via le réseau Internet. Pour outrepasser les sécurités des réseaux de l'université, nous créons un réseau local virtuel via Hamachi. La communication se fait via des paquets en UDP/IP et sert principalement à envoyer un flux vidéo en temps réel entre les deux ordinateurs.

La seconde majeure partie concerne la liaison entre un ordinateur et le casque de réalité virtuelle. Pour le moment, nous nous servons de Vizard pour établir la communication entre le casque et l'ordinateur en Python. Cet outil nous permet d'envoyer le flux vidéo directement vers le casque, tout en ayant la possibilité d'y ajouter l'affichage d'informations importantes. Cependant, cet outil étant limité à des utilisations de 5 minutes maximum, nous sommes actuellement à la rechercher d'alternatives plus viables.










Bilan

-- Remplir au S8 --

Gestion de projet

Lors des premières séances de travail, nous avons décider de répartir les rôles pour la création du système complet. Ainsi, chacun des membres est responsable d'une partie décrite précédemment. Vous pouvez trouver la répartition que nous avons choisi ci-dessous :

  • Julien CHARLEUX, Karl HABRE : Responsables de la partie transmission des données
  • Thomas LEFRANC : Responsable de l'analyse d'image par une intelligence artificielle
  • Tanguy RIDREMONT : Responsable de la commande du bras

Cette méthode de travail permet à chacun des membres de se concentrer entièrement sur sa partie. De plus, comme nous travaillons dans la même salle, nous échangeons souvent afin d'adapter notre travail selon l'avancement de chacun.

-- Diagramme de GANTT à placer --

Equipements

Liste des équipements demandés

  • Bras robotisé Niryo Ned + alimentation + câble Ethernet (reçu)
  • Raspberry Pi 3 1.2B + câble micro USB (reçu)
  • Raspberry PI 4 (reçu ×2)
  • Routeur WiFi TP-Link (reçu)
  • Caméra 3D (à disposition)
  • Casque VR HTC Vive Pro (à disposition)

Mode d'emploi

-- Mode d'emploi à venir --