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

Relative performance and tradeoffs of ROS vs ICE (as middleware)

asked 2012-11-13 10:49:59 -0600

hauptmech gravatar image

updated 2014-04-20 14:09:48 -0600

ngrennan gravatar image

Has anyone done a performance comparison (bandwidth efficiency, congestion handling, latency, ???) between ROS and ICE? Anyone used both enough to give some pros/cons to selecting one or the other as a middleware?

(ROS emphasises the Publish/Subscribe aspect and ICE the RPC aspect but each do both and I'm interested in any 'real' comparison information)

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2015-06-26 16:55:21 -0600

tfoote gravatar image

As you mention in your question. They emphasize completely different transport paradigms thus it makes 'real' comparisons very hard. It mostly depends on your application and use case, and what your constraints are.

edit flag offensive delete link more


I'm guessing you mean transport in the sense of RPC vs PubSub rather than SCTP vs DCCP. What is wrong with comparing ICE RPC with ROS RPC and ICE PubSub with ROS PubSub?

hauptmech gravatar image hauptmech  ( 2015-11-25 23:57:04 -0600 )edit

answered 2015-06-26 18:08:14 -0600

I would basically prefer the Topics instead of the RPC call.

But actually RPCs have one big disadvantage.

Lets say you got a node calling process a on node_1 which inside this process has a call to node_b. Then there is something hanging on node_b. Like for example a process which does take to much performance or some loop whatever. That will make all the other nodes block as long as node_b is blocked, sometimes maybe forever.

In topic communication this won't happen. But there is also a minor disadvantage. If you publish a message on a topic, you do not get any response from it, well you could subscribe another topic of the other node to see if it received it, but in most cases you do not need a response. ROS btw. offers that RPC calls as well, it is called ROS services. I recently created my first service btw, after creating lots of nodes without them.

Actually I do not know anything about ICE.

Hope this could help you a bit.



edit flag offensive delete link more

Question Tools


Asked: 2012-11-13 10:49:59 -0600

Seen: 571 times

Last updated: Jun 26 '15