# UVCS: Unit Virtual Coordinate System for UAV Intra-Swarm Routing in GPS-Denied Environment
## 3 Requirements for Implementation of the Virtual Coordinate System Algorithm  
The algorithm developed in this paper works in a system of virtual coordinates called the Unit Virtual Coordinate System. The algorithm assumes that each node has and regularly updates information about all neighboring nodes. In the case of applying the UVCS to a UAVs swarms, due to radio signal attenuation the distance at which UAVs are able to communicate is limited, so we consider neighbors to be adjacent nodes directly available for communication via a radio interface without any intermediate relay nodes. The name of the system came about by analogy with the unit disk graph [29], if the maximum distance between directly connected UAVs is normalized to one. The main objective of the proposed UVCS is to enable a network node to calculate its virtual address based on locally available network knowledge in order to minimize the overhead of distributing information throughout the network. The system works in such a way that network nodes do not need to have access to information obtained from external sources, such as absolute geographic GPS coordinates or cellular infrastructure data. To maintain proper operation of the system, each node in the network must perform a set of actions independent of the other nodes in the network, i.e., a node makes  
==WARNING: Truncated because of repetitions==
{k}}\frac{f_{k,j}(\rho(\mathbf{s}_{k},\mathbf{s}_{j}))}{\rho( \mathbf{s}_{k},\mathbf{s}_{j})}(\mathbf{s}_{k}-\mathbf{s}_{j}).\] (10)  
For illustration, if \(F_{k,j}(x)\) and \(f_{k,j}(x)\) in (6), (8) have the form of  
\[F_{k,j}(
+++  
function, in our case \(3N\). It is also possible to carry out optimization at each step not for individual variables, but for groups of some variables. In our case, those groups are vectors \(\mathbf{s}_{i}=(x_{i},y_{i},z_{i})\), \(i=1,2,\ldots,N\)[33].  
To calculate the next approximation, the gradient descent method suggests  
\[\mathbf{s}_{n+1,k}=\mathbf{s}_{n,k}-\lambda_{n,k}\
abla_{k}F(\mathbf{s}_{n,1}, \mathbf{s}_{n,2},\ldots,\mathbf{s}_{n,N}),\quad k=1,2,\ldots,N,\quad n=1,2,\ldots, \tag{13}\]  
where \(\lambda_{n,k}>0\) is some constant, \(\
abla_{k}F(\mathbf{s}_{n,1},\mathbf{s}_{n,2},\ldots,\mathbf{s}_{n,N})\) is a gradient of the function \(F(\mathbf{s}_{1},\mathbf{s}_{2},\ldots,\mathbf{s}_{N})\) by the variable \(\mathbf{s}_{k}\), i.e,  
\[\
abla_{k}F(\mathbf{s}_{n,1},\mathbf{s}_{n,2},\ldots,\mathbf{s}_{n,N})=\left( \begin{array}{c}\frac{d}{dx_{k}}F(\mathbf{s}_{1},\ldots,\mathbf{s}_{N})\\ \frac{d}{dy_{k}}F(\mathbf{s}_{1},\ldots,\mathbf{s}_{N})\\ \frac{d}{dz_{k}}F(\mathbf{s}_{1},\ldots,\mathbf{s}_{N})\end{array} \right). \tag{14}\]  
The convergence of iterative procedure (13) is defined by the Lipschitz condition [34]. The parameter \(\lambda_{n,k}\) should be chosen in such a way that after the replacement \(\mathbf{s}_{n,k}\) of \(\mathbf{s}_{n+1,k}\), the new value of the function \(F(\mathbf{s}_{n,1},\mathbf{s}_{n,2},\ldots,\mathbf{s}_{n,N})\) increases drastically. Finally, in the UVCS approach the gradient descent algorithm itself is as follows. By carrying out \(n\) cycles, we have the following. * Vectors \(\mathbf{s}_{n,2},\mathbf{s}_{n,3},\ldots,\mathbf{s}_{n,N}\) remain unchanged while we minimize the function \(F_{n+1,1}(\mathbf{s}_{1})=F(\mathbf{s}_{1},\mathbf{s}_{n,2},\mathbf{s}_{n,3},\ldots,\mathbf{s}_{n,N})\) by the vector \(\mathbf{s}_{1}\). We obtain the approximation \((\mathbf{s}_{n+1,1},\mathbf{s}_{n,2},\mathbf{s}_{n,3},\ldots,\mathbf{s}_{n,N})\), where \(\mathbf{s}_{n+1,1}\)--the optimal value of the vector \(\mathbf{s}_{1}\). * Vectors \(\mathbf{s}_{n+1,1},\mathbf{s}_{n,3},\ldots,\mathbf{s}_{n,N}\) remain unchanged while we minimize the function \(F_{n+1,2}(\mathbf{s}_{2})=F(\mathbf{s}_{n+1,1},\mathbf{s}_{2},\mathbf{s}_{n,3 },\ldots,\mathbf{s}_{n,N})\) by the vector \(\mathbf{s}_{2}\). We obtain the approximation \((\mathbf{s}_{n+1,1},\mathbf{s}_{n+1,2},\mathbf{s}_{n,3},\ldots,\mathbf{s}_{n,N})\), where \(\mathbf{s}_{n+1,2}\)-- is the optimal value of the vector \(\mathbf{s}_{2}\).