InMoov

javadoc

 

- Presentation

- Full program setup howto

- Change language

- DIY & test scripts

- Future

 

 

- Presentation


 

The InMoov service allows control of the InMoov robot. This robot was created by Gael Langevin.

It's an open source 3D printable robot.  All of the parts and instructions to build are on the website http://www.inmoov.fr

InMoov is a composite of servos, Arduinos, microphone, camera, kinect and computer.  The InMoov service is composed of many other peer services, and allows easy initialization and control of these sub systems.

 

Current Services used by InMoov main service

Service Name Config files description : wiki Description Voice command sample
 

InMoov
_InMoov.config A composite service to control and allow easy operation of other all of InMoov's subsystems

REST
METS TOI AU REPOS

 

InMoovArm
skeleton_rightArm.config
skeleton_leftArm.config
 

DA VINCI


InMoovEyelids
skeleton_eyeLids.config  
 

InMoovHand
skeleton_leftHand.config   OPEN YOUR RIGHT HAND
OUVRE TA MAIN DROITE

InMoovHead
skeleton_head.config   TILT YOUR HEAD ON THE RIGHT SIDE
PENCHE LA TÊTE A DROITE

InMoovTorso
skeleton_torso.config    
 

Arduino
service_6_Arduino.config Arduino control of the left, right sides of InMoov
+ 1 deported nano for Neopixel
 

Servo

 
A software servo service for motorized control and articulation of InMoov body parts
 

Tracking
service_D_OpenCv.config A service which allows a pan / tilt camera system to track things

LOOK AT ME

REGARDE MOI

 

 

Speech

service_5_Mouth.config

A service to synthesise speech, basic multi-lingual capability

MarySpeech
Polly
VoiceRss
LocalSpeech
IndianTts

 

SAY HELLO

DIS BONJOUR

AzureTranslator

service_G_Translator.config

Use some Api to translate what the robot ear

TRANSLATE hi IN japanese

TRADUIT bonjour EN japonais


WebGui
service_0_WebGui.config
The WebGUI is a mini webserver and websocket server
 

ChatBot

service_A_Chatbot.config

Globalized AliceBot fork

*

 

AudioFile

 

 

A service to play audio files
voice command

WHAT ABOUT STAR WARS

A PROPOS DE STAR WARS

PID

service_D_OpenCv.config An important service to implement a PID (proportional integral derivative) controller - e.g. allows smooth tracking of objects  

PIR

service_C_Pir.config
Human basic detecor

GO TO SLEEP

FAIS DODO

 

UltrasonicSensor

service_I_UltraSonicSensor.config
Ultrasonic sensor for distance calculation

MEASURING THE DISTANCE

MESURE LA DISTANCE


OpenCV
service_D_OpenCv.config
The vision service which wraps opencv
 

OpenNi

service_E_OpenNI.config

Useful to use a Kinect

BODY CAPTURE

TRACKING SQUELETTE


Python
 
A python scripting IDE
 

SwingGui
 
A Swing graphical user interface
 

 

Voice recognition

service_4_Ear.config

speech recognition service

WebkitSpeechRecognition
AndroidSpeechRecognition
Sphinx

 

 

Neopixel

service_9_neoPixel.config

Neopixel control service

 

OpenWeatherMap

service_H_OpenWeatherMap

Forecast

WHAT IS THE FORECAST

MÉTÉO

WikiDataFetcher

 
Knowledge bible
QUELLE EST LA HAUTEUR DE LA TOUT EIFFEL

 

 

Those services cooked to give life to InMoov :

 

 

 

- Full installation


 

   - Overview
   - Setup software

   - Setup hardware
   - Extra services

 

  • Overview 

InMoov is powered by MyRobotLab a java framework, hardware ( arduino ) is driven by a embeded protocol ( mrlcomm it is the sketch you need to put inside the arduino ) . Mrlcomm transform for you arduino code to easy undertandable & standardized methods. So every scripting methods are done in Python to end user side.

 

 

  • Setup software
  1. Download JAVA 8 - https://www.java.com/fr/download/manual.jsp ( if your computer is 64bit, please take 64bit version )
  2. CHROME - set it default - https://www.google.fr/chrome/browser/desktop/index.html ( if you want to use WebKitSpeechRecognition service )
  3. ARDUINO- https://www.arduino.cc/en/Main/Software
  4. KINECT SDK ( if you have one , it is important you do it now ) - https://www.microsoft.com/en-us/download/details.aspx?id=40278
  5. Create a new folder mrl on root of your disk ( no spaces !! )
  6. Download myrobotlab.jar : manticore stable
  7. Download the launcher 

    -Windows : https://raw.githubusercontent.com/MyRobotLab/inmoov/master/START_INMOOV.bat
    -Linux : ( chmod +x ./start_inmoov.sh ) : https://raw.githubusercontent.com/MyRobotLab/inmoov/master/start_inmoov.sh


     

  8. Click START_INMOOV and wait . Inmoov will say "Hello" and ask for your name !

