Well, after poking around some more, I've learned the following:
- I asked the wrong question.
- ROS can't quite do what I want.
Basically, my assumption was that each robot ran its own Master, with all nodes on that robot answering to that Master. Masters on different robots would peer with one another across a weakly connected interface. That assumption is why so many people are confused by my question. So, here is the complete background on what I'm doing, so everyone can follow along:
I have a group of robots that are communicating over a lossy, multi-hop wireless mesh network. If you want to command a robot to do something, there must be a route to it through the network graph that is good enough (low enough latency, high enough throughput, etc.) for you to communicate. To guarantee this, I want robots that are not currently being teleoperated to autonomously move to locations that will improve network connectivity. This means that each robot needs to gather and maintain information about what the network looks like independent of any other robot (so that if network partition occurs, robots can still try to do something reasonable). As long as there is a network, the robots need to reach consensus on what the network is like, along with a host of other information. To do that, robot A needs to know what robot B's view of the network is like, and vice-versa; using ROS, that would mean I would have my topics/namespaces organized like /A/networkStatus
and /B/networkStatus
(or some other, similar hierarchy).
But for all of this to work, each robot needs to have its own name. That means that I want the robots to look up their own name in their own parameter server, or their own environment, or whatever. I thought I could do that via a roslaunch
file, but now that I know how ROS works a bit better, I now know that the only thing I can really do is setup a bash
script to kick-off all the robots remotely. This isn't ideal, but it works, so I'm not going to worry too much about it. Thanks for all the suggestions from everyone!