Ask Your Question
0

Problems sending duplicate data on publisher PC

asked 2019-06-11 08:51:32 -0500

stillrunning gravatar image

I have questions about topic subscribe.

When subscribing topic data from Master to Client(I mean that PC to PC) with ROSTCP, I saw that the amount of data transmission increases by the number of subscribers (including rostopic function such as bw, hz) even if access same topic data at same pc. For each subscriber, the socket (Unicast method) appears to be opened and communicating separately, so looks normal. However, if multiple clients (PCs) simultaneously request large topic data, such as camera sensor data, the Publisher PC will be under heavy load and network traffic problems will also occur. This seems to be a significant limitation in using ROS with large data.

  1. Is there a way to send about same topic data once to the same PC from the Publisher PC?
  2. I know that ROSTCP doesn't have a multicasting and broadcasting method. Does ROSUDP is supported these methods?
  3. Does ROS2 has the same problem?

Environment - OS : Ubuntu 16.04 - ROS : Kinetic - PC : Desktops - Network : Using 10 Gbit ethernet

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2019-06-11 09:38:38 -0500

gvdhoorn gravatar image

updated 2019-06-11 09:46:24 -0500

See #q50323 for an old related question.

See ethzasl_message_transport for an old, currently unsupported, set of alternative transports that offer UDP multicast for ROS 1 that would address some of what you ask. Note the limitations on maximum message size (the implementation does not support fragmentation and reassembly).

As for ROS 2: the question would actually be: "does DDS send messages to remote hosts multiple times if there are multiple participants running on the same host?", as ROS 2 primarily uses DDS as the underlying middleware.

I don't know of any ROS 2 support at this time, but some DDS vendors do support UDP multicast, such as RTI (docs here).


Edit: a workaround in ROS 1 could be to have only a single subscriber register for the topic published by the remote host and then have that single subscriber republish any incoming messages locally. That would avoid multiple datastreams between the remote host and the subscribers. It would introduce computational overhead though (although it could be relatively low, when using ShapeShifter fi). Perhaps topic_tools/relay could be part of that workaround.

edit flag offensive delete link more

Comments

Hi gvdhoorn, Thank you so much for sharing your knowledge and nice tips. Thanks to all the questions have been resolved. :)

stillrunning gravatar imagestillrunning ( 2019-06-11 20:04:36 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2019-06-11 08:51:32 -0500

Seen: 11 times

Last updated: Jun 11