- français
- English
Multiple Masters
At the moment most of the experiments that I am carrying out use a singe master running on my laptop.
To summarize the functions of a master node:
- provides naming and registration services (for nodes to find each other)
- a Parameter server (that nodes use as a shared dictionary)
Many robotic systems require wireless communication between multiple robots which is true in our case. The only quick way to do that is run a single master on one of the Robots, which all the robots can use to initialize nodes and access parameters. This presents two main problems:
- Robots disconnected from master cannot initialize new nodes or plan path back to master.
- Robots want to communicate simple, high level information such as relative position. But in ROS all position information is published as transforms on topic /tf. Subscribers to /tf get flooded with unnecessary information such as robot joint angles and sharing high bandwidth topics like /tf saturates network.
Giving every robot its own master solves the problem.
- One of the major advantages is that Robots can retain complete independence. They can initialize new nodes and wait for services even when disconnected)
Imagine a single master scenario. If a robot moves out of the WiFi zone and loses its connection to the master, it cannot initialize new nodes to plan its way back into the WiFi region. however this is not the case if we have multiple masters. In this case the robot can initialize new nodes and based on its previous actions, plan its way back. - High bandwidth messages like /tf remain local and the network doesn't saturate. Robots can publish select messages like its position relative to other robots without saturating the network.
Implementation:
One effective method which has been tested is to employ Foreign Relays. Here's a link to the ROS page : http://wiki.ros.org/foreign_relay
Using a ROS package called WiFi Comm, we can open up foreign relays between masters.