échofab

Projet de Robot Humanoïd InMoov

InMoov est le premier robot Open Source à taille humaine entièrement imprimé en 3d. Répliquable sur n’importe quelle petite imprimante 3D avec une surface d’impression de 12x12x12cm, celui-ci est conçu comme une plateforme de développement autant pour les Universités, les Laboratoires que pour les Hobbyistes. Son concept basé sur le partage et la communauté, fait qu’il est déjà répliqué pour un bon nombre de projets partout à travers le monde.

Site Officiel de InMoov

Etape 1: Liste du matériel

La première étape du projet sera de créer un index avec toutes les pièces et le matériel nécessaire à la création du robot. Vous pouvez trouver la liste standard sur le site officiel ainsi que le mapping par défaut de l'électronique à cette adresse.

Voici la liste du matériel que nous avons utilisé:

Général

Composante Nombre
Arduino Mega 2
NervoBoard 1
Camera Hercules HD 1 ou 2
Screw Allen countersunk M3x20MM 75
Screw Allen countersunk M4x20MM 75
Screw Allen countersunk M8x100MM 25
Phillips Flat-Head Wood Screws M3x12MM 150
Phillips Flat-Head Wood Screws M4x20MM 100
0,8mm braided /fishing line. 200LB 100M

Main et avant-bras

Composante Nombre
servos HK15298B 10
servos MG996r 2
1500gr natural PLA 1
extension spring 5mm diameter, 1cm length(13/64″x13/16″) 10

Biceps et Epaule

Composante Nombre
servos Hitec HS805BB 8
1500gr natural PLA 1

Tête et torse

Composante Nombre
servos Hitec HS805BB HEAD 4 AXIS 2
servos HK15298B JAW MECHANISM 1
Servo DS929hvCorona EYE MECHANISM 3
5500gr natural PLA 1
eFuel switch Power supply 6V-15V Output 20Amps. 1
Mini PC speaker 4Ohm 6W 2
PIR sensor retriggered 1
Cables and wires -

Estomac

Composante Nombre
servos Hitec HS805BB 2
Vigor VSD-11AYMB or CYS model S8218 2

Pièces imprimées en 3D

La librairie des pièces à imprimer en 3D se trouve sur le site officiel de InMoov

Etape 2: Fabrication du Robot

Mains et avant-bras

Imprimer les pièces suivantes issues du site officiel de InMoov :

  • 1x Thumb
  • 1x Index
  • 1x Majeure
  • 1x Auriculaire
  • 1x Pinky
  • 1x Bolt_entretoise
  • 1x Wristlarge
  • 1x Wristsmall
  • 1x topsurface
  • 1x coverfinger
  • 1x robcap3
  • 1x robpart2
  • 1x robpart3
  • 1x robpart4
  • 1x robpart5
  • 1x rotawrist2
  • 1x rotawrist1
  • 1x rotawrist3
  • 1x WristGears
  • 1x CableHolderWrist

Les pièces nécessiteront très certainement d'être retravaillés et sablés, limés pour que l'assemblage puisse se faire.

Chapitre 1 - Le lit des servos

Commencez par assembler les pièces Robpart2 et Robpart5 ainsi que les pièces Robpart3 et Robpart4. Pour cela plusieurs solutions existent. Nous avons choisi d'assembler les pièces en les soudant grâce à un Doodler ou crayon 3D. Vous pouvez également utiliser de la colle epoxy.


Dans la pièce Robpart5, insérez deux écrous de 4mm de diamètre. Si les écrous ne rentrent pas correctement, vous pouvez les chauffer avec un pistolet à air chaud et enfoncer l'écrou à l'aide d'une pince


Fixez maintenant le tensioneur au servo-bed en le vissant. L'image ci-contre montre l'assemblage final.


Limez ensuite le servo-bed pour qu'il rentre correctement dans la pièce Robpart5 et sécurisez avec deux vis à bois de 3mm de diamètre


Vous pouvez maintenant fixer les servos moteur au servo-bed.


Repercez des trous avec un forêt de 2mm de diamètre sur la pièce ServoPulley. Vissez ensuite la tête de servo (pièce en plastique blanche sur la photo) qui venait avec le servo à la pièce ServoPulley. Coupez et limez la partie des vis qui dépasse.


Il est maintenant temps d'utiliser votre arduino pour positionner tous les servos à leur zéro. Pour cela connectez les servos comme sur l'image à droite et téléversez le script qui suit à l'arduino. Une fois tous les servos à zéro, vissez les têtes de servos.


#include <Servo.h>

Servo servothumb;          // Define thumb servo
Servo servoindex;          // Define index servo
Servo servomajeure;
Servo servoringfinger;
Servo servopinky;
Servo servowrist;
Servo servobiceps;
Servo servorotate;
Servo servoshoulder;
Servo servoomoplat;
Servo servoneck;
Servo servorothead;

void setup() { 
  servothumb.attach(2);  // Set thumb servo to digital pin 2
  servoindex.attach(3);  // Set index servo to digital pin 3
  servomajeure.attach(4);
  servoringfinger.attach(5);
  servopinky.attach(6);
  servowrist.attach(7);
  servobiceps.attach(8);
  servorotate.attach(9);
  servoshoulder.attach(10);
  servoomoplat.attach(11);
  servoneck.attach(12);
  servorothead.attach(13);
  
} 