By default the program launch a virtual environment, with virtual arduino and virtual 3D InMoov. 
Lets see how to use real Hardware !

 

 

  • Setup hardware

If you use or not nervoboards, don't forget to use a dedicated power suply for your servo, arduino have not enough power. This is a generic recommandation about power supply and common ground.

 

  1. It's time to flash your arduino(s) with MRLcomm sketch. You can find it inside this folder : MRL\resource\Arduino\MRLComm ( close mrl before )
  2. Set the Port com of your Arduino(s) in device manager to 115200 BAUD.

 

Now you need to specify the hardware configuration according to the progress of your robot :

 

 

- FingerStarter case :

Open config file InMoov\config\_InMoov.config
Change ScriptType=Virtual to ScriptType=RightSide . This will tell the software it is not virtual anymore, and use the "right" arduino.
You need to specify now what is the COM port of arduino to use . 
Open service_6_Arduino.config
You will see : MyRightPort=COM4 . Just change COM4 by your COM port number.
Because you need only one finger and don't want every unused InMoov skeleton part ( torso , arm ... ) you need to activate the right hand
Open config file InMoov\config\skeleton_rightHand.config and change isRightHandActivated=False by isRightHandActivated=True

You can now start InMoov

- Full robot :

Open config file InMoov\config\_InMoov.config
Change ScriptType=Virtual to ScriptType=Full . This will tell the software it is not virtual anymore, and use both arduino.
You need to specify now what are the COM ports of arduino to use . 
Open service_6_Arduino.config
You will see : MyRightPort=COM4 . Just change COM4 by your COM port number.
you need to activate skeleton parts, exemple :
Open config file InMoov\config\skeleton_rightHand.config and change isRightHandActivated=False by isRightHandActivated=True. Same logic for all others skeleton parts.

You can now start InMoov

 

 

  • Extra services

You can activate and tweak services using corresponding config file. Exemple to activate the camera
Open config file InMoov\config\service_D_OpenCv.config

Set isOpenCvActivated=True

 

- Change language 


Inmoov can interact with you in many languages. There are some pre-configured ( en,fr,es,de,nl,ru,hi )

At this time most efficient worky chatbot is English & French ( others worky but need more translations )

You have the choice of multiple speech engines : List here

 

To use another language that default English, you need to change 2 things.

1/ System language inside main _InMoov.config

2/ Voice engine and voice name ( config/service_5_Mouth.config ) .

( Some of those voice engines need an API key )

 

 

Example to change English to Dutch using MarySpeech engine, edit those files :

_InMoov.config > Language=de

config/service_5_Mouth.config Speechengine=MarySpeech
config/service_5_Mouth.config  > VoiceName=dfki-pavoque-neutral-hsmm

 

Exemple to change English to French using local MarySpeech engine

_InMoov.config > Language=fr

config/service_5_Mouth.config  > Speechengine=MarySpeech
config/service_5_Mouth.config  > VoiceName=upmc-pierre-hsmm

 

Exemple to use universal local operating system TTS engine ( windows or macos ):

_InMoov.config > Language=fr

config/service_5_Mouth.config  > Speechengine=LocalSpeech
config/service_5_Mouth.config  > VoiceName=0 ( check the voice id )

 

etc ...

 

 

- DIY & Test scripts 


 

This is raw references about InMoov Scripting, if you want to code from scratch / debug / and understand how things worky. Inside Pyrobotlab repository you can find too useful things.

 

- Future


- SwinGui refactor to easy configure things

- Add new hadwares, like I2C

- Deep learning

- IK

- Legs service

- Unlimited list

Setup: 

example: 

Examples:


