WTF

InMoov & My Robot Lab for Dummies (part 1)

Say hello to Qwerty 🙂

InMoov is a robot created in 2012 by a french sculptor named Gael Langevin. The cool thing about this project is that it is completely open source, printable using almost any 3D printer (like my Anet A8), and customizable with Arduino and many sensors.

Thanks to MyRobotLab, an open source software developed by many volunteers, working with Arduino, servos, cameras and other hardware is easier than write all the code from scratch.

This is my first serious work with my Anet A8, I decided to start printing the head and some part of torso: just to test the printer and my skills with Arduino.

During the building of the model I made some mistakes, learned a lot stuff and burned some components 😂: I dediced then to share my findings and what I used to help other people to build their own robot.

Many info can be found in the official site (eg: here and here and here). This article contains my consdireations and suggestions.

Printer and configuration

The pieces are very well designed and easy to print, so even a standard configuration of a printer is good enough.

3D Model

All the parts can be downloaded from the gallery section of the project site. In particular you need to download and print:

Eyes-mechanism

Face-and-Jaw

Neck

Skull-and-Ears (I printed the EarSpeakers one because I mounted the speakers in the ears)

Torso (pritend them, except the Kinect parts)

Hardware used

PC

A PC with Java installed (more on second part) or a Windows tablet is needed to communicate with the Arduino (which acts like a proxy between My Robot Lab and the peripherals). For developing purpouse a PC is ok, but for a “demo unit” a tablet is more convenient. I borrowed a Trekstor Wintron 10.1 from my office: not very fast but do the work fairly.

Eyes

For the eyes, 2 little servos are needed (one for the horizontal movements and one for the vertical). Gael suggests using Tower Pro SG90, but I prefere the MG90S : it has the same torque and speed, but has a metal gear and should be shock proof. The price is a bit higher (5€ each vs. 4€) but nothing you can be worried about.

Camera

If you want to use the recognition features using OpenCV, you’ll obviously need a webcam. I’ve used the Hercules HD Twist camera: it’s cheap, has a good quality image, and it is official supported by InMoov. I’ve used this nice tutorial for disassemble the camera.

Head Rotation horizontal and vertical

Need to use 2 HS-805BB servos for head rotation (x axis) and neck (y axis). Probably overkill due to the high torque (20 kg/cm).

It draws a lot of juice, about 800mA, so be careful to use a decent battery (see below).

Jaw mechanism

Gael uses Hobby King HK 15298B, it’s a bit expensive but works well, until you destroy them using high voltage batteries 😅. It has a 90 degree rotation and it is perfect for the jaw.

I’m insted using a MG996R: it is cheaper, but has a 180 degrees of rotation, so be careful when moving the jaw (you can break the mechanism if the servo rotates a lot).

Arduino

An Arduino Mega (or compatible) is suggested. For the head and torso an Arduino Uno is ok too, but I used the Elegoo Mega 2560 (a cheaper Arduino Mega).

For testing purpouse I’ve used a breadboard.

Optional

PC speakers, I used a spare ones laying in my drawer. The speaker diameter is 5cm and fits perfectly in the ear model. Probably these are good.

A controller if you want to move the head, I’ve used the one of my loved PS3.

Important note

Before installing each servo, make sure it is in the correct “rest” position. For example, for the eyes servo you need to rotate the gear to 90 degrees, so when assemblying the eyes they will able to rotate left and right.

You can use this snippet in Arduino to rotate the gear:

#include <Servo.h>
Servo myservo;// create servo object to control a servoint pos =90;// variable to store the servo positionvoidsetup(){
myservo.attach(9);// attaches the servo on pin 9 to the servo object}voidloop(){ myservo.write(pos);// tell servo to go to position in variable 'pos'delay(15);}

I’ve used this setup:

Servo eyes x and y: set position to 90°

Neck and head: set position to 90°

Jaw: set position to 0°

You can (and will) change the mapping and rest position of each servo, but starting from a correct position will save a lot of time and require less fine tuning.

Assembly

Once all parts are printed, you need to assemble everything. This video explain briefly the necessary steps: