ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

ROS as a messaging layer

asked 2013-12-13 02:50:50 -0600

autonomy gravatar image

updated 2013-12-13 04:17:26 -0600

OK, so this may be an open-ended question which may not fit the format, but I'll ask anyway. I will be working on a distributed sensor project and currently am researching messaging protocols. What do people think about using ROS mainly for its no-frills messaging support? There will be dozens of sensor nodes each broadcasting maybe hundreds of data messages after each data bit is processed, so scalability is important. I'm looking at the various *MQ implementations (ActiveMQ, OpenMQ, RabbitMQ, ZeroMQ) as well, but so far ROS is looking very attractive due to ease-of-use and the number of debug tools available. Can anyone who's used both ROS and some version of *MQ comment? What about authentication, does ROS have any?

Edit: details. No real-time requirements, but order is important (header timestamps will take care of that). The sensors will be producing a fair amount of data (say, 50 sensors @30Hz, probably ~300-500KB/s each), but most of this data will be taken care of by intermediary nodes. Each intermediary node (there could be 5-10 of these) will then talk to a central database server which will aggregate the data. Each of the 50 sensors, when processed by the intermediary node, will generate probably around 50 small data points for each reading, these could be an array of values. So, say, 50 publishers @ 30Hz, around 1500 messages each second each consisting of 50 data points. I am not expecting any overhead with dynamic subscriptions.

edit retag flag offensive close merge delete

Comments

There is no authentication. Can you give more precise information on your data requirements: How many msgs/second and how many bytes/second? Do you need any real-time guarantees or will you put a time stamp in a just push data out?

dornhege gravatar image dornhege  ( 2013-12-13 03:12:33 -0600 )edit

Edited the original. Curious about ROS scalability & CPU load as the # of messages increases...

autonomy gravatar image autonomy  ( 2013-12-13 04:20:49 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
3

answered 2013-12-17 21:39:27 -0600

tfoote gravatar image

ROS and *MQ are hard to compare. If you just want transport *MQ will do that just fine. If you can take advantage of the greater tools provided in the ROS ecosystem that is probably a good reason to choose it.

Your limiting factor will likely be the network. You need to make sure that your network can process the amount of data. Either solution can easily fill any network relatively efficiently.

edit flag offensive delete link more
1

answered 2013-12-18 07:29:34 -0600

You're correct that ROS is very easy to use and provides a lot of debugging tools, so why not develop the system using ROS and structure your API well so that you could later replace it with *MQ later if you need to? I assume the actual message passing is only incidental to your system, and it could be easier to develop using ROS as opposed to other message passing systems.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2013-12-13 02:50:50 -0600

Seen: 1,992 times

Last updated: Dec 18 '13