void loop() {            // Loop through motion tests
  alltovirtual();        // Example: alltovirtual
  delay(4000);           // Wait 4000 milliseconds (4 seconds)
//alltorest();           // Uncomment to use this
//delay(4000);           // Uncomment to use this
//alltomax();            // Uncomment to use this
//delay(2000);           // Uncomment to use this
 
  
 
}
// Motion to set the servo into "virtual" 0 position: alltovirtual
void alltovirtual() {         
  servothumb.write(0);
  servoindex.write(0);
  servomajeure.write(0);
  servoringfinger.write(0);
  servopinky.write(0);
  servowrist.write(0);
  servobiceps.write(0);  
  servorotate.write(20);    //Never less then (20 degree)
  servoshoulder.write(30);  //Never less then (30 degree)
  servoomoplat.write(10);   //Never less then (10 degree)
  servoneck.write(0);
  servorothead.write(0);
}
// Motion to set the servo into "rest" position: alltorest
void alltorest() {         
   servothumb.write(0);
  servoindex.write(0);
  servomajeure.write(0);
  servoringfinger.write(0);
  servopinky.write(0);
  servowrist.write(0);
  servobiceps.write(0);     
  servorotate.write(90);    //Never less then (20 degree)
  servoshoulder.write(30);  //Never less then (30 degree)
  servoomoplat.write(10);   //Never less then (10 degree)
  servoneck.write(90);
  servorothead.write(90);
}



// Motion to set the servo into "max" position: alltomax
void alltomax() {
  servothumb.write(180);
  servoindex.write(180);
  servomajeure.write(180);
  servoringfinger.write(180);
  servopinky.write(180);
  servowrist.write(180);
  servobiceps.write(85);      //Never more then (85 or 90degree)
  servorotate.write(110);     //Never more then (110 degree)
  servoshoulder.write(130);   //Never more then (130 degree)
  servoomoplat.write(70);     //Never more then (70 degree)
  servoneck.write(180);
  servorothead.write(180);
 
}
Chapitre 2 - Un poignet solide

Commencer par retirer le support d'impression de la pièce RotaWrist1.


Coller les pièces RotaWrist1 et Robpart2 ensemble.


Insérer et sécuriser le servo MG996 avec des vis à bois où les vis fournies avec le servo. Ce servo permet une rotation sur 180 degrés.


Insérer le petit engrenage imprimé en 3D dans la tête de servo.


Coller la pièce CableHolderWrist sur le servo avec de la colle chaude ou de l'epoxy.


Assembler les pièces RotaWrist3, RotaWrist2 et l'engrenage ensemble. Ajouter de la graisse sur l'engrenage pour la lubrification.


Chapitre 3 - Des doigts agiles

Retravailler (lime et perçage) et assembler les doigts. Le tutoriel de Gaël Langevin peut vous aider: https://www.youtube.com/watch?v=0t2uhAyf2-c&t=0s


Chapitre 4 - Assemblage

Il faut mainteant prendre une décision en ce qui concerne les capteurs de pression au niveau des doigts. Il y a trois trous dans la pièce WristLarge. Les trous du milieu correspondent aux trous pour les fils des capteurs.


Couper 10 fil de 75cm de long dans le fil de pêche. Insérer les fils dans les trous de la pièce Wristlarge. Passer également les fils électriques si vous choisissez la version avec les capteurs de pression.


Passer ensuite les fils dans le poignet.


Relier la main, le poignet et l'avant bras.


Attacher les fils aux servos moteurs. Vous pouvez utiliser les ressorts pour garder la tension dans les fils comme sur l'image ci-contre. Lors de cette étape, il faut que les servos soient à zéro ou à 180°


Biceps

Chapitre 1 : Hacker des servos


La première étape est un petit hack du servo. Dans un premier temps il faut ouvrir le servo. Commencer par dessouder le moteur et retirer le pcb. Sortir ensuite le potentiomètre du servo. avant de ressouder et refermer le servo, il faut couper la partie du plus gros engrenage qui sert de frein.


Chapitre 2 : Un biceps énorme et sec


Assembler ensemble les pièces RotmitV1 et RotgearV1. L'assemblage doit contenir les trois pièces comme sur les images ci-contre.


Fixer le servo moteur sur l'assemblage puis fixer la vis sans fin sur la tête de servo. Vous pouvez tester l'assemblage avec le code arduino. Le tout doit tourné sans bruit et de façon fluide. Avant de fermer l'assemblage, il faut ajouter de la graisse.


Refermer l'assemblage et placer le potentiomètre dans le support prévu. Il faut tester la rotation du bras pour placer correctement le potentiomètre.


Assembler les pièces higharmV1 et rotmitV1 ensemble. Attention, si vous utilisez du PLA pour l'impression il est nécessaire de le chauffer avec un pistolet thermique (heatgun) pour éviter la casse.


Epaules et torse

En construction FIXME

Tête

En construction FIXME

Estomac

En construction FIXME

Etape 3: Installation et utilisation de MyRobotLab

FIXME