I have posted before about the example scripts not working and here I am again - another wasted weekend and broken parts for my InMoov.  

I now ask does ANYONE really use MyRobotLab?  It seems to me that ALL examples should be rock solid, work and be up to date - sending No Workys' result in No Respondeys'.  Is the only way to get the examples to work is to build the latest code branch?  I tired of breaking servos and plastic parts.  To be clear, the minimal script is broken needs a rogue '.' - but WHERE?  My script for my hand works in that the sliders move, servos move but ignore the MinMax settings , and the end points are not set in the UI.  I still do not know if it is possible to NOT have the servo move to position 0 instead of staying at position X and updating the UI accordingly.  

Please help ....  does anyone have a complete script for the head, mouth, arms and hands?  I also have camers and a Kinect - are there examples for these items as well?

inmoov = Runtime.start("inmoov","InMoov")
inmoov.rightHand.broadcastState();  // Does not work !!!


6 years 4 months ago

I find your attitude frustrating. 

Servos break, electronics sometimes burn, especially if you don't have testing procedures or if you do not know what your doing. It's happened to all of us, yes it can be frustrating - but we don't cop an attitude to people who have given their energy and time to provide you with free open source software.

Making software is difficult, making it easy for you is more difficult, and you are making it even more so.

In order to stop breaking plastic and servos I suggest you make a testing strategy..  Gael & Markus do this.

They start with very small scripts, a single finger or servo for instance.  I would also suggest you use version 1412



Grog sorry that my attitude is bad but  I was asking for help over a month ago.  The only reply i received was a hey the minimalscript has a missing period. but not where this period goes.

I have asked questions in the shoutbox - over a month ago i was told to use broadcast method to update the ui after setting minmax of the servos and now i am told that that is wrong.  I do not know want to to do and this is frustratuing me to no end - i did not know the setminmax was not working until i attempted to use the heads & jaw and the head and jaw move to position 0 when the script started.  I mean the fingers worked. This is when i noticed that the ui does not show the correct values because parts broke.

I am a noob and this is my first attempt being involved in a open source project - i am just trying maybe too hard I guess sorry.

Bradap,  I understand your frustration, but the reality is, I was able to tele operate an InMoov live on stage with live streaming video in front of nearly 5000 people at the Redhat summit conference in San Francisco using MyRobotLab!  

I believe you can do the same.  In time, with the desire and patience, you too will be able to learn the aspects of computer science, electrical engineering and mechanical engineering that are require to build a robot.  I know that sounds like a lot of stuff to learn...  I suspect you are able to do it, and as much as possible the folks here are generally happy to help out and freely share what they know.

I love seeing people learn and move forward with MRL.  Each new person brings their own innovation, insights and expertise to the community.  We learn together and share our insights and design goals with each other.

I would hope that you might share with us your vision of "what do you want it to do"  rather than just saying "it doesn't work".  I'm sure, as you have more time to study,  I'm sure you will ultimately take classes in programming, perhaps even in electronics.  As you grow your own skills these things which were once difficult will become natural and simple.  Similar to learning to play an instrument, or to speak a foreign language, it takes practice.

I wish we could all just plug into the matrix and "know kung-fu"  but the reality is, it takes dedication, studying, and time to truly master any skill.  Even if you are frustrated with MyRobotLab and you move on, I would hope that you're inspired to continue to learn and grow your knoweldge and skills.  Those are things that can never be taken away from you.



I know but sometimes eggs get dropped before you can make an egg sandwich.

Guys I am truely sorry for being frustrated but I am still at a loss on how MRL is suppose to work.  Using the code that I pasted above I was told that the BroadCastState method would update the UI after the MinMax values were set.  I belive this is as simple of a script that MRL can get that actually does work.  When I run this script and go to the wrist tab and look at the slider the values are 0 and 180 respectfully.  I know the Min and Max values cause I used the slider in UI to get the valuesthat I do not want the servos to travel.   I am using an old build of MRL 1218 but just downloaded 1418.   Since I am late getting to bed now I hope to try the latest stable build this week but still do not know how to update the ui to respect the minmax values. 

