[ros-users] Multi-robot communication

Brian Gerkey gerkey at willowgarage.com
Mon Jul 12 20:28:52 UTC 2010

hi Gonçalo,

I think that in this case, you really want the masters on the robots
to share topic and service registration information.  We've talked
about several ways of doing this, including a kind of NFS-like
"mount," but haven't seriously implemented anything yet.

I know that the folks at Penn have hacked roscore so that multiple
masters find each other via DNS-SD (aka Bonjour) and then exchange
information about certain publishers and subscribers.

When the masters communicate, you don't need any relays; nodes
associated with one master connect directly to nodes associated with
another master.


2010/7/12 Gonçalo Cabrita <goncabrita at gmail.com>:
> Hi Brian,
> Thanks for your feedback.
> I see what you mean... So is there any other way of doing this? Right now
> this is what we've come up with...
> We use olsr (http://www.olsr.org/) to get to know which robots are in our
> network. This information is published as a msg over ROS. So each robot now
> knows who is online. We then use foreign_relay to send ROS msgs from one
> robot to the other.
> I'm taking care of this part and I though it would be nice if I could write
> up a ROS srv that has as inputs the ip (or ips) of the robot to send a msg
> to and then an opaque msg where you can send anything. The srv would then
> encapsulate the desired msg along with the ip of the sender and publish it
> over foreign_relay. The receiving robot would then get the message and know
> who it came from. I was aiming for a flexible node, easy to use.
> However if we are to use defined types how can we accomplish this? Should we
> open a foreign_relay for each topic we want to use between each 2 robots?
> Thanks for the help,
> Gonçalo Cabrita
> ISR - University of COoimbra
> Portugal
> On Mon, Jul 12, 2010 at 5:57 PM, Brian Gerkey <gerkey at willowgarage.com>
> wrote:
>> 2010/7/12 Gonçalo Cabrita <goncabrita at gmail.com>:
>> > We've been working on our comm node and we have encountered a problem.
>> > We are thinking about creating a ROS msg to send over foreign_relay that
>> > looks like this:
>> > int robot_id
>> > ShapeShifter msg
>> > We would like to know if ShapeShifter can be used to hold any message we
>> > might want to send and if we need an extra field like msg_type or not.
>> No, ShapeShifter is not a ROS message.  It's a a C++ class that is
>> used by certain tools to handle messages without knowing their types
>> (and it's a pretty hacky way of doing that).  All ROS messages are
>> explicitly typed when sent over the wire.  If you really want to send
>> an opaque blob of data (not recommended, as you'd be circumventing the
>> ROS marshaling support, and would lose the ability to introspect
>> messages), then you can do something like:
>> uint8[] msg
>>        brian.
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users

More information about the ros-users mailing list