Servo control not working with latest MRL release [SOLVED]

Hey once again; I have gotten the OpenCV to work on MRL once I updated it to a newer version, but I noticed that the Servo control does not work anymore for the newer releases. I am currently running off of the latest version of MRL (1695.20130913.0508) which is compatible with the full inmoov scripts but the servo services do not work. It is not a hardware problem because they work perfectly fine when I control them with an older verision of MRL (1131.20130504.0604). 

GroG's picture

Hello JCInMoov, Nice to see

Hello JCInMoov,

Nice to see you again... the InMoov service is getting a massive overhaul,
but the (1695) should work .. 

Thanks for the no worky.. interesting accessing with 

a = Runtime.getServiceWrapper("a").service

the same thing can be achieved with

a = Runtime.createAndStart("a","Arduino")

its fully reentrant - so it can be called multiple times without ill effect, if the service is already created and started it just hands you back a reference to it.

since I did not se the creation go on at the beginning of the script, I'm assuming you created them with the gui ?  It would be easier for me to diagnose a problem if it was all contained in a single script.  Could you do this and send it to me - and I will try it on whatever version you want.  I don't have an InMoov, but I can test with individual servos.


JCInMoov's picture


Thanks for the quick reply, 

I have been using the method of using a = Runtime.createAndStart("a","Arduino") in order to create the services and the problem still occurs. I started the servo service through the runtime gui on the new MRL and it did not work even though they worked when  I started the services the exact same way on the old MRL. I am trying to get it to work on the latest version of MRL, the one that is compatible with the InMoov scripts. 

Also, the script I am trying to get it to work with is just the inmoov minimal script 

#file :
# 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
# system check
# 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")
GroG's picture

Port in Use

Hi JCInMoov..
I'm sorry to say I have not had time to look at the details of this version & your script..

But for you last No-Worky, I can see a port already in use error..

Which sometimes is a zombie MRL .. Look in the task manager for Java .. kill them all (double tap) .. 

19129 [a] INFO  org.myrobotlab.serial.gnu.SerialDeviceGNU  - opening COM4
19167 [a] ERROR org.myrobotlab.logging.Logging  - ------ Unknown Application
JCInMoov's picture

Port In use

when I mess around with the servo gui by scrolling the little bar back and forth, the rx light on the arduino board lights up and everything but there is no voltage coming out of any of the pins. When I do that with the old version of mrl, the voltage comes out just fine.

GroG's picture

AhhhHaaaaa !

Or maybe Ahhaaa..

Since the two versions you are testing are so very far apart, my guess now, from you description...

is the issue is the Arduino Sketch MRLComm.ino changed between the two versions.

At some point the sketch changed to support variable length messages between the computer and the board.

(At least I hope this is it)

The problem might be rectifired by loading the "new" version of the MRLComm.ino on the board.

(fingers crossed)

JCInMoov's picture


Nailed it on the head Grog; it worked like a charm once I uploaded the new arduino program. Thanks a million!

GroG's picture

(No subject)

fabianfabiani's picture

i am trying to understand

Sorry for the ignorance, then for arduino can work well in the latest version of MRL, I load the old sketch in the arduino MRL copying and pasting the code in the arduino tab within the MRL program? And where I get the old sketch of MRL?