I am a software engineer and actually work and maintain a published api, nearly 8 years now, for our video servers for NBC, Comcast and other names.  I am still eager to help and get a new api list for all working methods with each nightly build.  I am not familar with GIT since we use SVN and before that ClearCase at work and never really used Java but from the little I've read its like C#.  I would love to do some web development and hoped that MRL would allow me to interact with another server for RESTful calls I am interested in.

While I was writing this I tried again to install Eclipse and the install fails saying that Java is not installed - yet it is and can run MRL.  It just seems like every step I take is rigged against me.

So again I am sorry, in my initial fustration I lasted out when I should not have.


Ahoy InMySights,

  I didn't realize you were a developer.   What a small world,  I'm not sure if you're involved with it, but a few (more than a few) years back I architected search.comcast.net while I was a Sr. Solution Architect at Fast Search & Transfer.  That was quite a project and I had a chance to work relatively closely with some of the folks from StreamSage,  perhaps we know some people in common?  As always, it's a small world.

  Anyway,  I think you're going down the excatly correct path, getting Eclipse installed and working is the best possible thing you can do.  You'll be able to load the "myrobotlab" and "repo" projects into eclipse, at that point you should be able to run the unit tests, set break points, and step through the code in the debugger.  I suspect this is the best path to understanding how things work in MyRobotLab.

  I think you'll see that MRL, at it's heart, is a publish / subscribe sort of architecture with services.  All service methods are exposed via RESTful endpoints, so I think that will start feeling very framiliar to you.

  I'm not sure why eclipse isn't picking up the java that you have installed.  I'm using Java SE 64 Bit JDK on Windows 10 with Eclipse Java EE (Mars version).  

  I'm not sure what operating system you're using or what particulars are going on with your local environment, but I've found that so long as you have the JDK installed, you can compile java code and run Eclipse.

  Good luck!


P.S.  I did a small video on youtube that talks about using the eclipse debugger.  maybe it will help you.


Well found 2 things wrong - I incorrectly installed 32 bit Java and 64 bit Eclipse did not like that.  Then I was using Eclipse for C/C++ Developers - looking at your video I saw you were using the full version so thank you a lot.  Bottom line I have Eclipse working and next I'll setup Git.

Just a thought since I have not used Java a lot - could the Java 32 bit cause the MRL to work in odd ways?  


Please note that you should clone the "develop" branch, since "master" is the very old 1.0.119 version.

The develop branch contains the latest code.

Java and C++ are both object oriented langagues and have a similar structure. I have converted code from C++ to Java several times without to much struggle.  

I hope that you will come across the bridge of frustration soon and be able to enjoy the strength of MRL and perhaps also become a contributor. Having access to the source code makes a major difference in understanding what's happending behind the scenes.

All example scripts have been worky at some point in time, but MRL continues to be developed and sometimes backward compabilty and documentation suffers. Sometimes it because "there is a better way", sometimes because things have changed in the environment. But also because we have llimited time and need to choose between documenting and developing. Developing is also much more fun than documenting....

MRL is to a large extent bilt on the idea of making other open source projects available as "services" that can be connected together in an easy way. It's structure is similar to Microsofts "robotics studio". However using Java makes it avaliable on many different platforms.  



6 years 4 months ago

the inMoov services are design to follow the limits state by gael on his inMoov.fr website. If your servo limits are different by a lot, that could cause problem

when you do startRightHand() it apply the limits set by gael, set a rest position and move the servo to that. in your case, you apply your own limits after that, so if the rest position is outside your limits, chance is that something will break

there is workaround that have been describe both on this site and inMoov forum. just look around.


I feel your pain. Imagine trying this if you are not a developer in the first place. Honestly I struggle with the lack of working scripts for MRL. I am piecing it together little by little and I find I have to spend a lot of time lurking around GIT to find scripts that either work or don't. 

I have found those on this site helpful but honestly feel like I am wasting your time with sophmoric questions. If this was your job your getting paid for it then hell yeah I'd let the questions fly. I realize this is open source and I am using the software thanks to your good graces though.

In a pefect world every single service listed in your documentation would have a working script attached. I understand this is a lot to do though and not your responsibility. 

For now I will keep the rudder pointed into the wind and hopefully learn as much as I can.





Hi Perry

