How does MRL compare to ROS?

Grog,

Nice job!

I come from the ROS(Robotics Operating System) world that uses a publisher/subscribe paradigm for doing asynchronous messaging.

How does MRL address asynchronous messaging from multiple devices/sensors?

(also, as a side note:  Where/how did you get that "Jarvis" (Iron Man movie) sounding voice that shows up in the Finger tutorial for InMoov? It sounds great!)

Sam

GroG's picture

Hello Sam

And Welcome...

MRL uses the same paradigm, regretfully I have not really used ROS .  I loaded it a couple times, but besides the "hello world" tutorial .. I don't know much of the details of ROS.  So, the following comparison will be skewed by my ignorance of ROS.

Similiaries :

  • They are both service based frameworks - you can start run stop and remove services from the system
  • They both are or can be distributed - across multiple processes and multiple machines
  • They both use publish subscribe messaging 
  • MRL can send blocking messages to - where the caller is blocked until the response - dunno if ROS does this
  • MRL & ROS have Python bindings

Differences

  • Usability from an entry level is a design concern with MRL - maybe recently ROS is changing this way - dunno
  • MRL is pure Java exception occur only when talking directly to hardware or no other means exist - ROS I think is still C++ althogh there was a Java spin off

Hope this helps, or maybe better yet - I hope this generates more questions :D

GroG

kothary_vikash's picture

How do they work together

To expand on the question, I am trying to decide between MyRobotLab and ROS as the base for a robotic head. But then I realised that MRL has a ROS service. Does this mean they can work together and if so which framework would be better for what purpose?

GroG's picture

Hello kothary_vikash and

Hello kothary_vikash and Welcome.

The ROS service in MRL is a shell which need implementation.  From your question, I was prompted to look at what ROS currently has for jave interface.

This was the most relevant information I found so far :
http://wiki.ros.org/rosjava/Tutorials/indigo/No%20Ros%20Installation 

It has a link :
The RosJava Maven Repository   

which would be interesting - but give a 404 from Github.

So currently we do not have a bridge to ROS.

The information I wrote previously would still be valid.

MRL drives the real InMoov's head

Also Virtual InMoovs head in the JMonkey service

and through the Blender service

I'm afraid I wouldn't know the ROS services related to a robot head...

I imagine your background would influence your decision.  For example if you are a C++ developer, you might prefer ROS.  If you are a Java developer, you might prefer MRL more.
 

If we had a good document to describe the messaging ROS expect we could probably get the ROS bridge service to work.  Or if someone found their maven repo which looks like its missing ..

Hmm - this might be it .. - https://github.com/rosjava/rosjava_mvn_repo