InMoov

javadoc

def foo(data):
  print data;

 

 

Video for InMoov.full.py - script below

The InMoov service allows control of the InMoov robot.  This robot was created by hairygael.  It's an open source 3D printable robot.  All of the parts and instructions to build are on his blog (http://inmoov.blogspot.com/ and 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 of InMoov

Service Name Quantity Description
InMoov 1 A composite service to control and allow easy operation of other all of InMoov's subsystems
Arduino 2+ Arduino control of the left, right sides of InMoov
Servo 22+ A software servo service for motorized control and articulation of InMoov body parts
Tracking 1 A service which allows a pan / tilt camera system to track objects
Speech 1 A service to synthesise speech, basic multi-lingual capability
AudioFile 1 A service to play audio files
PID 2 An important service to implement a PID (proportional integral derivative) controller - e.g. allows smooth tracking of objects
OpenCV 2 The vision service which wraps opencv
Python 1 A python scripting IDE
GUIService 1 A Swing graphical user interface
Sphinx 1 speech recognition service

Future Services for InMoov

Service Name Quantity Description
       
PointCloud   Development to integrate Kinect or Xtion sensor to generated 3D point cloud for SLAM and internal mapping
 
Default Hardware Map
 
Although other boards and board configurations are possible the "default" one is 1 Arduino Mega (left side & Head) and 1 Arduino Uno (right side)
 
group part name Uno Mega default pin rest min max
               
hand thumb right left 2 0    
index right left 3 0    
majeure right left 4 0    
ringFinger right left 5 0    
pinky right left 6 0    
wrist right left 7 90    
               
arm bicep right left 8 0   90
rotate right left 9 90 40  
shoulder right left 10 30    
omoplate right left 11 10 10 80
               
head
 
neck   x 12 90 20 160
rothead   x 13 90 30 150
jaw   x 26      
eyeX   x 22 80 60 100
eyeY   x 24 90 50 100
 

Tutorials

The new InMoov now has 3 sub services
 

InMoovArm - service to control the InMoov robot
InMoovHand - service to control the InMoov robot
InMoovHead - service to control the InMoov robot

 

The following scripts are compatible with 1695 build only.  Version 1695 can be found here.


#file : Python/examples/InMoov.min.py
#file : InMoov.minimal.py

# a very minimal script for InMoov
# although this script is very short you can still
# do voice control of a right hand or finger box
# for any command which you say - you will be required to say a confirmation
# e.g. you say -> open hand, InMoov will ask -> "Did you say open hand?", you will need to 
# respond with a confirmation ("yes","correct","yeah","ya")
 
inMoov = Runtime.createAndStart("inMoov", "InMoov")
 
rightSerialPort = "COM8"
cameraIndex = 1
 
# attach an arduino to InMoov
# possible board types include uno atmega168 atmega328p atmega2560 atmega1280 atmega32u4
# the MRLComm.ino sketch must be loaded into the Arduino for MyRobotLab control !
# set COM number according to the com of your Arduino board
inMoov.attachArduino("right","uno", rightSerialPort)
 
# attach the right hand
inMoov.attachHand("right")
 
# system check
inMoov.systemCheck()
 
# listen for these key words
# to get voice to work - you must be attached to the internet for
# at least the first time
ear = inMoov.getEar()
ear.addCommand("rest", inMoov.getName(), "rest")
ear.addCommand("open hand", inMoov.getName(), "handOpen", "right")
ear.addCommand("close hand", inMoov.getName(), "handClose", "right")
ear.addCommand("capture gesture", inMoov.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")


#file : Python/examples/InMoov.full.py
# a basic script for starting the InMoov service
# and attaching the right hand
# an Arduino is required, additionally a computer
# with a microphone and speakers is needed for voice
# control and speech synthesis

# ADD SECOND STAGE CONFIRMATION
#  instead of saying: you said... it would say: did you say...? and I would confirm with yes or give the voice command again
#  face tracking in InMoov ... activated by voice ...

inMoov = Runtime.createAndStart("inMoov", "InMoov")

rightSerialPort = "COM8"
leftSerialPort = "COM7"
cameraIndex = 1

# attach an arduinos to InMoov
# possible board types include uno atmega168 atmega328p atmega2560 atmega1280 atmega32u4
# the MRLComm.ino sketch must be loaded into the Arduino for MyRobotLab control
inMoov.attachArduino("right","uno",rightSerialPort)
inMoov.attachHand("right")
inMoov.attachArm("right")

inMoov.attachArduino("left","atmega1280", leftSerialPort)
inMoov.attachHand("left")
inMoov.attachArm("left")
inMoov.attachHead("left")

# system check
inMoov.systemCheck()
inMoov.rest()
inMoov.setCameraIndex(cameraIndex)

# new process for verbal commands
ear = inMoov.getEar()
ear.addCommand("rest", inMoov.getName(), "rest")
ear.addCommand("open hand", inMoov.getName(), "handOpen", "both")
ear.addCommand("close hand", inMoov.getName(), "handClose", "both")
ear.addCommand("camera on", inMoov.getName(), "cameraOn")
# ear.addCommand("off camera", inMoov.getName(), "cameraOff") - needs fixing
ear.addCommand("capture gesture", inMoov.getName(), "captureGesture")
ear.addCommand("track", inMoov.getName(), "track")
ear.addCommand("freeze track", inMoov.getName(), "clearTrackingPoints")
ear.addCommand("hello", inMoov.getName(), "hello")
ear.addCommand("giving", inMoov.getName(), "giving")
ear.addCommand("fighter", inMoov.getName(), "fighter")
ear.addCommand("fist hips", inMoov.getName(), "fistHips")
ear.addCommand("look at this", inMoov.getName(), "lookAtThis")
ear.addCommand("victory", inMoov.getName(), "victory")
ear.addCommand("arms up", inMoov.getName(), "armsUp")
ear.addCommand("arms front", inMoov.getName(), "armsFront")
ear.addCommand("da vinci", inMoov.getName(), "daVinci")

ear.addCommand("manual", ear.getName(), "lockOutAllGrammarExcept", "voice control")
ear.addCommand("voice control", ear.getName(), "clearLock")
ear.addCommand("stop listening", ear.getName(), "stopListening")

ear.addCommand("ok", "python", "ok")

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

ear.startListening()

def ok():
  inMoov.setHandSpeed("left", 0.30, 0.30, 1.0, 1.0, 1.0, 1.0)
  inMoov.setHandSpeed("right", 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)
  inMoov.setArmSpeed("left", 0.75, 0.75, 0.75, 0.95)
  inMoov.setArmSpeed("right", 1.0, 1.0, 1.0, 1.0)
  inMoov.setHeadSpeed(0.65, 0.75)
  inMoov.moveHead(88,79)
  inMoov.moveArm("left",89,75,93,11)
  inMoov.moveArm("right",0,91,28,17)
  inMoov.moveHand("left",92,106,4,0,0,34)
  inMoov.moveHand("right",86,51,133,162,153,180)

Sprints

  • 4 PID Eyes and Neck with Tracking and other Movements
  • Face Detection
  • Remote control - detach as part of Servo control and movement - detach created for I2C Servos
  • Inverse Kinectics - InMoov becomes aware of its 3D position
  • Mouth working
  • Search for Face
  • Point at Face Game
  • Cortex Memory
  • Face Recognition 
  • Integrate Kinect
  • Grab Recognized Objects Game - http://www.youtube.com/watch?v=v1TnfsyqPx0
  • Play Chess
  • I2C Enabled
  • Confirmation of voice commands
Scripts in process of being updated - 
If you are interested in helping - let me know !
Thanks,
GroG
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?