From Brown University Robotics
What I see as a long term vision for the robot mesh network is a physical network that can sense, move, compute, reason, act on the environment while letting users query or pass information around. Such a network should be self-forming, self-healing and self-organizing. As a step towards that goal, I plan to do "fault-tolerant coverage" ensuring biconnectivity and non-existence of holes (nodes move dynamically to ensure the abovementioned properties, distributed multirobot coordination algorithm).
- Biconnectivity/fault-tolerance: robots are relatively unreliable and/or many need to change tasks (e.g. they may be called by a human user). If one of the robots leaves or crashes, the rest should still be able to communicate. Biconnectivity is translated to remaining robust to any single failure under the assumption that the team can readjust its positioning in response to a departure more quickly than a second departure will occur.
- Non existence of holes: Holes can be created by suboptimal deployment of nodes or node failure. They are undesired because they correspond to regions of noncoverage in which events of interest cannot be observed. In addition, holes affect the routing paths and the overall capacity of the network.
- BP: given the limited range communication among the nodes in the network, a distributed coordination algorithm is desired. BP is distributed by nature, it can model a variety of probability distributions, it has been shown to work descently even in loopy graphs, it is well studied (-> probably can also use insights from BP to prove some convergence properties of the algorithm to be derived)
- Release a group of robots and let them form a network ensuring biconnectivity and non-existence of holes
- Have a new robot come and let it find its optimal position in the network (may need to adjust the position of other nodes as well)
- Have the user determine the optimal placement (based on user's policy) of a robot through teleoperation and have the rest of the robots adjust their positions accordingly (do that as dynamically as possible)
- "Kill" one or more nodes and have the rest of the nodes adjust their positions accordingly (do that as dynamically as possible) -> most likely connectivity still exists given that initially the graph was biconnected, but we want to make it biconnected again
- Some of the dead nodes are on again, change the network accordingly