What is myrobotlab?
Myrobotlab is a open source Java service based framework for robotics and creative machine control.

What does it run on?
Myrobotlab runs on the Java 1.8 (or above) JVM, so any computer or device which supports this JVM conceptually could run myrobotlab.  Many of MyRobotLab Services will run on Android's Dalvik JVM.

What are the Services it offers?
The services myrobotlab include machine vision from Javacv/Opencv, speech recognition from Sphinx 4, text to speech from FreeTTS, Motor control, Servo control, GUI control and microcontroller communication.  Third party services are wrapped in myrobotlab Service wrappers and added to the framework.  A list of services is here.

How would myrobotlab control a robot?
It would depend on what kind of robot it is.  If the robot contained a regular PC as part of its system, myrobotlab could run directly on the robot itself.  If the robot consisted of a microcontroller only, myrobotlab could run on an ancillary computer and communicate/control the robot through RF, Infrared, WiFi, Bluetooth or any number of other communication methods (WiiCom).

What microcontrollers does myrobotlab currently support?
At the moment, Arduino and Arduino clones are only supported, however, the .pde code which comes with myrobotlab is very simple.  It basically uses the Arduino microcontrollers serial communication and turns the Arduino into a IO-slave.  Porting this microcontroller code to other microcontrollers (Propeller, PicAxe, Stamp, Make, etc) would be fairly easy. Porting it to Propeller is already done (at least the basics).

Can 2 different computers running myrobotlab talk to one another?
Yes.  Myrobotlab can run and communicate on multiple computers at once.  When one instance of myrobotlab connects to another, it can expose all of its currently running services to the second instance.  This allows services on different computers, robots, or systems to seamlessly communicate with one another.

How does myrobotlab communicate?
This depends on what its communicating with.  If there is only one instance and everything is local, in communicates with binary objects.  If remote access is enabled or if more than one myrobotlab is running on multiple computers, the communication is done with TCP or UDP depending on configuration.  Microcontrollers are typically communicated to serially.  Go to http://myrobotlab.org/content/communication for ideas on different ways to implement communication.

Why Java?
There is an enormous amount of well organized, open source Java projects on the net which would be relevant to robotics. Java was chosen to ease interoperability and leverage this potential functionality.  Java also supports reflection which aids to dynamically exposing functionality in services.

Does it have a GUI?
Yes.  It can have multiple GUIs, a single GUI, or no GUIs at all.  The GUI is just another Service in the framework.  And it too like all other services, can communicate remotely if needed.  It can also be wrapped in an Applet if the user desires it to be embedded on a web page.

Do you need to know how to program to use myrobotlab?
Currently, Yes.  Although more and more functionality is being exposed through the GUI, to do anything neat you'll probably need to program it.  The idea is to allow the GUI to create, configure Services and graphically change message routing.  Currently, the GUI only allows Service creation.

How can I support MyRobotLab ?
Ahoy !  Join our community, post questions, help friends, explore with others. 
We currently maintain a community website, build server and repo

http://myrobotlab.org 
http://build.myrobotlab.org
http://repo.myrobotlab.org

If your interested in supporting us and these systems please subscribe to our patreon account

https://www.patreon.com/myrobotlab

Thank You !