RCS: a fast path planning algorithm for Unmanned Aerial Vehicles
Mohammad Reza Ranjbar Divkoti, Mostafa Nouri-Baygi

TL;DR
This paper introduces a fast path planning algorithm for UAVs in polygonal environments, considering UAV motion constraints, which efficiently finds near-optimal collision-free paths with preprocessing for rapid queries.
Contribution
The paper presents a novel $O(n^2 \, \log n)$ algorithm for UAV path planning that incorporates turning and route length constraints, with a preprocessing method for quick path queries.
Findings
Algorithm runs in $O(n^2 \log n)$ time.
Preprocessing enables $O(n \log n)$ query time for path planning.
Produces paths close to the shortest feasible paths under constraints.
Abstract
Path planning is a major problem in autonomous vehicles. In recent years, with the increase in applications of Unmanned Aerial Vehicles (UAVs), one of the main challenges is path planning, particularly in adversarial environments. In this paper, we consider the problem of planning a collision-free path for a UAV in a polygonal domain from a source point to a target point. Based on the characteristics of UAVs, we assume two basic limitations on the generated paths: an upper bound on the turning angle at each turning point (maximum turning angle) and a lower bound on the distance between two consecutive turns (minimum route leg length). We describe an algorithm that runs in time and finds a feasible path in accordance with the above limitations, where is the number of obstacle vertices. As shown by experiments, the output of the algorithm is much close to the…
| Target | RCS | ||||||
|---|---|---|---|---|---|---|---|
| preprocessing time (ms) | RCS query time (ms) | RCS total time (ms) | A* running time (ms) | RCS path length | A* path length | Relative difference | |
| 6.28 | 0.26 | 6.54 | 375 | 487.6 | 470.4 | 3.5% | |
| 6.76 | 0.20 | 6.96 | 14183 | 715.5 | 670.2 | 6.3% | |
| 6.83 | 0.23 | 7.06 | 71164 | 998.5 | 952.2 | 4.6% | |
| 6.86 | 0.25 | 7.11 | 165713 | 1539.6 | 1467.0 | 4.7% | |
| 6.88 | 0.26 | 7.14 | 230670 | 1954.4 | 1860.8 | 4.8% |
| Max. turning angle (degree) | RCS | ||||||
|---|---|---|---|---|---|---|---|
| preprocessing time (ms) | RCS query time (ms) | RCS total time (ms) | A* running time (ms) | RCS path length | A* path length | Relative difference | |
| 80 | 0.20 | 0.44 | 0.64 | 119.8 | 466.1 | 477.6 | 2.4% |
| 40 | 0.37 | 0.59 | 0.96 | 204.2 | 478.0 | 473.1 | 1.0% |
| 20 | 0.16 | 0.68 | 0.84 | 1878.0 | 478.1 | 471.9 | 1.3% |
| 10 | 0.18 | 0.48 | 0.66 | 5029.6 | 480.9 | 472.5 | 1.7% |
| Min. leg length | RCS | ||||||
|---|---|---|---|---|---|---|---|
| preprocessing time (ms) | RCS query time (ms) | RCS total time (ms) | A* running time (ms) | RCS path length | A* path length | Relative difference | |
| 40 | 0.16 | 0.72 | 0.88 | 121.7 | 279.2 | 283.3 | 1.4% |
| 20 | 0.20 | 0.75 | 0.95 | 217.8 | 279.2 | 282.0 | 1.0% |
| 10 | 0.22 | 0.73 | 0.95 | 554.4 | 279.2 | 281.9 | 1.0% |
| 5 | 0.22 | 0.82 | 1.04 | 789.6 | 279.2 | 283.1 | 1.4% |
| Test Case | #Obstacle | RCS | ||||||
|---|---|---|---|---|---|---|---|---|
| preprocessing time (ms) | RCS query time (ms) | RCS total time (ms) | A* running time (ms) | RCS path length | A* path length | Relative difference | ||
| 2 | 1.18 | 0.94 | 2.12 | 188.3 | 643.1 | 645.7 | 0.4% | |
| 4 | 6.56 | 1.18 | 7.74 | 149.6 | 643.2 | 645.8 | 0.4% | |
| 8 | 14.45 | 1.31 | 15.76 | 449.9 | 664.9 | 663.4 | 0.2% | |
| 16 | 33.08 | 2.07 | 35.15 | 318.8 | 747.3 | 669.1 | 10.5% | |
| 32 | 209.36 | 4.00 | 213.36 | 762.0 | 740.5 | 756.1 | 2.1% |
| Test Case | Scene size | Minimum leg length | RCS | ||||||
|---|---|---|---|---|---|---|---|---|---|
| prep. time (ms) | RCS query time (ms) | RCS total time (ms) | A* running time (ms) | RCS path length | A* path length | Relative difference | |||
| 10 | 0.22 | 0.77 | 0.99 | 182.2 | 141.6 | 143.4 | 1.26% | ||
| 20 | 0.27 | 0.79 | 1.06 | 233.2 | 284.7 | 287.6 | 1.01% | ||
| 40 | 0.23 | 0.80 | 1.03 | 455.0 | 570.8 | 574.5 | 0.64% | ||
| 80 | 0.22 | 0.80 | 1.02 | 1178.9 | 1143.0 | 1148.8 | 0.50% |
| Path length | RCS preprocessing time (ms) | RCS query time (ms) | RCS total time (ms) | A* running time (ms) |
|---|---|---|---|---|
| 100 | 0.0046 | 0.0159 | 0.0205 | 94.19 |
| 200 | 0.0046 | 0.0162 | 0.0208 | 104.21 |
| 400 | 0.0046 | 0.0174 | 0.0220 | 100.21 |
| 800 | 0.0046 | 0.0179 | 0.0225 | 95.73 |
| Test case | #Obstacles | #Vertices | Preprocessing time (ms) | Query time (ms) |
| 1 | 1 | 3 | 2 | 3 |
| 2 | 2 | 7 | 25 | 3 |
| 3 | 9 | 39 | 1166 | 18 |
| 4 | 26 | 100 | 2033 | 26 |
| 5 | 84 | 300 | 28860 | 188 |
| 6 | 180 | 500 | 223134 | 570 |
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsRobotic Path Planning Algorithms · Optimization and Search Problems · Computational Geometry and Mesh Generation
RCS: a fast path planning algorithm for
Unmanned Aerial Vehicles
Mohammad Reza Ranjbar Divkoti
Department of Computer Engineering
Ferdowsi University of Mashhad
Mashhad, Iran
&Mostafa Nouri-Baygi
Department of Computer Engineering
Ferdowsi University of Mashhad
Mashhad, Iran
[email protected] Corresponding author
(April 19, 2020)
Abstract
Path planning is a major problem in autonomous vehicles. In recent years, with the increase in applications of Unmanned Aerial Vehicles (UAVs), one of the main challenges is path planning, particularly in adversarial environments. In this paper, we consider the problem of planning a collision-free path for a UAV in a polygonal domain from a source point to a target point. Based on the characteristics of UAVs, we assume two basic limitations on the generated paths: an upper bound on the turning angle at each turning point (maximum turning angle) and a lower bound on the distance between two consecutive turns (minimum route leg length).
We describe an algorithm that runs in time and finds a feasible path in accordance with the above limitations, where is the number of obstacle vertices. As shown by experiments, the output of the algorithm is much close to the shortest path with this requirements. We further demonstrate how to decompose the algorithm into two phases, a preprocessing and a query phase. In this way, given a fixed start point and a set of obstacles, we can preprocess a data structure of size in time, such that for any query target point we can find a path with the given requirements in time. Finally, we modify the algorithm to find a feasible (almost shortest) path that reach the target point within a given range of directions.
K****eywords Path planning Unmanned aerial vehicles Polygonal domains Maximum turning angle Minimum route leg length
1 Introduction
An Unmanned Aerial Vehicle (UAV), is a flying machine without a human pilot. Due to its advantages in military, civil and industrial markets, they are largely employed in situations dangerous for human life [22, 9, 6]. Since traditional remote piloting are not adequate for current complex missions, autonomous path planning are utilized extensively for UAVs [8].
Path planning is the problem of finding a feasible path from a given source to a given target for a moving object, that optimizes a desirable objective function and taking into account different constraints. The constraints are of various types, for example, non-accessible points in the space, velocity and acceleration constraints, uncertainty about the environment and so on. This problem in its generic form is NP-hard [2] and has polynomial time algorithms only in some special cases [11].
This problem has been extensively studied in robotics and various algorithms are presented for different forms of it. In general, the problem of path planning in robotics is more complex than in UAVs because of high degrees of freedom. For example, articulated robots can move their arms, or the shapes of some robots are too complex, and the robots must move in several directions to be able to pass through some regions in the environment (Piano Mover’s Problem [19]).
In contrast to the robot path planning, the UAV path planning has several characteristics. The three major differences in path planning for UAVs are as follows. First, due to the small size of the flying object compared to the space, we usually model a UAV as a moving point in the space. This makes the problem of path planning much simpler.
Second, because of the high speed of UAVs, it is not possible for a UAV to rotate by a sharp angle in its flight path [31, 23]. This is completely different from a robot’s movement in which the robot can slow down or even stop to rotate. Because of this, the flight path of a UAV must be smooth and the path planner should avoid sharp turns. This limitation makes the path planning for UAVs different compared to the conventional path planning for robots, and increases the complexity of the path planner. The complexity magnified when the number of obstacles increases and the path planner may have to create a longer zigzag path with many rotations in order to make a smooth path. In addition to the limit on the turning angles, usually a UAV cannot have two consecutive turns in a short time. This enforces the path planner to make enough distance between two successive turns [31, 23].
The third difference in the UAV path planning is the ability of a UAV to change its flight height. Robots usually move on a surface, so the problem of robot path planning is normally defined on the plane. But given the fact that UAVs fly in the space, and sometimes there is a need for a change in altitude to avoid obstacles (for example, a UAV flying over a terrain, or a cruise missile over a sea near scattered islands). In these cases, the problem of designing a path should be solved in three-dimensional space which introduces new complexities [12, 20, 27].
In this paper, we take the first and second characteristics of UAVs path planning into account, and, as will be explained later, design a smooth path for a moving point among polygonal obstacles. However, in order to simplify explaining the algorithm in this paper, we choose the two-dimensional space. It is not too hard to generalize the approach to three-dimensional space.
The UAVs path planning algorithms are divided into two general categories, offline and online, based on the knowledge of the planner about the environment. A path planning algorithm is called offline, if the designer has complete information about the environment and obstacles in it [12, 15, 26]. On the other hand, an online algorithm knows little or nothing at all about the environment in which the movement will take place [25, 24, 15]. In the latter case, the path planning is done while the UAV moves and based on the information we get from the sensors, the path is corrected. In this paper we choose to work on offline algorithms.
In terms of the number of reported paths, the algorithms can be divided into three categories. In the first category, the path planning is performed only for one device. Most algorithms are included in this category. In the second category, the path planning is done simultaneously for a set of UAVs. In some applications, for example a salvo attack against a warship, in order to prevent air defence systems activation, target missiles must simultaneously hit the same target with different angles. In this case, the path planner algorithm finds the best paths for several UAVs all at once [29, 21, 10, 13]. In the third category, the path planning is performed for different targets, while the environment and the source point are fixed. This type of algorithms are useful when the target point is moving and we want to find the best time/place of the target to reach it, by taking advantage of fixed environment to speed up the path planning.
In this paper, we first propose a path planning algorithm for a single UAV. Later, with some changes, we split the algorithm into a preprocessing phase and a query phase in order to be able to find paths for multiple targets in a much shorter time.
In terms of the shape of the path, the algorithms are divided into two classes. In the first one, the output of the algorithm is composed of straight line segments that are connected together [7, 23, 31]. In the second class, the output consists of straight line segments and more complex curves such as arcs [20], Bezier curves [28, 21, 27] and B-Spline curves [12, 14]. The advantage of the former is the simplicity of the path and the speed of the path planner, while the latter is better to adapt to the rotation limitations of UAVs and not having sharp angle rotations. In contrast, the latter algorithms have high execution time and are rarely applicable in practice.
Based on the limitations described above that we consider for the path, we have the simplicity and speed of line segment path planners, while at the same time smoother paths are obtained that are traversable by UAVs.
The two limitations used in this paper, were also previously considered by other researchers. Szczerba et al. [23] were the first who described these two limitations. They used a heuristic search algorithm to find a path in the two-dimensional space with the above limitations that has length not more than a fixed given value and approaching the target from a desirable direction (approximately). The main problem with their algorithm, as will be explained in Section 6, is its running time. Later Zheng et al. [30] and Zheng et al. [31] considered the problem in the three-dimensional space and added two new limitations to the path, namely minimum flying height and maximum climbing/diving angle. They used an evolutionary algorithm to solve the problem, which as Szczerba et al.’s algorithm [23] has high running time when the complexity of the environment grows.
1.1 Our results
We can summarize our results as follows:
- •
We present an offline, graph based path planning algorithm, called RCS. We first make two assumptions about the required path, and then create a graph which models paths with those requirements, and finally apply a modified Dijkstra’s algorithm [4] on this graph to find the shortest feasible path from the source node to the target node. Because we find the shortest path with these properties, as we show in experimental results, the length of the result of the algorithm is much close to the length of the optimum path without the assumptions.
- •
We prove an upper bound on the time and space complexity of RCS. We show that if all inputs of the problem is given at the same time to the algorithm, we can solve the problem in time and space. In these upper bounds is the number of obstacle vertices.
- •
In another version of the problem, where several UAV’s need to be launched from a fixed source, or we need to find the best time/path to reach a moving target point, we divide the RCS algorithm into two phases, such that given the set of obstacles and the source point, we preprocess a data structure of O size in time, and for any query target point we can find the result in time.
- •
We change the RCS algorithm in such a way to find the best path that approaches the target point from a direction within a specified range of directions. The running time and the space usage of the algorithm do not change.
A preliminary version of this paper is presented in the 7th International Conference on Computer and Knowledge Engineering [18]. In this paper the running time of the algorithm is extremely improved. Furthermore, in this paper we give a complete literature review, consider an extension of the problem in Section 5.2, and present a thorough evaluation of the algorithms.
The remaining of the paper is organized as follows. The problem is formally described in Section 2. In Section 3, we discuss the geometrical concepts needed to solve the problem. We present the algorithm to solve the problem in Section 4. The extensions of the algorithm are described in Section 5 and the experimental evaluations are presented in Section 6. Section 7 concludes the paper.
2 Problem Description
We here formally define the problem. In the plane, a set of disjoint simple polygons, called obstacles, which totally have vertices, a source point , a target point and two constant values and are given. Our goal is to find a path in the exterior space of polygons of , called the free space, from to with the following properties:
- •
Minimum route leg length: the path consists of straight line segments, each of length at least .
- •
Connectedness: the consecutive segments are connected at turning points.
- •
Maximum turning angle: the turning angles at the turning points are at most .
From now on, we will refer to the above three properties as simply the path requirements. Figure 1 depicts a set of three obstacles, with vertices, source point and target point . Each path from to is composed of a chain of segments. The illustrated path in the figure satisfies the path requirements if and .
3 Preliminaries
In this section, we introduce some geometric tools used for solving the problem. In Section 3.1 we define a regular chain of segments and in Section 3.2 the ray shooting data structure is briefly explained.
3.1 Regular chain of segments
In our problem we consider only paths consisting of a sequence of connected line segments. We call such a sequence a chain of segments. Each two consecutive segments have a common endpoint, called the turning point. The angle between a segment and the extension of the previous segment in the turning point is called the turning angle. (Figure 2)
We call a chain of segments with all turning angles equal to and equal leg lengths a regular chain of segments. Intuitively, it is part of a regular polygon with exterior angle .
We here calculate the position of vertices of a regular chain of segments with different number of turning points, while the position of the start and the end points are known.
Let denote a regular chain of segments with as the starting point, as the end point, and with turning points. We assume the -axis is the rightward horizontal line through the origin and the -axis the upward vertical line through the origin. Let , , be the turning point of . Let denote the length of the segments of . For ease of illustration, we consider as an imaginary turning point and denote its previous point by (Figure 3). Let denote the angle between the extension of and the -axis. Since is a regular chain of segments, the angle between the extension of and is . Let the angle between and (the direct line segment from the starting point to the end point) be denoted by .
Draw a line from parallel to the -axis and project on this line. Let denote the projection point (Figure 3). In the right triangle we have
[TABLE]
[TABLE]
Similarly, we can draw a horizontal line through and project on this line and get the following equations
[TABLE]
[TABLE]
As it follows, the position of each point , can be calculated from the following recurrence relations
[TABLE]
[TABLE]
Since , for all , we solve the above recurrence relations as follows
[TABLE]
where .
In a simple polygon, the sum of the interior angles with vertices is equal to . If we connect to , we have a simple polygon. In this polygon, the interior angle at and are equal, because is part of a regular polygon. Let be the number of vertices of the polygon. Since is the number of turning points in , we have and so the sum of the interior angles of the simple polygon is . The interior angle of the first and the last vertices in the chain is and the other angles are . Therefore we have or equivalently
Let the angle between and the -axis be denoted by . If we know the position of and , we have the value of . Since , we can rewrite this equation to have on the left hand side as . Therefore, we have the value of . If we further know the number of turning points of , i.e. , the length of segments of can be computed with each of the following equations
[TABLE]
Obtaining the value of , the position of each vertex in the chain will be identified by Equations 1 and 2.
With the above method, given the starting and the end points and the number of turning points, we can easily determine the position of the turning points of the regular chain of segments.
3.2 Ray shooting
One of the problems we encounter for path planning is to recognize whether a segment has any intersection with a set of segments. Formally, a set of segments are given. We are asked if segment intersects at least one of the segments of .
It is obvious that this problem could be solved by checking the intersection of with each segment of in total time. But, if the problem must be solved a lot of times for a fixed , an algorithm with less query time is more favorable.
We use a ray shooting algorithm for this problem. In the ray shooting problem, a set of segments is known. We need to preprocess such that upon receiving a query ray (its start point and direction), the first intersection position of the ray with the segments of will be detected quickly. We should also detect the case in which the ray does not intersect any segment of .
By the solution of the ray shooting problem, the problem of segment intersection with a set of segments will be solved as follow: First, we preprocess for ray shooting. During the query time by receiving segment , we shoot a ray from one end-point of in the direction of the other end-point. If the first intersection point of the ray with is between the two end-points of , the answer to our solution is positive, that is, has an intersection with . On the other hand, if the intersection point is not between the end-points of or there is not any intersection at all, the answer to our problem is negative.
There are many different algorithms for the ray shooting problem. But an old algorithm due to Chazelle [3] is well suited to our purpose. In this algorithm, after preprocessing in time and using space, the ray shooting queries are answered in time.
4 RCS: Path Planning Algorithm
In this section, we describe our algorithm for finding a path with the given requirements. Since we prefer to make the path smooth, we try to spread out the break points along the path evenly. Therefore, we use regular chains of segments as sub-paths when moving from one obstacle vertex to another one, and so we call our algorithm Regular Chains of Segments Path Planner, or simply RCS.
Let and be two obstacle vertices. We want to find all sub-paths in the free space from to not passing through any other obstacle vertices. To do so, we examine all regular chains of segments with different number of break points starting at and ending at . If all edges of a chain do not intersect any edges of the obstacles, then the chain is considered as a valid sub-path from to . In other words, we first look at the regular chain of segments without any break point, that is the straight line segment from to . If the only edge of this chain does not intersect any obstacle then we consider this chain as a valid path from to . Similarly, we examine the regular chain of segments with one break point, two break points, and so on. We continue this process until the distance between two adjacent break points in the chain gets smaller than . If the first and the last points of a regular chain are fixed, the distance between two consecutive break points decreases when the number of break points increases (the last result of Section 3.1). Therefore there are a limited number of valid regular chains of segments from to .
Assume the moving object follows a given regular chain of segments from to when traveling from to . Because of the maximum turning angle property, when the object moves away from , its leaving direction must be within a fixed range, determined by the direction it enters . This observation is depicted in Figure 4. Following chain , where the object moves from directly towards , it can leave in the same direction and without any rotation at , or rotate by an angle at most equal to , clockwise or counter-clockwise. Therefore, the object leaves in a direction in range . Similarly, for chain with seven break points, the valid leaving direction is in range ; is the angle of the path if the object rotates at by an angle equal to clockwise, and is the angle of the path when the object rotates by an angle equal to counter-clockwise. We call this range of directions for a regular chain of segments , the valid leave range of , and denote it by .
4.1 Graph construction
The key idea of our approach is to construct a weighted directed multigraph , such that any path from the starting point to the target point in the original configuration, consisting only of regular chains of segments, corresponds to a path between analogous nodes in , of the same length. The problem will then reduce to finding the shortest path in the graph.
Graph is constructed as follows. We add the starting point and the target point to the set of obstacle vertices. For each obstacle vertex , we add a corresponding node to . For each pair of nodes of , and for each valid regular chain of segments between the corresponding vertices, we add two directed edges, one from to , and the other from to . We add two directed edges because does not have a direction and the object can follow in both directions, and each edge represents one of the directions. We say edge is incident from and incident to , which means (resp. ) is the head (resp. tail) of . The weight of , denoted by is equal to the length of . In addition, we store a reference to , denoted by , for further uses. It is possible to have more than one valid regular chain of segments between two obstacle vertices. So, there may be multiple edges between two nodes of , and as we indicated before, is a multigraph.
Lemma 1**.**
For a polygonal domain of vertices, the number of nodes of , , is and the number of edges, , is . We can construct in time.
Proof.
For each obstacle vertex, we add an equivalent node to . Furthermore, we add two equivalent nodes for and . Therefore, the number of nodes of is .
For each pair of vertices and , we have at most valid regular chains of segments. This is because the number of break points in a regular polygon with exterior angle is . For each valid regular chain of segments, two edges is added to . In summary, the maximum number of edges is which is .
For constructing the graph, we first preprocess the set of obstacle edges for ray shooting, as described in Section 3.2. There are segments, and the preprocessing takes time. Then, for each pair of obstacle vertices, and each possible regular chain of segments between them, we see whether it is a valid regular chain. The validity test is done by checking the intersection of segments of the chain with obstacle edges. If any segment of the chain has an intersection with an obstacle edge, the chain is not valid. Otherwise, it is a valid chain and we add the corresponding edges to . There are possible chains, each consisting of at most segments, and executing a ray shooting query for each one takes total time. ∎
The above bound for the number of edges of is clearly the worst case upper bound. This is because in most cases obstacle edges block regular chains and preclude them from being valid.
Lemma 2**.**
Any path in the polygonal domain from vertex to vertex of length that consists of only regular chains of segments has a corresponding path between the analogous nodes in graph of length .
Proof.
We construct such that any valid regular chain of segments from a vertex to a vertex has a corresponding edge between the analogous nodes in the graph with the weight equal to the length of the chain. Therefore, we can establish a one to one mapping between paths in the polygonal domain which consists of only regular chains of segments, and paths in . ∎
4.2 Finding the shortest path in the graph
From Lemma 2, we conclude that if we need the shortest path between two vertices consisting of only regular chains of segments that satisfies some properties in the polygonal domain, we can look for the shortest path in between the analogous nodes with the same properties.
The best algorithm for finding the shortest path between two specific nodes in a weighted graph is Dijkstra’s algorithm [4], with running time using Fibonacci heap data structure. But the problem here is that Dijkstra’s algorithm is not directly applicable to , because not all paths in are acceptable.
When the object moves on a path, because of the maximum turning angle property, it could not have sharp turns at obstacle vertices. Therefore, the angle between two consecutive regular chains of segments must be less than or equal to . Since in Dijkstra’s algorithm, edges are selected without any concern, the result of the algorithm may not satisfy the path requirements.
It is possible to transform into a new graph and apply Dijkstra’s algorithm to it to find the shortest path which satisfies the path requirements. But the large size of the new graph is another trouble. The graph has vertices and edges, where is the out-degree of , i.e. the number of edges incident from . If we apply Dijkstra’s algorithm on this graph, the running time of the algorithm will be [1, 5], which in the worst case will lead to .
We here introduce an algorithm to find the shortest path with the path requirements, whose main idea is borrowed from Boroujerdi and Uhlmann [1]. In this algorithm, no new graph is generated and we only modify Dijkstra’s algorithm to find the shortest path with the given requirements. The running time of this algorithm will be , which is in the worst case.
Let be a node of and be an edge incident from . Let denote the angle of the first segment of regular chain of segments traversed when moving away from . At the beginning of the algorithm, we sort the outgoing edges of each node , according to their angles, in counter-clockwise order (see Figure 5). We store the sorted list in , a data structure capable of searching and deleting items in logarithmic time, like an AVL tree.
For each edge incident to , when the object arrives at through , only a subset of the outgoing edges of are applicable for departing from . The angle of the first segment of these edges must be in range . We denote this valid successors of by . If the object comes to via , it can leave following the chain of any edge in , without violating the maximum turning angle requirement. It is easy to see that the edges of are placed in consecutively. The following lemma gives an upper bound on the time needed to find for an edge .
Lemma 3**.**
Given a graph such that the outgoing edges of each vertex are sorted in counter-clockwise order based on the first edge of their chains, it is possible to find for an edge incident to in time.
Proof.
Let be a vertex of , and be an edge incident to . Let . We can easily find the position of (resp. ) in in time. This is done by applying two binary searches with and as keys on , and reporting all edges whose angles are between the keys. The binary search takes time, and reporting edges in sequentially takes time, which proves the claim. It is necessary to note that since the outgoing edges are arranged around circularly, might be smaller than . If this is the case, the report will consist of all edges whose angle is greater than or smaller than . ∎
We now describe the modified Dijkstra’s algorithm for this problem. Instead of processing nodes of the graph as Dijkstra’s algorithm, we insert edges into a priority queue and process edges with minimum priority successively. For each edge , we assign a value , whose initial value is . This value denotes the length of the shortest path to , if the object starts from and finally passes through . Furthermore, plays the role of the priority in the priority queue used in the algorithm. We store another value , for each edge , which denotes the last edge before , in the shortest path to . The predecessor value is initially set to null. This value helps to construct the shortest path at the end of the algorithm.
The algorithm starts by processing each edge incident from , the starting point. We set , and insert into the priority queue, , with as its priority. Now, as long as is not empty, we remove edge with the minimum priority from . If is incident to , the target point, we are done, and report as the shortest path distance from to , and and the sequence of predecessors as the shortest path. In the other case, where is not incident to , but incident to some other node , we process edges of , one by one. For each edge , we remove from , set and , and finally insert into with priority . We here remove from because we have found the shortest path to and achieves its final value. Therefore, it cannot be updated furthermore, and it is not required to be checked for other segments incident to . This process continues and edges of are explored successively until we arrive at . Because is connected, we will eventually get into .
The outline of RCS Path Planning algorithm is presented in Algorithm 1.
4.3 Analysis of the algorithm
In Lines 1-11, the graph is constructed, which takes time, as described before in Lemma 1. Lines 12-13 sort the outgoing edges of nodes and need time. Lines 14-18 initialize the priority queue and process the outgoing edges of the starting point, and take time which is . In Lines 19-28, each edge of the graph is inserted into at most once, and is removed from at most once, and removed from the list of the outgoing edges of its head at most once. These operations take total time. Finding for each edge , as proved in Lemma 3, takes time. Since each edge is considered only in one , and is removed from the list of outgoing edges of its head, the total time spends for lines 25-28 is . Therefore, the whole running time of the algorithm will be , which is . In the algorithm, the space is used for storing the ray shooting data structure, and , which is .
The following theorem summarizes our results about finding the shortest path consisting of regular chains of segments.
Theorem 1**.**
The RCS algorithm finds the shortest path from to , which consists of regular chains of segments, and satisfies the path requirements, in time using space.
5 Extensions
In this section we consider two extensions of the problem and try to use our technique to solve these extensions. In the first problem there are several target points that are to be processed with a single starting point, and we have to find the best path to reach each target point. In the second extension, we solve the problem assuming that we have to arrive at the target point from a given range of directions.
5.1 Problem in the query mode
In the original problem, it was assumed that the target point is given at the same time as the other inputs. In this section we divide the algorithm into two parts, a preprocessing phase, and a query phase. The set of obstacles and the starting point are given in the preprocessing phase, and in the query phase the target point is determined. The problem in this mode is suitable when we want to find the best time/path to reach a moving target point in a fixed environment.
We solve the problem in the query mode as follows. Given the set of obstacles and the starting point in the preprocessing phase, we construct graph and run Dijkstra’s algorithm on to compute for all edges of . An edge is a candidate predecessor for each edge incident from if lies in . It is the actual predecessor of , if among all such candidates, has the smallest value. With this in mind, for each node , we keep a sorted list of ranges around such that the predecessor of edges in each range is fixed. We store this list, denoted by , in an AVL tree, so that the insertion and searching takes logarithmic time. This tree can easily be constructed, as Dijkstra’s algorithm is run on . At the beginning, is empty for each node . When the first edge incident to is processed, is added to and is linked to it. During the execution of the algorithm, when a new edge incident to is being processed, it may add a new range to . Since the edges are processed in increasing order of their distance, is predecessor only in a range where no previous predecessor is assigned. Furthermore, for each edge , covers a range of size . Therefore, for each edge , if is predecessor for some range, it will be a connected range, which can easily be found and inserted to in time. Since the number of incoming edges to a vertex is , the number of ranges in is also .
In the query phase, given the target point , we consider each node in and find all valid regular chains of segments from to . We here need to execute a ray shooting for each segment of a chain to see if it is valid. For each valid chain, we add an edge from to in . Furthermore, we find the predecessor of using in time and accordingly assign . Finally we add the distance of to to the length of and store it into . After processing all edges to , the final solution is an edge incident to with the smallest value of , along with the sequence of predecessors.
Theorem 2**.**
For the problem of path planning with the path requirements, we can preprocess a data structure in time using space, to answer the query for any target point in time. In these upper bounds is the total number of obstacle vertices.
Proof.
We construct the graph in time using space and run Dijkstra’s algorithm in time as proved in Lemma 1 and Theorem 1, respectively. In the query time, we need to find and process each edge to in time to find a possible path to . Since there are at most edges to , processing all edges and choosing the shortest path to takes time. ∎
5.2 Approaching from a given direction
In some path planning applications, it is desirable to reach the target from a given direction. For example the most damage will take place when a missile hits the target orthogonally, or a UAV landing on an aircraft carrier needs to approach it from a fixed direction. In this section we describe how we can use the method to achieve this goal.
In this version of the problem, in addition to the previous inputs, a range of directions like is given, and we want to approach the target from a direction in range .
In Section 4 we described how to construct a graph that models paths only consisting of regular chains of segments. Each edge in this graph has the following meaning: There exists a regular chain of segments from obstacle vertex to obstacle vertex which leaves and arrives at in a fixed direction determined by .
Therefore, the solution is as follows. We continue the while loop of the algorithm until the edge that is processed comes into with an angle in range , or becomes empty. It is obvious that in the former case the resulting path reaches in a direction in the desirable range, and in the latter case, there is no path with the given requirements.
By the above argument we conclude the following theorem:
Theorem 3**.**
In the problem of path planning with a fixed approaching direction, a path from the starting point to the target point with the required properties can be found in time using space, where is the total number of obstacle vertices.
Furthermore, we can preprocess a data structure in time using space, to answer the query version of the problem for any target point in time.
6 Algorithm Evaluation
Even though the running time and the space usage of the proposed algorithms are bearable, the dependency in the upper bounds is on the number of obstacle vertices and not on the scene size. In most applications the area in which the algorithm works is extremely large. But the complexity of the scene in terms of the number of obstacle vertices is not considerable. This can be made more rigorous if we apply a simplification step on the input to decrease the number of obstacle vertices.
In this section we perform several experiments to evaluate the RCS algorithm and show its effectiveness in practice. We compare the results to the results of the algorithm designed by Szczerba et al. [23]. We chose their algorithm because they solved the most similar problem to the problem considered in this paper. Their algorithm is based on the A* search algorithm, and we called it A* hereinafter. The evaluations are performed based on seven test cases. The source codes of the RCS and A* algorithms are available at the GitHub repository hosting service [17, 16].
In the first experiment, we run RCS and A* on a fixed complex polygonal domain from a given source point to several target points. The configuration is depicted in Figure 6. In this figure, is the source point and are five different target points. We use the maximum turning angle and the minimum leg length as the parameters for this test case. The target points are selected such that paths to each one have different number of turning points.
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1[1] Ali Boroujerdi and Jeffrey Uhlmann. An efficient algorithm for computing least cost paths with turn constraints. Information Processing Letters , 67(6):317–321, 1998.
- 2[2] John Canny and John Reif. New lower bound techniques for robot motion planning problems. In Foundations of Computer Science, 1987., 28th Annual Symposium on , pages 49–60. IEEE, 1987.
- 3[3] Bernard Chazelle. Filtering search: A new approach to query answering. SIAM Journal on Computing , 15(3):703–724, 1986.
- 4[4] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Third Edition . The MIT Press, 3rd edition, 2009.
- 5[5] D. [de Caen]. An upper bound on the sum of squares of degrees in a graph. Discrete Mathematics , 185(1):245–248, 1998.
- 6[6] Bruce Enderle. Commercial applications of uav’s in japanese agriculture. In AIAA 1st UAV Conference , pages 2002–3400, 2002.
- 7[7] Yangguang Fu, Mingyue Ding, and Chengping Zhou. Phase angle-encoded and quantum-behaved particle swarm optimization applied to three-dimensional route planning for uav. IEEE Transactions on Systems, Man, and Cybernetics-Part A: Systems and Humans , 42(2):511–526, 2012.
- 8[8] Chad Goerzen, Zhaodan Kong, and Bernard Mettler. A survey of motion planning algorithms from the perspective of autonomous uav guidance. Journal of Intelligent and Robotic Systems , 57(1-4):65, 2010.
