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

How to create a node to share data between different robots

asked 2018-11-06 03:51:02 -0500

Simone92 gravatar image

I am trying to build a data structure (cloud system) able to receive and send data and instructions from/to different kind of robots (e.g. drones,turtlebots). My idea is to create a node to which these robots can subscribe, and then depending on which topics they use to exchange information (e.g cmd_vel to move the turtlebot) this node can redirect the data from a source to a destination.The idea is to have a "universal" node, able to be a sort of common ground for all the agents that need to cooperate sharing information. Is this possible using simple ROS node/topic tools?The point is, how to identify a method to sort each agent depending on which topic and which messages they use to treat data?

edit retag flag offensive close merge delete


I'm a bit confused as to what you're trying to achieve. Are you trying to build a single controller node that can command different types of robot? This wouldn't necessarily need any new data structures to be created.

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2018-11-06 06:35:31 -0500 )edit

Yes my goal would be that, but the node should be able to address the data accordingly with the format used by each different robot. For instance, if i am using a turtlebot, the node should use the cmd_vel topic to send instruction, while if i am using a drone with MAVROS/MAVLink autopilot...

Simone92 gravatar image Simone92  ( 2018-11-08 04:42:22 -0500 )edit

...i will need different topics for the messages exchange. I know this could be achieved writing different python scripts and running them depending on which application i need to use, but i was wondering if the process could be made "automatic", in other words if the node can recognize by itself...

Simone92 gravatar image Simone92  ( 2018-11-08 04:45:54 -0500 )edit

...which method to use to send/collect the data depending on which kind of robot is requesting/posting them

Simone92 gravatar image Simone92  ( 2018-11-08 04:47:14 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2018-11-06 08:01:04 -0500

Hamid Didari gravatar image

if i understand correctly you can use ros network and create a network in your main pc and other robot connect on ros master in main pc and they can subscribe or pubish data over network

edit flag offensive delete link more

answered 2018-11-08 05:28:56 -0500

updated 2018-11-13 04:25:04 -0500

If I understand you correctly, you want to make a node which automatically 'detects' the number and type of robots connected to a ROS network. This node can then, knowing the type of the robots, publish on the correct topics to control them?

You can easily make a node which will subcribe/publish to different topics with different message types as needed, this is used in many nodes already.

Can you define exactly what type of information will be shared between the robots?


Okay to share position information between a group of robots should be fairly straightforward. As long as the robots are estimating their positions in the same coordinate system / map. Most of the localisation systems I've seen in ROS publish the estimated location of a rover using the TF system, if you had a configuration parameter which listed the TF frames which correspond to the rover positions then each robot could use TF lookups to find the position of all the other robots. There is no need for any publishers, subscribers or custom types.

edit flag offensive delete link more


Yes the idea is that one, i have to share information about the position of each robots. More precisely, if i have two robots and robot1 is mapping some zone, i need robot2 to know where robot1 is and which zone it is mapping so that robot2 will avoid to go there to map the same zone...

Simone92 gravatar image Simone92  ( 2018-11-13 04:16:03 -0500 )edit

Once i got this point done, the idea is to move from rover-rover communication to drone-rover communication. The drone will use pixhawk as autopilot, while the rovers are turtlebot3 rovers.

Simone92 gravatar image Simone92  ( 2018-11-13 04:17:31 -0500 )edit

No problem, I've updated my answer now. This should be simpler than you are thinking!

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2018-11-13 04:25:28 -0500 )edit

Thank you very much, this should help

Simone92 gravatar image Simone92  ( 2018-11-13 06:16:49 -0500 )edit

Question Tools

1 follower


Asked: 2018-11-06 03:51:02 -0500

Seen: 645 times

Last updated: Nov 13 '18