## 3 Coverage Methods Utilizing Multiple Heterogeneous Robots  
This section handles the following problem: _Consider surface ships dropping multiple heterogeneous robots. Build 3D sensor networks without sensing holes, while localizing all robots. While each robot moves, it satisfies the following aspects: obstacle avoidance, and network connectivity are preserved._  
To solve the above problem, this article proposes the coverage methods (Algorithm 1) as follows. Initially, all robots are dropped by a surface ship on the sea surface of the 3D workspace. Then, every robot is controlled one after one sequentially, such that as we locate more robots at their designated target positions, an unsensed open space reduces gradually. The proposed coverage algorithm works by moving a single robot at a time to spread out the sensor network, starting from an initial site and spreading out to cover the workspace completely. Suppose a robot reaches its designated target position (see Algorithm 1). Thereafter, the robot activates its local sonar sensors to sense its surroundings. To build a connected network, a robot \(n_{i}^{s}\) moves into an unsensed open space within \(r_{i}^{dc}\) distance units. As a robot \(n_{i}^{s}\) reaches its designated target position \(f_{n_{i}^{s}}\), the robot activates its local sonar sensors with range \(r_{i}^{dc}\). ```
1:Initially, all robots are stored in \(p^{s}\) on the sea surface of the 3D workspace;
2:One robot, say \(n_{1}^{s}\), is dropped by the ship for the first time;
3:Localize \(n_{1}^{s}\) using the 3D coordinates of \(p^{s}\);
4:The robot \(n_{1}^{s}\) activates its local sonar sensors with range \(r_{1}^{dc}\);
5:FrontierPoints of \(n_{1}^{s}\) are generated;
6:\(i=2\);
7:repeat
8:One robot, say \(n_{i}^{s}\), is dropped by the ship;
9:By applying the directed breadth-first search on \(l^{s}\), \(n_{i}^{s}\) finds the nearest robot, say \(m\), with a frontierPoint;
10:One frontierPoint on \(m\) is chosen as the target position, say \(f_{n_{i}^{s}}\), of \(n_{i}^{s}\);
11:Based on the directed breadth-first search, \(n_{i}^{s}\) travels along the directed path to reach \(m\);
12:\(n_{i}^{s}\) moves to \(f_{n_{i}^{s}}\);
13:if\(n_{i}^{s}\) reaches \(f_{n_{i}^{s}}\)then
14:\(n_{i}^{s}\) activates its local sonar sensors with range \(r_{i}^{dc}\);
15:Localize \(n_{i}^{s}\) using the 3D coordinates of \(f_{n_{i}^{s}}\);
16:\(n_{i}^{s}\) transmits a signal to the ship via multi-hop communication using USBL, so that the ship can deploy the next robot;
17:endif
18:\(i=i+1\);
19:until\(i==N^{s}\) or \(l^{s}\) finds no frontierPoint;
```  
**Algorithm 1** Coverage methods using a ship \(p^{s}\). In Algorithm 1, every robot is controlled one after one sequentially. Initially, \(n_{1}^{s}\) activates its active sonar sensors to sense an obstacle close to the robot. Thus, \(n_{1}^{s}\) can calculate the relative location of its freePoint. Thereafter, frontierPoints of \(n_{1}^{s}\) are generated. Since \(n_{1}^{s}\) is the robot which is deployed for the first time, it has no neighbors when it generates frontierPoints. Therefore, no communication pings are required to calculate the relative location of a frontierPoint in \(f(n_{1}^{s})\). Whenever a new robot, say \(n\), is dropped by a ship, \(n\) moves until arriving at the nearest frontierPoint. The robot \(n\) then activates its local sonar sensors to sense its surroundings. FrontierPoints of \(n\) are generated accordingly. Note that \(5*\|\mathcal{N}(n)\|\) communication pings are required to calculate the relative location of a frontierPoint in \(f(n)\). Repeat this until every robot is positioned at its designated target position. Recall that robots are dropped in the following order: \(n_{1}^{s}\to n_{2}^{s}\rightarrow\cdots\to n_{N^{s}}^{s}\). Consider the case where \(n_{i-1}^{s}\) just activated its local sonar sensors to sense its surroundings. The robot \(n_{i}^{s}\) finds the nearest robot, say \(m\), with a frontierPoint. The directed breadth-first search can be used for finding \(m\).