I can understand you, about one year ago, I was in your seat, trying to understand how MRL work. Arduino and electronics in general were new to me, I was just discovering this new world and getting a lot of interrest in it.

I did not know about Java or Python. I am not a professional developper but I have some knowledge on C++ and PHP language. 

So if you persist you will eventually got a better understanding on how it work.

Don't be afraid to test stuff. On the software level, nothing can't break. you just have to be cautious with your hardware.

Don't be afraid to ask your questions. When I know the answer I will always help and I think most people of the community do the same. Very detailled questions have more chance to get answered than the typical "Help it's not working"



First sorry for not getting back sooner - I have been stuck working 12 hours+ every day this week and attempting to do InMoov things at work in my 10 minute lunch window just did not help or yield results.  At home I've only had time to reprint parts - I just have the jaw hinges to print now.  I was able to install GIT and clone the DEV branch of the code, i believe its the DEV branch but will investigate future this weekend and dive into inmoov deeper with the debugger.  I have only used Visual Studio IDE and heard of Eclipse but never thought of using it, I khow I'll get stuck.

Calamity thanks a lot for your comments, I found a post in the forum and now believe I understand why my jaw broke. I believe that my calling startRightHand was wrong and used predefined values which in the cause of the jaw could be outside the desired travel area.  I should have used create first, then set the limits and finally called start.  Below is the code I should have had used ....

inmoov = Runtime.create("inmoov","InMoov")

unoPort = "COM4"
rightHand = Runtime.create("inmoov.rightHand","InMoovHand")
inmoov = Runtime.start("inmoov","InMoov")





