Table des matières:

RoboGlove : 12 étapes (avec photos)
RoboGlove : 12 étapes (avec photos)

Vidéo: RoboGlove : 12 étapes (avec photos)

Vidéo: RoboGlove : 12 étapes (avec photos)
Vidéo: Робонавт-2 — робот-гуманоид НАСА 2024, Juillet
Anonim
RoboGlove
RoboGlove

Nous sommes un groupe d'étudiants de l'ULB, Université Libre de Bruxelles. Notre projet consiste à développer un gant robot capable de créer une force de préhension aidant les personnes à saisir des objets.

LE GANT

Le gant a une connexion filaire qui relie les doigts à certains servomoteurs: un fil est attaché à l'extrémité du doigt et au servo, donc lorsque le servo tourne, le fil est tiré et le doigt est fléchi. De cette façon, en contrôlant la préhension effectuée par l'utilisateur grâce à des capteurs de pression à l'extrémité des doigts, nous sommes en mesure d'actionner les moteurs de manière contrôlée et d'aider la préhension en pliant le doigt proportionnellement à la rotation des moteurs et donc à l'enroulement des fils. De cette façon, nous devrions être capables soit de permettre à des personnes faibles de saisir des objets, soit d'aider même des personnes dans des conditions physiologiques à saisir des objets et à les garder sans aucun effort.

LA CONCEPTION

Le modèle a été développé afin de rendre le mouvement de la main le plus libre possible. En fait, nous n'avons imprimé en 3D que les pièces strictement nécessaires dont nous avions besoin pour connecter les fils, les moteurs et les doigts.

Nous avons une coupole supérieure imprimée en PLA sur chaque doigt: c'est la partie terminale où les fils doivent être connectés et elle doit protéger le capteur de pression qui est fixé à l'intérieur. Le capteur de pression est collé, à la colle chaude, entre l'extrémité PLA et le gant.

Ensuite, nous avons deux bagues imprimées en 3D, par doigt, qui constituent un guide pour les fils. Le pouce est le seul doigt qui n'a qu'un seul anneau imprimé. Il y a un fil par doigt, plié en deux à l'extrémité des doigts. Les deux moitiés passent dans les deux guides de la coupole et dans les deux anneaux: elles sont mises directement dans des trous que nous avons fait à l'extérieur de ces anneaux. Ensuite, ils sont assemblés dans une roue directement connectée au moteur. La roue a été réalisée afin de pouvoir enrouler les fils: comme notre moteur a une rotation incomplète (inférieure à 180°) nous avons réalisé la roue afin de tirer le fil pour un écart de 6 centimètres soit la distance nécessaire pour fermer complètement la main.

Nous avons également imprimé deux plaques pour fixer les servomoteurs et l'arduino au bras. Il devrait être préférable de le découper dans du bois ou un plastique rigide avec un cutter laser.

Étape 1: liste de courses

Liste de courses
Liste de courses
Liste de courses
Liste de courses
Liste de courses
Liste de courses

Gant et fils:

1 gant existant (doit être cousu)

Vieux jean ou autre tissu rigide

Fils de nylon

Tube en polyéthylène basse densité (Diamètre: 4 mm Épaisseur: 1 mm)

Électronique:

Arduino Uno

1 Batterie 9V + 9V Support de batterie

1 interrupteur électronique

1 veroboard

3 servomoteurs (1 par doigt)

3 hélices (fournies avec les servos)

Support 4 piles AA + 4 piles AA

3 capteurs de pression (1 par doigt)

3 résistances 330 ohms (1 par doigt)

6 fils électriques (2 par capteurs)

Vis, écrous et fixations:

