## 4 Robust Distributed Rendezvous Control
### Distributed Rendezvous Algorithms  
While all UUVs stop, Algorithm 1 in Section 4.1 runs to build a spanning tree \(T\) in a distributed manner. Based on the tree \(T\), Algorithm 2 runs to achieve rendezvous at \(u_{N}\). In other words, Algorithm 2 makes every UUV encounter at the root \(u_{N}\). We explain Algorithm 2. Initially (\(t=0\)), all leaf UUVs begin visiting every UUV along the path to \(u_{N}\). Each leaf UUV finds a path to \(u_{N}\) using \(T\). Since \(T\) is a tree graph, only one path exists from a node to the root in \(T\). Once the path is found, each UUV stores the UUV indexes along the path to \(u_{N}\). How to make a UUV visit the UUVs along the path to the root \(u_{N}\) is discussed in Section 4.4. In order to maintain network connectivity, the maneuver of a UUV must not disconnect the network. Therefore, each UUV does not begin moving until it encounters all its descendants in \(T\). This implies that each UUV needs to store the UUV indexes associated with its all descendants. Let us consider a UUV \(u^{\prime}\) with at least one child. From \(u^{\prime}\) to \(u_{N}\) in \(T\), only one path exists. As soon as \(u^{\prime}\) encounters all its descendants, \(u^{\prime}\) starts visiting every UUV along the path to \(u_{N}\) under Algorithm 2. As time elapses, \(p(u^{\prime})\) encounters all its descendants and \(p(u^{\prime})\) starts visiting every UUV along the path to \(u_{N}\). This procedure continues until all UUVs encounter at \(u_{N}\). ```
1: While all UUVs stop, Algorithm 1 in Section 4.1 runs to build the tree \(T\) rooted at \(u_{N}\);
2:repeat
3:\(u\leftarrow\) every UUV;
4:if\(u\) is a leaf in \(T\)then
5: The UUV \(u\) finds a path to \(u_{N}\) using \(T\);
6: The UUV \(u\) starts visiting every UUV along the path;
7:elseif\(u\) is not a leaf in \(T\)then
8:if\(u\) encounters all its descendants then
9: The UUV \(u\) finds a path to \(u_{N}\) using \(T\);
10: The UUV \(u\) starts visiting every UUV along the path;
11:endif
12:endif
13:if a UUV is broken or interaction link between two neighboring UUVs in \(T\) is broken by moving obstacles then
14: All UUVs stop moving, and re-build a tree \(T\) by re-running Algorithm 1 in Section 4.1;
15:endif
16:if an invisible UUV blocked by unknown obstacles appears suddenly then
17: All UUVs stop moving, and re-build a tree \(T\) by re-running Algorithm 1 in Section 4.1;
18:endif
19:until every UUV encounters \(u_{N}\);
```  
**Algorithm 2** Distributed rendezvous strategy  
Whether a UUV encounters another UUV can be detected utilizing signal power measurements. Recall that if both \(P(u_{i})\) and \(P(u_{j})\) exceed \(P^{c}\), then we assume that \(u_{i}\) encountered \(u_{j}\). As long as we consider static obstacles, the connectivity of the path to the root \(u_{N}\) is not broken by obstacles. In other words, as long as obstacles have not moved after the initial tree generation, the maneuver of a UUV along the path to the root is not blocked by obstacles. Theorem 1 proves that Algorithm 2 is distributed. Furthermore, Theorem 1 proves that network connectivity is preserved while a UUV maneuvers until reaching the root. This implies that under Algorithm 2, every UUV reaches the root, while preserving network connectivity. Theorem 1 (). : _Algorithm 2 is distributed. Under Algorithm 2, every UUV reaches the root, while preserving network connectivity to the root._  
Proof. : Suppose that \(u\) has been visiting UUVs along the path to \(u_{N}\) in Algorithm 2. Let \(PATH\) indicate the path for convenience. Suppose that \(PATH\) consists of a set of UUVs \(p_{1}\to p_{2}\to p_{3}\ldots\to p_{end}\) in this order. Here, \(p_{end}\) is the root \(u_{N}\). As \(u\) moves along this path, it reaches the root in the end. We first prove that \(p_{i}\), where \(i\in\{1,2,\ldots,end-1\}\), starts moving only after \(u\) encounters \(p_{i}\). A UUV, other than a leaf starts moving only after all its descendants in \(T\) encounter it. Any UUV on \(PATH\) is an ancestor of \(u\).