0
$\begingroup$

Rosanswers logo

Hello Community, I am working on a multi-agent project using ROS as the framework on each robot. Since the robots will need to talk to eachother (pass and poll data) I was wondering how ROS could help with that. The idea is to have a similar Publisher/ Subscriber relation, over a network connection for different robots. One way to proceed would be to create UDP messages and broadcast them over the network. I wanted to get some insights about the tools/ packages/ libraries in ROS that can help with this. Your help is greatly appreciated! Thanks, Ammar Husain


Originally posted by Ammar on ROS Answers with karma: 289 on 2012-06-18

Post score: 1

$\endgroup$

4 Answers 4

0
$\begingroup$

Rosanswers logo

I think multimaster might be what you are looking for.


Originally posted by dornhege with karma: 31395 on 2012-06-18

This answer was ACCEPTED on the original site

Post score: 3

$\endgroup$
0
$\begingroup$

Rosanswers logo

The easiest way would probably be to just use one common roscore. This works best if you have a reliable network connection between all your robots which is probably not the case.

When you want to run different roscores, make sure you have a look at the multimaster package.


Originally posted by Lorenz with karma: 22731 on 2012-06-18

This answer was NOT ACCEPTED on the original site

Post score: 4

$\endgroup$
0
$\begingroup$

Rosanswers logo

There is an active Special Interest Group working on the Multimaster problem.

You may want to join that mailing list.


Originally posted by joq with karma: 25443 on 2012-06-18

This answer was NOT ACCEPTED on the original site

Post score: 2

$\endgroup$
0
$\begingroup$

Rosanswers logo

Multimaster is a great tool to use. However it is difficult to use tools like those within running ROS nodes. Also it is impossible to send directed messages between robots. Which makes sense since it is designed for a publish/ subscribe architecture.

A great way to get around this is to use Python-ZeroMQ. You could simply open a socket, send your ros msg object and receive it on the other end as a ros msg object. The serialization/ deserialization stuff is taken care of internally. One could potentially do serilization/ deserialization manually as well using pickle library in Python. Message me if you need help broadcasting/ unicasting messages between separate ros masters, and I could give you some code.


Originally posted by Ammar with karma: 289 on 2012-10-03

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by hiccup on 2013-04-25:
Hello Ammar, I am trying to communicate between two robot, one on ROS-fuerte and one on ROS-groovy and I think it would be simpler to go directly via the socket than use the multimaster package. Or is multimaster_experimental backward compatible enough to be used? I would appreciate any help!

Comment by pablocesar on 2015-12-24:
Hi, I'm going to do something similar with c++/Python/Cython and zeroMQ, I'll like any help or Githup from you, Thanks ;-)

Comment by ramya on 2016-10-17:
Hello, I am working on something similar which requires me to communicate between multiple robots. I was wondering if you can provide me any help on how to communicate between separate ros masters?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.