# Robust Distributed Rendezvous Using Multiple Robots with Variable Range Radars
## 4 Distributed Rendezvous Controllers  
Our paper is based on circumcenter algorithms in [13; 14; 15]. The original circumcenter algorithms are as follows. We need to address one definition beforehand. Let \(p_{\mathrm{s}}\) denote a set of points in \(\mathcal{R}^{3}\). The center of the smallest-radius circle enclosing \(p_{s}\) is called the _circumcenter_ of \(p_{s}\). In circumcenter algorithms, each robot performs the following tasks at each time-step \(k\):  
1. it detects its neighbors using its local sensor (radar in our paper). 2. it computes the circumcenter of the point set comprised of its neighbors and of itself. 3. it moves toward this circumcenter while maintaining connectivity with its neighbors. The authors of [15] showed that, when implemented over a 1D space, it is not necessary to enforce the connectivity constraint, as in the third step of the above algorithm. Assuming that a robot can access its orientation in global coordinate systems (inertial measurement units on each robot can be used for orientation measurements), we can extend the 1D algorithm to arbitrary dimensions by means of a circumcenter algorithm implemented in parallel. The parallel circumcenter algorithm in [15] is as follows. Each robot performs the following tasks at each time-step \(k\):  
1. it detects its neighbors using its local sensor (radar in our paper). 2. it projects the detected neighbor positions to each axis of its frame. 3. it computes the circumcenters of each of the projected sets of positions on each axis. 4. it moves to the point whose coordinates are given by each of those circumcenters while maintaining connectivity with its neighbors. The computation of the circumcenter of a bounded set is a strictly convex problem and, in particular, a quadratically constrained linear program [14]. In the parallel circumcenter algorithm, a circumcenter is derived over a 1D space, not over a 3D space. Thus, the parallel circumcenter algorithm is desirable, considering the computational load. Therefore, our rendezvous approach is based on the parallel circumcenter algorithm. In the last step of the above algorithm, a robot, say \(u_{i}\), moves to the point whose coordinates are given by each of those circumcenters while maintaining connectivity with its neighbors. We next explain this maneuver in detail. Let \(\mathbf{T}(k)\) denote the point whose coordinates are given by each of those circumcenters. Recall that \(M_{s}\) denotes the maximum speed of a robot. We define  
\[\mathbf{Q}(k)=\mathbf{u}_{i}(k)+M_{\mathrm{s}}*dt*\frac{\mathbf{T}(k)-\mathbf{ u}_{i}(k)}{\|\mathbf{T}(k)-\mathbf{u}_{i}(k)\|}. \tag{3}\]  
\(\mathbf{Q}(k)\) is set such that \(\|\mathbf{Q}(k)-\mathbf{u}_{i}(k)\|=M_{\mathrm{s}}*dt\). In addition, \(\mathbf{Q}(k)\) is set such that it exists on the line segment connecting \(\mathbf{u}_{i}(k)\) and \(\mathbf{T}(k)\). Let \(\lambda\leq 1\) denote a positive constant. Let  
\[\mathbf{q}(\lambda)=(1-\lambda)*\mathbf{u}_{i}(k)+\lambda*\mathbf{Q}(k) \tag{4}\]  
denote a point on the line segment connecting \(\mathbf{u}_{i}(k)\) and \(\mathbf{Q}(k)\). As \(\lambda\) changes from 0 to 1, \(\mathbf{q}(\lambda)\) changes from \(\mathbf{u}_{i}(k)\) to \(\mathbf{Q}(k)\). Since \(\|\mathbf{Q}(k)-\mathbf{u}_{i}(k)\|=M_{\mathrm{s}}*dt\),  
\[\|\mathbf{q}(\lambda)-\mathbf{u}_{i}(k)\|\leq M_{\mathrm{s}}*dt \tag{5}\]  
is satisfied as \(\lambda\) changes from 0 to 1. Let \(I=[\frac{1}{M},\frac{2}{M},...,1]\) denote the equally spaced interval between 0 and 1. There are \(M\) elements in interval \(I\). While changing \(\lambda\) from the first element in \(I\) to the last element, we find \(\mathbf{q}(\lambda)\), such that  
\[\|\mathbf{q}(\lambda)-\mathbf{w}\|<S_{i}(k) \tag{6}\]  
for all \(w\in N_{u_{i}}\). This implies that \(\mathbf{q}(\lambda)\) maintains connectivity with all robots in \(N_{u_{i}}\). Once \(\mathbf{q}(\lambda)\) is found, which satisfies (6) for all neighbors of \(u_{i}\), we let \(\lambda^{*}\) denote the found \(\lambda\).