#file : service/InMoov.py edit raw
#########################################
# InMoov.py
# more info @: http://myrobotlab.org/service/InMoov
#########################################
# a very minimal script for InMoov
# this script is provided as a basic guide for InMoov service
# InMoov now can be started in modular pieces through the skeleton.config from full script
# although this script is very short you can still
# do voice control of a FingerStarter or hand
# It uses WebkitSpeechRecognition, so you need to use Chrome as your default browser for this script to work
# virtual = True

rightPort = "COM8"
leftPort = "COM10"

i01 = Runtime.start("i01", "InMoov")

if ('virtual' in globals() and virtual):
    leftPortvirtualArduino = Runtime.start("leftPortvirtualArduino", "VirtualArduino")
    leftPortvirtualArduino.connect(leftPort)
    rightPortvirtualArduino = Runtime.start("rightPortvirtualArduino", "VirtualArduino")
    rightPortvirtualArduino.connect(rightPort)

# starting parts
i01.startAll(leftPort,rightPort)
if ('virtual' in globals() and virtual):i01.startVinMoov()

# verbal commands
ear = i01.ear

ear.addCommand("attach right hand", "i01.rightHand", "attach")
ear.addCommand("disconnect right hand", "i01.rightHand", "detach")
ear.addCommand("rest", i01.getName(), "rest")
ear.addCommand("open hand", "python", "handopen")
ear.addCommand("close hand", "python", "handclose")
ear.addCommand("capture gesture", ear.getName(), "captureGesture")
ear.addCommand("manual", ear.getName(), "lockOutAllGrammarExcept", "voice control")
ear.addCommand("voice control", ear.getName(), "clearLock")

ear.addComfirmations("yes","correct","yeah","ya")
ear.addNegations("no","wrong","nope","nah")

ear.startListening()

def handopen():
  i01.moveHand("left",0,0,0,0,0)
  i01.moveHand("right",0,0,0,0,0)

def handclose():
  i01.moveHand("left",180,180,180,180,180)
  i01.moveHand("right",180,180,180,180,180)

hairygael's picture

Alright, there has been much

Alright, there has been much progress done with the service.

The left and right sides get correctly initiated and set to an initial position that avoid big arms movements.

Setting the speeds also works, which is a big step for to optimize movements and gestures.

Alessandruino's picture

Whooo hoo...inmoov has his

Whooo hoo...inmoov has his first "better faster stronger" repo script .... :D

GroG's picture

Giant script coming soon

Giant script coming soon (whole robot), with Alessandruino's new BETTER FASTER LIGHTER face tracking !

hairygael's picture

Oh wow this is going to be

Oh wow this is going to be awesome! Hope it's ready before saturday 25/05/13

bstott's picture

Where is InMoov?

I came into MRL - 8/20/2013. I upgraded all MRL files and started an InMoov service. Up comes a master tab, an ear and a mouth tab. There are no controls. There are no Arduino or other services associated or started. What happened?

nadia's picture

hi

hello

I`m new here and i want to ask questions.

i`m going to start my inmoov but I want to use just one arduino due for whole the project , is there any special reason that you used 2 arduinos?

and inmoov arm is not openning for me , is that post deleted or it is just me who can`t open it.

Thanks for everything that you did and share it with everyone.

 

pinchis123's picture

I have a problem this is the

I have a problem this is the code we have so far

mouth = Runtime.createAndStart("Mouth","MouthControl")
arduino = mouth.getArduino()
arduino.connect('COM11')

jaw = mouth.getJaw()

jaw.detach()

jaw.attach(arduino,11)


mouth.setmouth(110,120)


mouth.autoAttach = False


speech = Runtime.createAndStart("Speech","AcapelaSpeech")

mouth.setMouth(speech)


speech.setVoice("Will")

 

 

 

 

 

def onEndSpeaking(text):
 

    mouth.setmouth(90,120)
 

    jaw.moveTo(95)
 

    sleep(.5)
 

    mouth.setmouth(110,120)
 

python.subscribe(speech.getName(),"publishEndSpeaking")
 

# Start of main script
 

speech.speakBlocking("I'm speaking a very long text to test mouth movement")
 

speech.speakBlocking("A new sentence to test another long sentece")
 

speech.speakBlocking("And one more")

when running if he speaks but does not move the mouth could help , 
arduino program I'm using is the one I boot when I run from myrobotlab

I'm new to this I hope you can help me