05:33:46.148 [main] INFO c.m.s.Runtime [Runtime.java:1707] version [1.0.1412]
05:33:46.148 [main] INFO c.m.s.Runtime [Runtime.java:1708] root [/C:/Users/brad/Desktop/1412/myrobotlab.jar]
05:33:46.148 [main] INFO c.m.s.Runtime [Runtime.java:1709] cfg dir [C:\Users\brad\Desktop\1412\.myrobotlab]
05:33:46.149 [main] INFO c.m.s.Runtime [Runtime.java:1710] sun.arch.data.model [64]
05:33:46.149 [main] INFO c.m.s.Runtime [Runtime.java:1712] ============== non-normalized ==============
05:33:46.149 [main] INFO c.m.s.Runtime [Runtime.java:1713] java.vm.name [Java HotSpot(TM) 64-Bit Server VM]
05:33:46.149 [main] INFO c.m.s.Runtime [Runtime.java:1714] java.vm.version [25.101-b13]
05:33:46.149 [main] INFO c.m.s.Runtime [Runtime.java:1715] java.vm.vendor [Oracle Corporation]
05:33:46.149 [main] INFO c.m.s.Runtime [Runtime.java:1716] java.vm.version [25.101-b13]
05:33:46.150 [main] INFO c.m.s.Runtime [Runtime.java:1717] java.vm.vendor [1.8.0_101-b13]
05:33:46.150 [main] INFO c.m.s.Runtime [Runtime.java:1720] os.version [10.0]
05:33:46.150 [main] INFO c.m.s.Runtime [Runtime.java:1721] os.version [10.0]
05:33:46.150 [main] INFO c.m.s.Runtime [Runtime.java:1723] java.home [C:\Program Files\Java\jre1.8.0_101]
05:33:46.150 [main] INFO c.m.s.Runtime [Runtime.java:1724] java.class.path [C:\Users\brad\Desktop\1412\myrobotlab.jar]
05:33:46.150 [main] INFO c.m.s.Runtime [Runtime.java:1725] java.library.path [C:\Program Files\Java\jre1.8.0_101\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\system32\config\systemprofile\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft Emulator Manager\1.0\;C:\Program Files (x86)\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseSVN\bin;C:\Users\brad\AppData\Roaming\npm;.]
05:33:46.151 [main] INFO c.m.s.Runtime [Runtime.java:1726] user.dir [C:\Users\brad\Desktop\1412]
05:33:46.151 [main] INFO c.m.s.Runtime [Runtime.java:1728] user.home [C:\Users\brad]
05:33:46.151 [main] INFO c.m.s.Runtime [Runtime.java:1729] total mem [123] Mb
05:33:46.152 [main] INFO c.m.s.Runtime [Runtime.java:1730] total free [113] Mb
05:33:46.152 [main] INFO c.m.s.Runtime [Runtime.java:1731] total physical mem [8072] Mb
05:33:46.152 [main] INFO c.m.s.Runtime [Runtime.java:1733] getting local repo
05:33:46.153 [main] INFO c.m.s.Runtime [Runtime.java:329] Runtime.createService cli
05:33:46.154 [main] INFO c.m.f.Service [Service.java:986] getMessageSet loading 155 non-sub-routable methods
05:33:46.155 [main] INFO c.m.f.Service [Service.java:1451] cfg file C:\Users\brad\Desktop\1412\.myrobotlab\cli.json does not exist
05:33:46.156 [main] WARN c.m.f.Service [Service.java:1346] no such method Runtime.registered(Cli) :  - attempting upcasting
05:33:46.157 [main] WARN c.m.f.Service [Service.java:1351] ouch! need to search through 244 methods
05:33:46.159 [Decoder_stdin] ERROR c.m.s.Cli [Cli.java:244] leaving Decoder
05:33:46.159 [main] INFO c.m.s.Runtime [Runtime.java:329] Runtime.createService agent
05:33:46.160 [main] INFO c.m.f.Service [Service.java:986] getMessageSet loading 176 non-sub-routable methods
05:33:46.161 [Decoder_stdin] ERROR c.m.l.Logging [Logging.java:19] ------
java.io.IOException: The handle is invalid
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at sun.nio.cs.StreamDecoder.read0(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at org.myrobotlab.service.Cli$Decoder.run(Cli.java:115)
05:33:46.161 [main] INFO c.m.f.Service [Service.java:1451] cfg file C:\Users\brad\Desktop\1412\.myrobotlab\agent.json does not exist
05:33:46.162 [main] WARN c.m.f.Service [Service.java:1346] no such method Runtime.registered(Agent) :  - attempting upcasting
05:33:46.162 [main] WARN c.m.f.Service [Service.java:1351] ouch! need to search through 244 methods
05:33:46.163 [main] INFO c.m.s.Agent [Agent.java:172] Agent agent PID 7000 is alive
05:33:46.163 [main] INFO c.m.n.Http [Http.java:23] get https://api.github.com/repos/MyRobotLab/myrobotlab/branches
05:33:47.024 [main] INFO c.m.n.Http [Http.java:23] get http://mrl-bucket-01.s3.amazonaws.com/current/develop/version.txt
05:33:47.297 [main] WARN c.m.f.Service [Service.java:1346] no such method Agent.newVersionAvailable(String) :  - attempting upcasting
05:33:47.297 [main] WARN c.m.f.Service [Service.java:1351] ouch! need to search through 176 methods
05:33:47.298 [main] ERROR c.m.f.Service [Service.java:1378] did not find method - newVersionAvailable(1.0.1586)
05:33:47.299 [main] INFO c.m.s.Agent [Agent.java:759] Agent starting spawn 2016.08.03:05:33:47
05:33:47.300 [main] INFO c.m.s.Agent [Agent.java:760] in args []
05:33:47.300 [main] INFO c.m.s.Agent [Agent.java:767] total physical memory returned is 8072 Mb
05:33:47.300 [main] INFO c.m.s.Agent [Agent.java:776] ============== spawn begin ==============
05:33:47.301 [main] INFO c.m.s.Agent [Agent.java:797] in C:\Users\brad\Desktop\1412\develop spawning -> [C:\Program Files\Java\jre1.8.0_101\bin\javaw -Djava.library.path=libraries/native -Djna.library.path=libraries/native -cp ./myrobotlab.1.0.1412.jar;./libraries/jar/jython.jar;./libraries/jar/*;./bin;./build/classes org.myrobotlab.service.Runtime -service gui GUIService python Python -fromAgent ]
05:33:47.307 [main] INFO c.m.f.Status [Status.java:83] starting new 0 runtime
05:33:47.309 [main] INFO c.m.s.Agent [Agent.java:865] Agent finished spawn 2016.08.03:05:33:47
05:34:24.993 [runtime.monitor] INFO c.m.f.Status [Status.java:83] terminated 0 runtime