Multi-robot Dubins Coverage with Autonomous Surface Vehicles
In large scale coverage operations, such as marine exploration or aerial monitoring, single robot approaches are not ideal, as they may take too long to cover a large area. In such scenarios, multi-robot approaches are preferable. Furthermore, several real world vehicles are non-holonomic, but can be modeled using Dubins vehicle kinematics. This paper focuses on environmental monitoring of aquatic environments using Autonomous Surface Vehicles (ASVs). In particular, we propose a novel approach for solving the problem of complete coverage of a known environment by a multi-robot team consisting of Dubins vehicles. It is worth noting that both multi-robot coverage and Dubins vehicle coverage are NP-complete problems. As such, we present two heuristics methods based on a variant of the traveling salesman problem—-TSP—formulation and clustering algorithms that efficiently solve the problem. The proposed methods are tested both in simulations to assess their scalability and with a team of ASVs operating on a 200 lake to ensure their applicability in real world.
This paper addresses the problem of covering a large area for environmental monitoring with multiple Dubins vehicles. Coverage is a task common to a variety of fields. The application areas can be classified based on the scale of operations, by the necessity to ensure the coverage of all available free space (termed complete coverage), and by whether there is prior knowledge of the environment. From small scale household tasks such as vacuum cleaning and lawn mowing to large scale operations such as automation in agriculture, search and rescue, environmental monitoring, and humanitarian de-mining, coverage is a key component. See [1, 2] for in-depth surveys. Finding a solution to the coverage problem means planning a trajectory for a mobile robot in a way that an end-effector, often times the body of the robot, passes over every point in the available free space. Employing multiple robots can reduce the coverage time cost, and, in hazardous conditions, such as humanitarian de-mining, increase the robustness by completing the task even in the event of accidental “robot deaths.” The use of multiple robots however, increases the logistical management and the algorithmic complexity.
Covering an unknown environment, termed online coverage , focuses on ensuring that no part is left uncovered and on minimizing repeat coverage. In contrast, when covering a known environment, the focus is on performing the task as efficiently as possible . As mentioned above, another classification is between ensuring complete coverage versus, in limited time, ensuring that the most interesting areas are covered . Furthermore, the scale of the environment in conjunction with the speed and endurance of the robot(s) classify the coverage task as small, medium, or large scale. For example, a flying vehicle with battery life and an average speed of can cover a trajectory of , while an autonomous surface vehicle (ASV), moving at () for five hours will travel approximately .
In this paper we focus on the monitoring of aquatic environments. The vehicles of choice are ASVs that were custom-made at the University of South Carolina (see Figure 1). Aquatic environments, in general, require large scale operations. For example, one of the testing grounds used—Lake Murray—has a surface of over . Many ASVs, similar to fixed wing aircraft, are governed by Dubins vehicle kinematics ; i.e., Dubins vehicles cannot turn in place. More formally, a Dubins vehicle is defined as a vehicle which may only follow line segments and arcs with radius greater than some specified minimum with non-negative velocity, i.e., they may not back up. Recent work [7, 8] presented an efficient approach to cover an area by a single Dubins vehicle. We extend the proposed algorithm to multiple robots based on recent work on multi-robot coverage  for holonomic robots. This work ensures a more efficient division of labor between robots, particularly for large scale environments. Efficiency is measured as a combination of the utilization of the robots and the reduction of the maximum coverage cost. The idea is that robots are limited battery life; as such, the workload should be evenly distributed. We present two methods. In the first one, the efficient path produced by the algorithm proposed by Lewis et al.  is divided to approximately equal parts, in terms of path length, and each part is assigned to a different robot. In the second method, the target area is divided into equal parts, based on the team size, and then the single robot algorithm  is applied to each area.
Experimental results from several simulated experiments show that indeed the utilization of the robots is maximized and the maximum coverage cost is minimized. Moreover, the approach is scalable to a large number of robots. Field trials with a single robot, a team of two, and a team of three ASVs, demonstrated the feasibility of the proposed approach with real robots executing plans generated by the planner and highlighted several practical challenges.
The next section discusses related work for the complete coverage problem using either single or multi-robot systems. Section III presents the problem statement and, in the following section, an outline of the proposed approach is discussed. The experimental setup is presented in Section V together with results from simulation and from the deployment of a team of ASVs in Lake Murray, SC, USA. Finally, a discussion of lessons learned together with future directions of this work concludes the paper in Section VI.
Ii Related Work
There are numerous ways to formulate coverage, including static or dynamic coverage, complete or partial, offline or online [1, 2]. In addition, there are many different approaches to tackle such a problem, such as defining it as graph partitioning problem, performing region-based decomposition, or defining it as sub-modular optimization problem [10, 2].
When prior information about the environment is available as a map, the coverage is called offline . One of the approaches widely used in offline coverage algorithms is based on area decomposition. Choset  proposed a cellular decomposition technique, called boustrophedon decomposition (BCD). In his work, the coverage are is decomposed into obstacle free cell. A lawnmower pattern is typically executed to cover each cell. Other approaches were also used for decomposing areas based on Morse decomposition  or grid-based decomposition .
Some of the grid-based methods to single robot coverage were adapted for multi-robot systems as well [14, 15, 16, 17]. The robustness and efficiency of the systems proposed by that body of work depend on the resolution of the input representation. Because the size of each cell is typically based on the size of the sensor footprint, the coverage becomes more challenging in environments with many obstacles, as the footprint size increases.
Polynomial time algorithms were proposed for solving single robot coverage using a boustrophedon decomposition based approach [18, 4]. In contrast to the original algorithm, in these approaches, the problem is represented as the Chinese postman problem (CPP). The latter is a graph routing problem, of finding a minimum-cost closed tour that visits each edge at least once. Edmonds and Johnson  found a polynomial-time solution for CPP.
When considering the coverage problem for robots with turning constraints, a simple boustrophedon coverage plan may introduce wasted time—that is, time spent out of the region of interest because of the constraints and thus not actually covering. The Dubins vehicle is a common robot model in coverage problems, and Savla, Bullo, and Frazzoli  consider a control-theoretic solution. In our work, however, we provide an algorithmic approach to minimizing the path length by minimizing the time spent not actively covering because of the motion constraints.
Reducing traversal time by considering motion constraints is not a new idea in coverage. Both Huang  and Yao  minimize the path length by using motion constraints in their environmental decompositions. Both of them, however, seek to reduce the amount of rotation required by the robot, while we optimize the solution by carefully selecting how the robot transitions from covering to not-covering.
This idea is related to the traveling salesman problem (TSP) with Dubins curve constraints, called Dubins traveling salesman problem. In [23, 24], the Dubins TSP is defined as metric TSP with the additional constraint that paths between nodes must adhere to a minimum turn radius necessary for the covering vehicle’s transition between nodes.
Some of the presented methods based on cellular decomposition were also designed for multi-robot systems , assuming restricted communication. Avellar et al.  present a multi-robot coverage approach that operates in two phases: decomposing the area into line-sweeping rows, based on which a complete graph is constructed to be used in the second phase, where the vehicle routing problem  is solved. Field trials with Unmanned Aerial Vehicles (UAV) showed that their proposed approach provides minimum-time coverage. However, that algorithm is only applicable for obstacle free environments.
In our previous work , we presented a communication-less multi-robot coverage algorithm based on efficient single robot coverage. Even if the proposed methods demonstrate better performance on robots utilization and almost optimal work division, the robots utilization is dependent on the number of obstacles in the area. As in that work clustering is based on boustrophedon cells, a small number of obstacles will result in small number of cells, and consequently less clusters per regions. Note that, however, the solution generated did not take into account any kinematic constraints of the robots.
A large body of work in multi-robot systems assumes that there is some form of communication between the robots . Some of them came up with alternative implicit communication means, such as trail of other robots [28, 29, 30]. Nevertheless, this type of communication is impractical in aquatic or aerial environments.
The graph routing problems such as TSP and CPP have also their definition for multiple routes: finding routes that visit non overlapping vertices of the graph, such that the union of those clusters are the exact set of vertices in the TSP case. This problem is called -TSP problem. When edges are considered instead of vertices, the problem is called -CPP. Both these problems and their variations were shown to be NP-complete .
In this paper, differently from the current state of the art, we address multi-robot coverage for Dubins vehicles, for which no solution is readily available. In the following section, the problem is formally defined.
Iii Problem Statement
The Dubins multi-robot coverage problem can be formulated as follows. We assume to have homogeneous robots, with no communication capabilities, equipped with a sensor with fixed-size footprint , and with Dubins constraints—namely, the robots have a minimum turning radius , that constrains the robots to follow line segments and arcs with radius greater than , and they cannot drive in reverse. Such robots are deployed in a D-bounded area of interest region . The objective is to find a path for each robot , with , so that every point in the region of interest is covered by at least a robot’s sensor.
An efficient solution is one that minimizes the length of the trajectories for the robots, while at the same time ensuring that the workload on the robots are evenly distributed. This is motivated by the fact that homogeneous robots have the same limited battery life, and thus, to cover a big region, it is better to utilize all of them for the coverage task.
In practice, this means that an efficient algorithm finds non-overlapping regions such that , where each robot can perform a calculated covering trajectories . Note that includes the whole path robot has to follow: a robot starts from an initial starting point , goes to a point of entry to a partition of the interest region , covers fully , and goes back to . We call the coverage cost—i.e., the traveled distance—of a single robot covering as . As such, we can define the optimization problem of Dubins multi-robot coverage as a MinMax problem: minimizing the maximum cost over all robots.
Iv Proposed Methods
In this section we introduce the terminology used in the subsequent sections. Next, we present the two -coverage algorithms. The first algorithm builds an optimal tour and splits it between multiple robots and is called Dubins Coverage with Route Clustering (DCRC). The second algorithm first divides the area between robots and then starts route planning, which we refer to as Dubins Coverage with Area Clustering (DCAC).
A cell is defined as a continuous region containing only the area of interest that one of the robots must cover entirely. The cells are the result of a BCD decomposition . The Dubins coverage algorithm by Lewis et al. —referred to as Dubins coverage solver (DCS)—is a process by which a coverage problem is mapped to a graph for which a solution to the TSP results in a single coverage path.
The DCS algorithm divides cells into a collection of passes, defined as the smallest unit of coverage; each of which is axis-aligned and has a width equal to the robot’s sensor footprint. Each pass becomes the node of a directed, weighted Dubins graph . The edges of are defined as the Dubins path from a source node to a target node. The weight of an edge is then the length of the segments and arcs of the Dubins path between two passes and . The output of the DCS algorithm is an optimal Hamiltonian path , where and is the number of passes, that is .
Iv-B Dubins Coverage with Route Clustering (DCRC)
Our first approach for multi-robot Dubins coverage is based on DCS and Coverage with Route Clustering (CRC) method .
The CRC algorithm creates cells applying the BCD algorithm on a binary image of the area with obstacles. Then, boustrophedon cells are turned into edges of a weighted graph—called Reeb Graph—on which -Chinese Postmen Problem (-CPP) is solved. The result is a -partitions of an optimal route.
To address Dubins constraint in this paper we are interested in solving the -TSP problem instead of -CPP. The pseudocode for DCRC is presented in Algorithm 1. Line 1 gets an optimal Hamiltonian path , where the vertices are passes, by using the DCS algorithm to solve the single-robot Dubins Coverage problem with the DCS algorithm. Its cost is given by the initial traveled distance to get to the region of interest , the sum of the costs to cover passes ,, and the cost to go back to the starting point (Line 3). Note that the travel cost is defined as Euclidean distance between midpoint coordinates of corresponding and passes. The resulting optimal path is split into subtours (Lines 4-7). For a given starting point , the cost of any tour is defined as the cost of traveling from the starting point to reach a designated coverage cell, the actual cost of covering that cell and the cost of traveling back to the starting point (Line 8, where is the index of the last pass/vertex in the path). Cost is calculated to balance travel and coverage costs between robots (Line 3). Such a clustering procedure was proposed in the -TSP solver by Frederickson et al. .
The complexity of this algorithm is exponential as DCS uses an exact TSP solver. The FHK algorithm is proved to have an approximation factor of .
Iv-C Dubins Coverage with Area Clustering (DCAC)
The DCAC algorithm, similar to the CAC algorithm , performs clustering of the region of interest and then finds the optimal route for each robot. An overview of the DCAC algorithm is presented in Algorithm 2.
In particular, the BCD algorithm is applied to decompose the environment into cells, consisting entirely of areas which should be covered (Line 1). Then, each cell is divided into passes (Line 2). A corresponding graph is created from these passes (Line 3). The graph is an undirected weighted graph , where each vertex is located at the center of a pass; vertices in this graph are connected with an edge if and only if their corresponding passes share a common edge. The cost of each edge is defined as the Euclidean distance between midpoints of passes. The vertices of graph are clustered performing a breadth-first search (BFS) clustering (Line 4). The size of a cluster is defined as . DCS is then applied on each resulting cluster of passes (Lines 5-7).
The clustering step in the CAC algorithm  ensures that the cost of reaching the region of interest and the actual coverage cost per region are balanced, by assigning more passes to cover to robots that are closer to the region of interest; while the robots that have to travel more to reach the coverage area will have less passes to cover.
As the complexity of TSP is exponential, by partitioning problem into small TSP subproblems, the overall TSP performance is improved. Nevertheless, the complexity will still remain exponential.
The proposed method has been first evaluated with simulation tests for large environments within a custom simulator that accounts for Dubins constraints, to test the optimality of such an approach and its scalability.
Second, we modified a fleet of jet-drive Mokai ES-Kape sport kayaks, shown in Figure 2, to be autonomous surface vehicles, and used them for validating the proposed approach with real robots. The goal includes checking if the assumptions made hold in the real world. The ASVs are equipped with a SONAR transducer collecting depth measurements with a frequency of , a PixHawk controller for waypoint navigation and safety behaviors, and a Raspberry Pi with the Robot Operating System (ROS) framework  to record GPS and depth data.
V-a Simulated Results
The simulation was performed for three large input environments maps taken from Lake Murray and rural Quebec area. The maps differ in terms of size and shape complexity. We have evaluated both DCRC and DCAC algorithms with a different number of robots, that is robots. The baseline for comparing the costs of each tour is the cost of optimal route produced by TSP algorithm. As the problem is defined as MinMax problem, we consider the value of the maximum cost per robot along with the ideal cost as metric. The ideal cost is defined by dividing the single optimal route cost to the number of robots. Another metric considered in this paper is the robots’ utilization, that is the ratio between the number of robots used and the total number of robots available. However, in the following, results with the robots’ utilization are not reported: in all the experiments, the robots’ utilization is , differently from the results obtained in . This can be explained by the additional decomposition of the boustrophedon cells in passes, which allows the algorithms to distribute cells more evenly to robots.
Figure 3 shows the paths followed by robots on the three environments considered, using both algorithms. Qualitatively, it can be observed that DCAC produces paths where robots mostly transition to adjacent passes, while with DCRC, robots go to one pass to another that are typically not adjacent. This fact makes the robots following the paths generated by DCAC going out from the region of interest because of the minimum turning radius—compare for example Figure 3 (a) and (b). Those tighter turns contribute to an increase in the overall cost.
Indeed, as illustrated in Figure 4—which shows the ratio between maximum coverage cost and ideal cost—DCRC has better performance. For example, in the Rural Quebec environment with robots, DCRC has maximum coverage cost ratio of , while for DCAC is .
V-B Field trials
Given the better performance of DCRC, we validated the approach using DCRC with the ASVs, in a area in Lake Murray, SC. The sensor footprint used had and the turning radius of the ASV is . A path, in the form of a waypoint sequence, was generated with the ASVs starting just outside the area of interest. In the following, a description of the experiments performed and the results obtained.
The main objective of the field trials was to ensure that the assumptions hold also with real robots, so that the ASVs are able to follow the trajectories generated by the proposed algorithms.
V-B1 Single Robot Coverage baseline
Similar to the simulation experiments, the single robot coverage for Dubins Vehicles algorithm  is used here as a baseline for comparison with the multi-robot approach.
V-B2 Multi-Robot Coverage Experiments
A variety of experiments were performed using teams of two or three robots in different areas of Lake Murray.
Figures 5 and 5 shows the ideal path for two and three ASVs as generated by DCRC; while Figures 5 and 5 shows the actual path followed by two and three robots, respectively. As can be seen qualitatively in Figures 5 and 5, the path followed by the ASVs are pretty much in line with the ideal path. The small deviations are due to GPS error, current, wind, and waves from other vessels. As such, the proposed methods can be applied for coverage with ASVs with Dubins constraints.
Note the ill-structured path of one of the robots (robot following the blue trajectory), result of a hardware failure and a hysteresis of its on-board PID controller. This illustrates the real world challenges with field trials: even if the boats are supposed to be identical, they are not, and they should undergo each of them an initial tuning phase of the different parameters of the boats. Such an issue opens interesting research directions on robust multi-robot coverage, including recovery mechanisms to adapt the algorithms to the new minimum turn radius and accounting for heterogeneity.
The resulting multi-robot coverage is also comparable to the single-robot coverage trajectory, where only small areas were left uncovered. Indeed, the bathymetric maps resulting from the single and multi-robot coverage are similar.
The maximum traveled distances per experiment with different number of robots are presented in Table I along with the ideal traveled distance. As in case of the simulation, the ideal path length is the size of the sub area if the tasks were exactly divided to equal parts.
|Number of Robots||1||2||3|
This paper presented a novel approach for multi-robot coverage utilizing multiple ASVs governed by Dubins vehicle kinematics. Both presented algorithms are extending our previous work on efficient multi-robot coverage with Dubins coverage algorithm.
The further clustering of the area ensures 100% utilization of robots. We show the validity and scalability of both approaches in simulation. The experiments show that both algorithms result in almost optimal solutions. Nevertheless, DCRC algorithm demonstrated slight advantage over DCAC algorithm in terms of coverage cost. As a result, our choice of algorithm was DCRC for performing field trials. The field trials were performed on a 200 region on Lake Murray, SC, USA. During the multi-robot coverage in a few instances, two vehicles came too close to each other.
We are currently investigating an automated arbitration mechanism following the rules of the sea  to avoid collisions. Furthermore, a camera system is being developed to provide situational awareness of the surroundings during operations. In general, the multi-robot coverage problem has several directions of interest, in particular taking into account the robustness of the proposed methods in real world.
This work was made possible through the generous support of National Science Foundation grants (NSF 1513203, 1637876). The authors are grateful to Perouz Taslakian for invaluable advisement and Sharone Bukhsbaum, Christopher McKinney, George Sophocleous, and Anthony Grueninger for their assistance in designing and building the ASVs.
-  H. Choset, “Coverage for robotics â a survey of recent results,” Ann. Math. Artif. Intel., vol. 31(1-4), pp. 113–126, 2001.
-  E. Galceran and M. Carreras, “A survey on coverage path planning for robotics,” Robot. Auton. Syst., vol. 61(12), pp. 1258 – 1276, 2013.
-  I. Rekleitis, A. New, E. S. Rankin, and H. Choset, “Efficient boustrophedon multi-robot coverage: an algorithmic approach,” Ann. Math. Artif. Intel., vol. 52(2-4), pp. 109–142, 2008.
-  A. Xu, C. Viriyasuthee, and I. Rekleitis, “Efficient complete coverage of a known arbitrary environment with applications to aerial operations,” Auton. Robot., vol. 36(4), pp. 365–381, 2014.
-  S. Manjanna, J. Hansen, A. Quattrini Li, I. Rekleitis, and G. Dudek, “Collaborative sampling using heterogeneous marine robots driven by visual cues,” in Proc. CRV, 2017, pp. 87–94.
-  L. E. Dubins, “On curves of minimal length with a constraint on average curvature, and with prescribed initial and terminal positions and tangents,” Am. J. Math., vol. 79, no. 3, pp. 497–516, 1957.
-  X. Yu and J. Y. Hung, “Coverage path planning based on a multiple sweep line decomposition,” in Proc. IEEE Industrial Electronics Society (IECON), 2015, pp. 004 052–004 058.
-  J. Lewis, W. Edwards, K. Benson, I. Rekleitis, and J. O’Kane, “Semi-boustrophedon coverage with a dubins vehicle,” in Proc. IROS, 2017, pp. 5630–5637.
-  N. Karapetyan, K. Benson, C. McKinney, P. Taslakian, and I. Rekleitis, “Efficient multi-robot coverage of a known environment,” in Proc. IROS, 2017, pp. 1846–1852.
-  P. Segui-Gasco, H.-S. Shin, A. Tsourdos, and V. J. SeguÃ, “Decentralised submodular multi-robot task allocation,” in Proc. IROS, 2015, pp. 2829–2834.
-  H. Choset, “Coverage of known spaces: The boustrophedon cellular decomposition,” Auton. Robot., vol. 9(3), pp. 247–253, 2000.
-  E. U. Acar and H. Choset, “Sensor-based Coverage of Unknown Environments: Incremental Construction of Morse Decompositions,” Int. J. Robot. Res., vol. 21(4), pp. 345–366, 2002.
-  Y. Gabriely and E. Rimon, “Spanning-tree based coverage of continuous areas by a mobile robot,” Ann. Math. Artif. Intel., vol. 31(1-4), pp. 77–98, 2001.
-  N. Hazon and G. Kaminka, “Redundancy, efficiency and robustness in multi-robot coverage,” in Proc. ICRA, 2005, pp. 735–741.
-  N. Agmon, H. Noam, G. A. Kaminka, and The MAVERICK Group, “The giving tree: constructing trees for efficient offline and online multi-robot coverage,” Ann. Math. Artif. Intel., vol. 52(2-4), pp. 143–168, 2008.
-  P. Fazli, A. Davoodi, P. Pasquier, and A. Mackworth, “Complete and robust cooperative robot area coverage with limited range,” in Proc. IROS, 2010, pp. 5577–5582.
-  A. Renzaglia, L. Doitsidis, S. A. Chatzichristofis, A. Martinelli, and E. B. Kosmatopoulos, “Distributed multi-robot coverage using micro aerial vehicles,” in Proc. Med. Control, 2013, pp. 963–968.
-  R. Mannadiar and I. Rekleitis, “Optimal coverage of a known arbitrary environment,” in Proc. ICRA, 2010, pp. 5525–5530.
-  J. Edmonds and E. L. Johnson, “Matching, Euler tours and the Chinese postman,” Math. Program., vol. 5, pp. 88–124, 1973.
-  K. Savla, F. Bullo, and E. Frazzoli, “The coverage problem for loitering dubins vehicles,” in Proc. CDC, 2007, pp. 1398–1403.
-  W. Huang, “Optimal line-sweep-based decompositions for coverage algorithms,” in Proc. ICRA, vol. 1, 2001, pp. 27–32.
-  Z. Yao, “Finding efficient robot path for the complete coverage of a known space,” in Proc. ICRA, 2006, pp. 3369–3374.
-  J. L. Ny, E. Feron, and E. Frazzoli, “On the dubins traveling salesman problem,” IEEE Trans. Automat. Contr., vol. 57, pp. 265–270, 2012.
-  K. Savla, E. Frazzoli, and F. Bullo, “On the point-to-point and traveling salesperson problems for dubins’ vehicle.” in Proc. ACC, 2005, pp. 786–791.
-  G. S. C. Avellar, G. A. S. Pereira, L. C. A. Pimenta, and P. Iscold, “Multi-UAV Routing for Area Coverage and Remote Sensing with Minimum Time,” Sensors, vol. 15(11), p. 27783, 2015.
-  P. Toth and D. Vigo, Eds., The Vehicle Routing Problem. Philadelphia, PA, USA: Society for Industrial and Applied Mathematics, 2001.
-  B. Xin, Y.-G. Zhu, Y.-L. Ding, and G.-Q. Gao, “Coordinated motion planning of multiple robots in multi-point dynamic aggregation task,” in Proc. ICCA, 2016, pp. 933–938.
-  I. A. Wagner, M. Lindenbaum, and A. M. Bruckstein, “Distributed covering by ant-robots using evaporating traces,” IEEE Transactions on Robotics and Automation, vol. 15(5), pp. 918–933, 1999.
-  A. Janani, L. Alboul, and J. Penders, “Multi-agent cooperative area coverage: Case study ploughing,” in Proc. AAMAS, 2016, pp. 1397–1398.
-  ——, Multi Robot Cooperative Area Coverage, Case Study: Spraying. Sheffield, UK Cham: Springer Int. Publishing, Jun. 2016, pp. 165–176.
-  G. N. Frederickson, M. S. Hecht, and C. E. Kim, “Approximation algorithms for some routing problems,” in Annual Symposium on Foundations of Computer Science (SFCS). IEEE Computer Society, 1976, pp. 216–227.
-  M. Quigley, K. Conley, B. P. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler, and A. Y. Ng, “ROS: an open-source Robot Operating System,” in ICRA Workshop on Open Source Software, 2009.
-  C. Rasmussen and C. Williams, Gaussian Processes for Machine Learning. MIT Press, 2006.
-  U.S. Department of Homeland Security, United States Coast Guard, “Navigation rules: International-inland,” https://www.navcen.uscg.gov/pdf/navrules/navrules.pdf, COMDTINST M16672.2D.