Markus Achtelik
2010-01-12 16:47:58 UTC
Hi all,
I was working in the past with LCM (http://code.google.com/p/lcm/)for
passing messages between processes on multiple machines over LAN as well
as WLAN connections.
I'm now working in a new research group and we would like to make some
decisions which way to go in the future. Comparing ROS and LCM directly
might not be possible, so I have some specific questions especially on
the networking/messaging part of ROS.
Our layout in general: we have a flying robot with a onboard computer
offloading computationally demanding tasks via WLAN to a ground-station
consisting of one or more laptops.
- log-playback: is it possible to playback just certain topics, without
having to filter to another logfile first using "rosbag filter". Can I
rename the topic of messages that get published by "rosbag play"
- Is there something like a "ROS-sniffer" to see what's currently going
on in the ROS network?
- Handling lossy connections like WLAN: the tutorial says that UDP might
be a better choice for lossy connections. Loosing packets might be
tolerable for small messages like the pose on a high rate, but it will
be a problem for larger messages like images. Is there any way to set an
error correction? Or is it possible to set a max. number of retries for
TCP without hacking around in the ROS core code? (in LCM, this was
possible with a "tunnel" relaying/correcting messages)
- Is it possible to avoid that an identical message gets over the WLAN
multiple times, e.g. when the robot is publishing an image to multiple
subscribers? Is there a way to enforce the connection type when
subscribing to a topic?
- Close to the question above: how does ROS perform for multiple
subscribers of the same topic. Will the message get over the network
multiple times, or do all nodes somehow reestablish their connections
and use e.g. multicast? (I assume that the nodes won't subscribe at the
same time, so that multicast won't be the best choice from the beginning
on)
LCM is using UDP Multicast and the two issues above could be handled
setting the TTL appropriately and using multicast groups with IGMP
snooping on the switch - would something similar be possible?
Sorry for that ton of questions, but I would appreciate every
comment ;-) !
Best, Markus
I was working in the past with LCM (http://code.google.com/p/lcm/)for
passing messages between processes on multiple machines over LAN as well
as WLAN connections.
I'm now working in a new research group and we would like to make some
decisions which way to go in the future. Comparing ROS and LCM directly
might not be possible, so I have some specific questions especially on
the networking/messaging part of ROS.
Our layout in general: we have a flying robot with a onboard computer
offloading computationally demanding tasks via WLAN to a ground-station
consisting of one or more laptops.
- log-playback: is it possible to playback just certain topics, without
having to filter to another logfile first using "rosbag filter". Can I
rename the topic of messages that get published by "rosbag play"
- Is there something like a "ROS-sniffer" to see what's currently going
on in the ROS network?
- Handling lossy connections like WLAN: the tutorial says that UDP might
be a better choice for lossy connections. Loosing packets might be
tolerable for small messages like the pose on a high rate, but it will
be a problem for larger messages like images. Is there any way to set an
error correction? Or is it possible to set a max. number of retries for
TCP without hacking around in the ROS core code? (in LCM, this was
possible with a "tunnel" relaying/correcting messages)
- Is it possible to avoid that an identical message gets over the WLAN
multiple times, e.g. when the robot is publishing an image to multiple
subscribers? Is there a way to enforce the connection type when
subscribing to a topic?
- Close to the question above: how does ROS perform for multiple
subscribers of the same topic. Will the message get over the network
multiple times, or do all nodes somehow reestablish their connections
and use e.g. multicast? (I assume that the nodes won't subscribe at the
same time, so that multicast won't be the best choice from the beginning
on)
LCM is using UDP Multicast and the two issues above could be handled
setting the TTL appropriately and using multicast groups with IGMP
snooping on the switch - would something similar be possible?
Sorry for that ton of questions, but I would appreciate every
comment ;-) !
Best, Markus