4 M3 10mm de long (pour fixer l'Arduino)

2 M2.5 12mm de long (pour fixer le support de pile 9V)

6 écrous correspondants

6 M2 10mm de long (2 par servo pour fixer les roues aux servos)

12 petits serre-câbles (pour fixer les platines et l'interrupteur)

7 gros serre-câbles (2 par moteurs et 1 pour le support 4 piles AA)

Outils d'occasion:

Imprimante 3D (Ultimaker 2)

Matériel pour la couture

Pistolet à colle chaude

En option: découpe laser

Étape 2: préparer la structure portable

Préparer la structure portable
Préparer la structure portable

La structure portable a été réalisée avec quelques vêtements: dans notre cas, nous avons utilisé un gant normal pour électricien et un chiffon en jean pour la structure autour du poignet. Ils ont été cousus ensemble.

L'objectif est d'avoir une structure portable flexible.

La structure doit être plus solide qu'un gant de laine ordinaire puisqu'elle doit être cousue.

Nous avons besoin d'une structure portable autour du poignet pour tenir les alimentations et les actionneurs, et nous avons besoin qu'elle soit stable, nous avons donc choisi de rendre la fermeture réglable en appliquant des bandes Velcro (bandes auto-adhésives) au poignet du jean.

Des bâtons de bois ont été cousus à l'intérieur pour rendre le jean plus rigide.

Étape 3: préparer les pièces fonctionnelles

Préparer les pièces fonctionnelles
Préparer les pièces fonctionnelles

Les pièces rigides sont réalisées par impression 3D en PLA à partir des fichiers.stl du descriptif:

Bague x5 (avec différentes échelles: 1x échelle 100%, 2x échelle 110%, 2x échelle 120%);

Extrémité du doigt x3 (avec différentes échelles: 1x échelle 100 %, 1x échelle 110 %, 1x échelle 120 %);

Roue pour moteur x3

Pour les parties des doigts, différentes échelles sont nécessaires en raison de la taille différente de chaque doigt et de chaque phalange.

Étape 4: Fixez les capteurs aux extrémités

Fixez les capteurs aux extrémités
Fixez les capteurs aux extrémités

Les capteurs de pression sont d'abord soudés aux fils du câble.

Ils sont ensuite collés à l'aide d'un pistolet à colle à l'intérieur des extrémités des doigts: une petite quantité de colle est placée à l'intérieur de l'extrémité, du côté des deux trous, puis le capteur est immédiatement appliqué avec la partie active (rond) sur le colle (avoir le piézoélectrique face à l'intérieur de la structure et la partie plastique directement sur la colle). Les fils du câble doivent passer du haut du doigt jusqu'à son dos, afin que le câblage électrique passe sur le dos de la main.

Étape 5: Fixez les pièces imprimées en 3D sur le gant

Fixez les pièces imprimées en 3D sur le gant
Fixez les pièces imprimées en 3D sur le gant

Toutes les parties rigides (extrémités, anneaux) doivent être cousues au gant pour être fixées.

Pour bien placer les anneaux, portez d'abord le gant et essayez d'enfiler les anneaux, un par phalange, sans qu'ils se touchent lors de la fermeture de la main. En gros, les anneaux de l'index seront fixés à 5mm au dessus de la base du doigt et 17 à 20mm au dessus du premier. Concernant le majeur, le premier anneau sera à environ 8 à 10 mm au-dessus de la base du doigt, et le second à environ 20 mm au-dessus du premier. Pour ce qui concerne le pouce, la précision nécessaire est très faible, puisqu'il ne risque pas d'interférer avec les autres anneaux, essayez donc de l'appliquer sur le gant usé, tracez un trait sur le gant là où vous préférez avoir le anneau pour pouvoir ensuite le coudre.

Concernant la couture, aucune technique ou compétence particulière n'est requise. Avec une aiguille, le fil à coudre fait des cercles autour des anneaux, passant à travers la surface du gant. Un pas de 3-4mm entre deux trous du gant fait déjà une fixation assez solide, il n'y a pas besoin de faire une couture très dense.

La même technique est appliquée pour fixer les extrémités: le haut de l'extrémité est troué afin de faciliter le passage de l'aiguille, ainsi seules les formes en croix sur le dessus du doigt devront être cousues au gant.

Ensuite, les guides en polyéthylène doivent également être fixés, en suivant trois critères:

l'extrémité distale (face au doigt) doit être tournée dans le sens du doigt, pour éviter les frottements importants avec le fil de nylon qui ira à l'intérieur;

l'extrémité distale doit être suffisamment éloignée pour ne pas gêner la fermeture de la main (environ 3 cm plus bas que la base du doigt est suffisant, 4 à 5 cm pour le pouce);

les tubes doivent se croiser le moins possible, pour réduire l'encombrement de l'ensemble du gant et la mobilité de chaque tube

Ils se fixent en les cousant au gant et au poignet, avec la même technique que ci-dessus.

Pour éviter tout risque de glisser dans la couture, un peu de colle a été ajoutée entre les tubes et les gants.

Étape 6: Préparez les roues pour les servos

Préparer les roues pour les servos
Préparer les roues pour les servos

Nous avons utilisé des roues spécialement conçues, dessinées et imprimées en 3D par nous-mêmes pour ce projet (fichier.stl dans la description).

Une fois les roues imprimées, il faut les fixer aux hélices des servos par vissage (vis M2, 10mm). Comme les trous des hélices sont plus petits que 2 mm de diamètre en vissant le M2, aucun écrou n'est nécessaire.

Les 3 hélices peuvent être appliquées sur chaque servo.

Étape 7: Fixez les moteurs au bras

Fixez les moteurs au bras
Fixez les moteurs au bras

Cette étape consiste en la fixation des moteurs au bras; pour cela nous avons dû imprimer une plaque PLA auxiliaire pour obtenir un support.

En effet, les moteurs ne pouvaient pas être fixés directement sur le bras car les roues, nécessaires pour tirer les fils, pouvaient être bloquées pendant le mouvement à cause du gant. Nous avons donc imprimé en 3D une plaque PLA de dimension 120x150x5 mm.

Ensuite, nous avons fixé la plaque à notre gant avec des attaches de câble: nous avons fait des trous dans le gant simplement à l'aide de ciseaux, puis nous avons fait des trous dans la plaque en plastique avec une perceuse et avons tout assemblé. Quatre trous dans la plaque sont nécessaires au centre, dans son périmètre, pour faire passer les attaches de câble. Ils sont fabriqués avec une perceuse. Celles-ci sont au centre et non sur les côtés de la plaque pour pouvoir refermer le jean autour du bras sans que la plaque ne le bloque car la plaque n'est pas souple.

Ensuite, d'autres trous sont également percés dans la plaque en plastique pour fixer les moteurs. Les moteurs sont fixés avec deux serre-câbles croisés. De la colle a été ajoutée sur leurs côtés pour assurer la fixation.

Les moteurs doivent être placés de manière à ce que les roues ne se gênent pas. Il y en a donc séparés du côté gauche et du côté droit de la main: deux d'un côté, les roues tournant dans des directions opposées et une de l'autre côté.

Étape 8: Coder sur l'Arduino

Code sur l'Arduino
Code sur l'Arduino

Le code a été développé de manière simple: actionner ou non les moteurs. Les servos ne sont actionnés que si la lecture dépasse une certaine valeur (elle a été fixée par essais et erreurs car la sensibilité de chaque capteur n'est pas exactement la même). Il existe deux possibilités de flexion, faible pour une force faible et complètement pour une force forte. Une fois le doigt plié, aucune force de l'utilisateur n'est nécessaire pour maintenir le doigt dans la position réelle. La raison de cette mise en oeuvre est qu'autrement il a été mentionné que les doigts doivent appliquer en permanence une force sur les capteurs et que le gant ne donne aucun avantage. Pour relâcher la flexion du doigt, une nouvelle force doit être appliquée sur le capteur de pression, agissant comme une commande d'arrêt.

Nous pouvons diviser le code en trois parties:

Les capteurs s'initialisent:

Tout d'abord nous avons initialisé trois variables entières: lecture1, lecture2, lecture3 pour chaque capteur. Les capteurs ont été placés dans les entrées analogiques A0, A2, A4. Chaque variable pour la lecture est définie comme:

  • lecture1 où est écrite la valeur lue dans l'entrée A0,
  • lecture2 où est écrite la valeur lue dans l'entrée A2,
  • lecture3 où est écrite la valeur lue dans l'entrée A4

Deux seuils sont fixés par doigt correspondant aux deux positions d'actionnement des servos. Ces seuils sont différents pour chaque doigt puisque la force appliquée n'est pas la même pour chaque doigt et la sensibilité des trois capteurs n'est pas exactement la même.

Initialisation des moteurs:

Trois variables char (save1, save2, save3), une pour chaque moteur sont initialisées à 0. Ensuite, dans la configuration, nous avons spécifié les broches où nous branchons les moteurs respectivement: broche 9, broche 6 et broche 3 pour servo1, servo2, servo3; tous initialisés à la valeur 0.

Ensuite, les servos sont actionnés via la commande servo.write() qui est capable de fixer l'angle reçu en entrée sur le servo. Également par essais et erreurs, les deux bons angles, nécessaires pour plier le doigt dans deux positions correspondant à une petite prise et une grande prise, ont été trouvés.

Puisqu'un moteur doit tourner dans le sens opposé en raison de sa fixation, son point de départ n'est pas nul mais l'angle maximal et diminue lorsqu'une force est appliquée pour pouvoir tourner dans le sens opposé.

Lien entre capteurs et moteurs:

Le choix de save1, save2, save3 et lecture1, lecture2, lecture3 dépend de la soudure. Mais pour chaque doigt, le capteur et le moteur liés doivent avoir le même numéro.

Puis dans la boucle, si des conditions ont été utilisées pour tester si le doigt est déjà en position de flexion ou non et si la pression est appliquée ou non sur les capteurs. Lorsque les capteurs renvoient une valeur, une force doit être appliquée mais deux cas différents sont possibles:

  • Si le doigt n'est pas encore plié, en comparant cette valeur renvoyée par les capteurs aux seuils, l'angle correspondant est appliqué au servo.
  • Si le doigt est déjà plié, cela signifie que l'utilisateur souhaite relâcher la flexion et ensuite l'angle de départ est appliqué aux servos.

Ceci est fait pour chaque moteur.

Puis nous avons ajouté un délai de 1000 ms afin d'éviter de tester trop souvent les valeurs des capteurs. Si une valeur de retard trop faible est appliquée, elle risque de rouvrir directement l'aiguille après l'avoir fermée dans le cas où la force est appliquée pendant un temps plus long que le temps de retard.

Tout le processus pour un capteur est présenté dans l'organigramme ci-dessus.

L'ENSEMBLE DU CODE

#include Servo servo1; Servo servo2; Servo servo3; int lecture1; lecture int2; lecture int3; car save1 = 0; // le servo démarre à l'état 0, état de veille char save2 = 0; car save3 = 0; void setup(void) { Serial.begin(9600); servo2.attache(9); //servo à la broche numérique 9 servo2.write(160); //point initial pour le servo servo1.attach(6); //servo à la broche numérique 6 servo1.write(0); //point initial pour servo servo3.attach(3); //servo à la broche numérique 3 servo3.write(0); //point initial pour le servo

}

void loop(void) { lecture1 = analogRead(A0); //attaché à l'analogique 0 lecture2 = analogRead(A2); //attaché à l'analogique 2 lecture3 = analogRead(A4); // attaché à l'analogique 4

// if (reading2 >= 0) { Serial.print("Valeur du capteur = "); // Exemple de commande utilisée pour la calibration des seuils du premier capteur

// Serial.println(lecture2); } // else { Serial.print("Valeur du capteur = "); Serial.println(0); }

if (reading1 > 100 and save1 == 0){ // si le capteur obtient une valeur élevée et n'est pas en état de veille save1 = 2; } // aller à l'état 2 else if (reading1 > 30 et save1 == 0){ // si le capteur obtient une valeur moyenne et n'est pas en état de veille save1 = 1; } // atteint l'état 1 else if (reading1 > 0){ // si la valeur n'est pas nulle et qu'aucune des conditions précédentes n'est correcte save1 = 0;} // passe à l'état de veille

if (save1 == 0) { servo1.write(160); } // libère else if(save1 == 1){ servo1.write(120); } // angle moyen de traction else{ servo1.write(90); } // angle de traction maximum

if (reading2 > 10 et save2 == 0){ // identique au servo 1 save2 = 2; } else if (reading2 > 5 et save2 == 0){ save2 = 1; } else if (lecture2 > 0){ save2 = 0;}

if (save2 == 0) { servo2.write(0); } else if(save2 == 1){ servo2.write(40); } else{ servo2.write(60); }

if (reading3 > 30 et save3 == 0){ // identique au servo 1 save3 = 2; } else if (reading3 > 10 et save3 == 0){ save3 = 1; } else if (lecture3 > 0){ save3 = 0;}

if (save3 == 0) { servo3.write(0); } else if(save3 == 1){ servo3.write(40); } else{ servo3.write(70); } retard(1000); } // Attends une seconde

Étape 9: Fixez l'Arduino, les batteries et le Veroboard au bras

Fixez l'Arduino, les batteries et le Veroboard au bras
Fixez l'Arduino, les batteries et le Veroboard au bras
Fixez l'Arduino, les batteries et le Veroboard au bras
Fixez l'Arduino, les batteries et le Veroboard au bras

Une autre plaque a été imprimée en PLA pour pouvoir fixer les supports de piles et l'arduino.

La plaque a les dimensions: 100x145x5mm.

Quatre trous sont présents pour visser l'arduino et deux pour visser le support de batterie 9V. Un trou a été réalisé dans le support de batterie 6V et dans la plaque pour utiliser un serre-câble pour les fixer ensemble. De la colle a été ajoutée pour assurer la fixation de ce support. L'interrupteur est fixé avec deux petits serre-câbles.

Il y a aussi quatre trous utilisés pour fixer la plaque sur le jean à l'aide de serre-câbles.

Le veroboard est placé sur l'arduino comme un bouclier.

Étape 10: connectez l'électronique

Connectez l'électronique
Connectez l'électronique

Le circuit est soudé sur le veroboard comme indiqué dans le schéma ci-dessus.

L'Arduino a une batterie 9V comme alimentation et un interrupteur est connecté entre ceux-ci pour pouvoir éteindre l'Arduino. Une batterie 6V est nécessaire pour le servomoteur qui a besoin de beaucoup de courant et la troisième broche des servos est connectée au broches 3, 6 et 9 pour les contrôler avec PWM.

Chaque capteur est relié d'un côté par le 5V de l'Arduino et de l'autre côté par une résistance de 330 ohms reliée à la masse et aux broches A0, A2 et A4 pour mesurer la tension.

Étape 11: Ajoutez les fils de nylon

Ajouter les fils de nylon
Ajouter les fils de nylon

Les fils de nylon sont faits pour passer à travers les deux trous sur l'extrémité et les anneaux comme on le voit sur la photo, puis les deux moitiés du fil iront toutes les deux à l'intérieur du guide en polyéthylène et resteront ensemble jusqu'à la fin du guide, jusqu'au moteur. La longueur des fils est déterminée à ce stade, ils doivent être suffisamment longs pour faire le tour une fois la roue du servo avec les doigts droits.

Ils se fixent sur les roues avec un nœud passant par deux petits trous présents sur les fichiers.stl et avec de la colle chaude pour une stabilisation supplémentaire.

Étape 12: Profitez

Cela fonctionne comme prévu.

À la première impulsion, il plie le doigt et à la seconde, il le relâche. Aucune force n'est nécessaire lorsque les doigts sont pliés.

Néanmoins, trois problèmes subsistent:

- Il faut faire attention à faire une impulsion plus courte que 1 seconde pour actionner les servos sinon les fils se relâchent immédiatement après le tirage comme expliqué à l'étape 8 sur le code Arduino.

- Les pièces en plastique glissent un peu, nous avons donc ajouté de la colle chaude à l'extrémité pour ajouter de la friction.

- Si une charge lourde est sur le doigt le capteur aura tout le temps une grande valeur et donc le servo tournera en continu.

Conseillé: