Article Search
닫기

Original Article

Split Viewer

International Journal of Fuzzy Logic and Intelligent Systems 2023; 23(3): 259-269

Published online September 25, 2023

https://doi.org/10.5391/IJFIS.2023.23.3.259

© The Korean Institute of Intelligent Systems

Clearance-Based Performance-Efficient Path Planning Using Generalized Voronoi Diagram

JunTak Lee1, Tae-Won Kang2, Yong-Sik Choi2, and Jin-Woo Jung1

1Department of Computer Science and Engineering, Dongguk University, Seoul, Korea
2Department of Artificial Intelligence, Dongguk University, Seoul, Korea

Correspondence to :
Jin-Woo Jung (jwjung@dongguk.edu)

Received: July 5, 2023; Accepted: August 4, 2023

This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License (http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted noncommercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

The Voronoi diagram is one of the most well-known methods in clearance-based pathfinding. The generalized Voronoi diagram, which is derived from the Voronoi diagram, accepts a polygon as input. This study proposes a method for generating and simplifying a generalized Voronoi diagram. A generalized Voronoi diagram is generated by creating a Voronoi diagram with points representing polygons. The Douglas-Peucker line simplification algorithm is used to simplify the diagram, and the A-star algorithm is used to determine the optimal path. By comparing the simplified and non-simplified versions, we determine that the simplifying process decreases the run time while preserving most of the clearance; however, the distance inefficiency of the Voronoi diagram is not overcome. Additional research is required to determine a more distance-efficient path.

Keywords: Generalized Voronoi diagram, Path finding, DP algorithm, A-star algorithm

Path planning in a dynamic environment for autonomous robots is one of the most important tasks in robotics and is considered a core problem in modern robotics [14]. It aims to determine a collision-free or distance-efficient path for a robot to reach its target location. These conflicting characteristics are defined as clearance and optimality. Focusing on clearance, the Voronoi diagram is one of the most well-known methods because it guarantees a maximum clearance [4].

A Voronoi diagram is a partition of a plane, and each partition is called a Voronoi polygon and is associated with a unique point [4]. These convex polygons are called Voronoi polygons [5]. In local areas, obstacles are represented by polygons or line segments. The Voronoi diagram, which is generated using points, is inappropriate for these situations. A generalized Voronoi diagram (GVD) is generated using polygons [6]. Because a GVD is generated using polygons, it is suitable in obstacle contained environments. Similar to the Voronoi diagram, in which each Voronoi polygon is associated with a unique point, the Voronoi polygons in the GVD are associated with unique polygons. Because the Voronoi diagram maximizes the distance to the points, the GVD maximizes the distance to the polygons. This feature makes the GVD appropriate for clearance-based path planning in obstacle-contained environments.

Unlike the Voronoi diagram, which has straight line segments, the Voronoi polygons in the GVD consist of parabolic curved segments [7]. This requires many vertices to be represented and renders path planning inefficient. To overcome this inefficiency, utilization is required. Simplifying the line segments requires a diagram because it reduces the number of vertices. However, excessive line simplification may result in a non-original deformity, and the path can intersect with obstacles. This can lead to a path planning failure because the path that intersects with obstacles is unreachable. The Douglas-Peucker line-simplification (DP) algorithm provides the best perceptual representation of the original lines [8]. This approach is suitable for path planning because it results in the smallest changes in terms of the diagram shape.

The A-star (A*) algorithm is the best-first search algorithm and is widely used in path planning. This algorithm guarantees the optimal path in a static environment and improves the efficiency using a heuristic function [9]. In two-dimensional (2D) node-based maps, the A* algorithm uses an evaluation function to identify the next node. The evaluation function can be defined as

f(n)=g(n)+h(n),

where g(n) refers to the actual cost from the start node to the current node, and h(n) refers to the estimated cost from the current node to the goal node, which is also known as a heuristic function [10]. On a grid-based map, the Manhattan and Euclidean distances are widely used to define a heuristic function. However, on a node-based map, the Manhattan distance cannot satisfy the underestimation because the actual distance can be less than the Manhattan distance. Calculating the shortest path between two points, that is, the Euclidean distance, is suitable for node-based maps.

In this study, we constructed a GVD and simplified its diagram using the DP algorithm. The results of the simplified GVD are represented by nodes and their connections. To obtain the shortest path based on the simplified GVD (S-GVD), we used the A* algorithm, whose heuristic function is defined as the Euclidean distance. Because the DP algorithm requires a tolerance value, we simulated multiple situations to determine a moderate value. The S-GVD and GVD were compared to show differences in the clearance and performance. The minimum distance from obstacles was measured to represent the clearance of the diagram. The execution time was measured to represent the performance. To measure the efficiency, their visibility graph were compared.

2.1 Generalized Voronoi Diagram

A GVD can be constructed using multiple methods [1, 6, 7, 11]. However, to preserve the details and remain capable of producing any polygon, we decided to adopt a different perspective. The main idea of our method involves representing polygons using points, which is accomplished by following four steps:

  • 1. Triangulate polygons.

  • 2. Generate points at regular interval along the line segments in each triangle.

  • 3. Create Voronoi diagram with the generated points.

  • 4. Delete the nodes that exist inside the polygons.

We triangulated the polygons using Seidel’s algorithm, which triangulates polygons regardless of their concaveness and convexity [12]. We then generate points at regular intervals along the line segments of each triangle. For the polygon vertices shown in Figure 1, Figure 2 presents their conversion results.

By considering only the polygons, the generation of the Voronoi diagram fails. Therefore, a boundary is required [4]. In addition, an independent space is required for each endpoint to ensure clearance at each endpoint. This can be solved by adding endpoints to the Voronoi diagram, which generates a unique Voronoi polygon that ensures that no other polygons intersect the area. After adding all required points, we generated a Voronoi diagram using the Python SciPy library. Figure 3 shows the Voronoi diagram results.

Points in the polygon are unreachable. These points must be removed to generate a passable path. To delete unreachable nodes, determining whether each node is in the polygon is necessary. This was determined by testing the order of the points. The order of three points in the same plane can be expressed as clockwise (CW) or counterclockwise (CCW). The order of points (P1, P2, P3) can be determined using Eqs. (1) and (2) [13].

Order=P1P2×P1P3,{CW,(Order<0),Parallel,(Order=0),CCW,(Order>0).

If a single point P and the vertices of the triangles V1, V2, V3 are given, we can determine whether the point is in the triangle using Eqs. (3) and (4).

Location=CCW(V1,V2,P)×CCW(V1,P,V3),{Inside,(Location0),Outside,(Location>0).

Testing only a single vertex can yield unreliable results. Therefore, every vertex in the triangle must be tested.

After specifying the nodes in the polygons, we delete them and reorganize the diagram. Consequently, the GVD can be obtained, as shown in Figure 4.

2.2 Simplifying the GVD

Because the DP algorithm relies only on the distance between points and lines, it uses a polyline and a tolerance ɛ [8]. Moreover, the GVD, which contains many diverging points, must be divided into polygonal chains to execute the DP algorithm. Therefore, we implemented a chaining algorithm based on the neighbor count.

From a neighborhood perspective, nodes can be classified into three types: dead-end, feature, and chained. Because the GVD does not contain independently existing nodes, we did not consider them. A dead-end node is at the dead end of the diagram and has a neighbor count of one. A feature node is a diverging point in the diagram, with a neighbor count greater than 2. Finally, a chained node is in the middle of the chain, and is not a dead-end or feature node, with a neighbor count of 2.

The algorithm begins by specifying the first starting node, which is a dead-end node. Subsequently, a chain is created. After creating the chain, neighbors from the end node are specified as newly discovered starting nodes, and it is pushed into the starting node queue. The entire diagram can be searched by looping the procedure from creating the chain and adding newly discovered starting nodes.

The single-chain generation algorithm is executed according to the number of neighbors. Two scenarios are possible for dead-end nodes: either at the end of the line or at the beginning of the algorithm. The first situation indicates that no newly discovered start nodes remain and that this is the end of the chain. Therefore, the algorithm exits. However, the second scenario should not result in the algorithm exiting, and it should continue searching for the end of the chain. Feature nodes have only one possible scenario at the end of the chain. The algorithm must terminate and notify unvisited neighbors. Finally, chained nodes have two possible scenarios. If the algorithm has visited every neighbor, it is at the end of the line, and the algorithm must exit. Otherwise, if the algorithm has visited only one neighbor, then the chain is incomplete, and the algorithm continues. Algorithms 1 and 2 show how chains were generated in this study.

After generating the chains in the diagram, we can now use the DP algorithm to simplify the polyline. Because the simplified polyline differs according to the index, we reorganized the GVD. Figure 5 show the results of the S-GVD.

Because the start and end nodes are included in the diagram generation, the diagram has its own Voronoi polygon. Therefore, paths containing dead-end nodes are not passed through. This renders such lines unnecessary. Therefore, we implemented a pruning procedure to eliminate such lines. Figure 6 shows the pruning procedure results.

2.3 A-Star Algorithm on S-GVD

To execute the A* algorithm, a connection must be made between the endpoints and adjacent nodes. To achieve this, the node adjacent to the endpoints must be determined. The folloing features were used to determine the corresponding nodes. We assumed that a line is created using one of the endpoints of the diagram and one of the nodes as both ends. If the node is adjacent to the endpoint, it should not intersect all lines in the diagram. Therefore, we can identify adjacent nodes by checking the intersection of line segments. The intersection of two lines (L1(P1, P2), L2(P3, P4)) can be determined using Eq. (5).

(CCW(P1,P2,P3)×CCW(P1,P2,P4)<0)and(CCW(P3,P4,P1)×CCW(P3,P4,P2)<0).

Figure 7 shows the connecting of all adjacent nodes to each endpoint.

The algorithm starts at the start node. It then expands to its neighboring nodes. Each neighboring node calculates its evaluation function using the Euclidean distance as a heuristic function. After selecting the closest node, the algorithm repeats from the expansion stage. This loops until the goal node is reached. Algorithm 3 shows this procedure [14].

Figure 8 shows the results of searching the path using the A* algorithm.

2.4 Finding the Moderate Tolerance

Because the DP algorithm executes based on the ɛ value, an appropriate ɛ value must be determined: the maximum value that does not contaminate the path. The minimum distance from the obstacle was measured to ensure that the path retained its original shape. The performance was evaluated by measuring the time spent on the algorithm. This measurement was performed by varying the ɛ values on various maps and paths. Figures 9 and 10 present the distance and performance results, respectively.

We determined that the performance increases with ɛ. However, when ɛ exceeds 0.0008, paths begin to approach obstacles. Furthermore, when ɛ exceeds 0.04, some paths begin to intersect with obstacles. This explains why the distance approaches zero in certain situations. However, most situations showed no significant decrease in the distance from 0.0 to 0.0064. We selected an ɛ value of 0.0064 because of this.

To test the S-GVD in various environments, we tested seven maps of various environments. Table 1 lists the characteristics of each map, and Figure 11 shows images of the maps used for testing.

Based on Maps 1–4, we tested four paths. Paths 1 and 2 were intended to cross diagonally, whereas paths 3 and 4 were intended to cross the center. Because Maps 5–7 were mazelike environments, we tested a single path with the intended endpoints. Using a 2D coordinate system on the map, we defined the lower left corner as (0, 0) and the upper right corner as (1, 1), where the horizontal axis is x, and the vertical axis is the y. Table 2 lists the endpoints of each map. Figures 1216 present the results of the path search based on Table 2.

3.1 Comparison

Various aspects of the GVD and S-GVD were compared. The minimum distance from the obstacle in the path was measured to determine the extent to which clearance was maintained. The execution time was measured to determine the extent of the performance improvement. Table 3 lists the minimum distances from obstacles measured in the experiment. For Maps 1–4, we averaged the values of all paths.

In the experiment, we observed that the computational time was reduced by simplifying the GVD. Moreover, the time reduction tends to be inversely proportional to the complexity. We determined it to be up to six times faster on low-complexity maps, such as Maps 1 or 5, whereas it was only two times faster on high-complexity maps, such as Map 7. We also noticed that the minimum distance, which represents the clearance, was reduced when simplifying the diagram. In the low-complexity map, this decrease was less than 3%, whereas in the high-complexity map, it was approximately 5%. On a maze-like map, the reduction reached 10%. These results indicate that clearance is affected when the complexity increases.

In terms of distance, the shortest path can be obtained using a visibility graph (V-graph) [15]. Therefore, we compared the total distances of the paths generated on the S-GVD, GVD, and V-graph. Table 4 lists the values measured during the experiments.

As the focus was on clearance, no significant difference was observed between the S-GVD and GVD methods. In addition, it was less than 1%. However, the difference between the V-graph and the other graphs indicated that the GVD-based method was approximately 23% longer. This value appears to be similar to that of Masehian’s previous work, which showed that the Voronoi diagram method was approximately 26% longer than that of the V-graph method [7].

In this study, we proposed the S-GVD method for the clearance-based path planning problem. We successfully created an SGVD and its paths. The path generated by the S-GVD is similar to that generated by the GVD, with fewer points. The comparison shows that the S-GVD has positive affects the runtime efficiency without losing clearance. This is more effective for low-complexity maps but is still useful for high-complexity maps. However, the distance inefficiency of the S-GVD is similar to that of the GVD because the paths are similar. This shows that the distance inefficiency of the S-SVD has not been overcome. Therefore, further studies are required to increase the path efficiency.

This research was financially supported by the Ministry of Trade, Industry, and Energy (MOTIE) and Korea Institute for Advancement of Technology (KIAT) through the International Cooperative Research and Development Program (Project No. P0016096), the National Research Foundation of Korea (NRF) grant funded by the Korea government (MSIT) (No. 2018R1A5 A7023490), the MSIT (Ministry of Science and ICT), Korea, under the ITRC (Information Technology Research Center) support program (No. IITP-2023-2020-0-01789), the Artificial Intelligence Convergence Innovation Human Resources Development (No. IITP-2023-RS-2023-00254592) supervised by the IITP (Institute for Information & Communications Technology Planning & Evaluation), and the Technology development Program (No. RS-2023-00259352) funded by the Ministry of SMEs and Startups (MSS, Korea).

Jin-Woo Jung serves as (an) editor(s) of the International Journal of Fuzzy Logic and Intelligent Systems, but has no role in the decision to publish this article. Except for that, no potential conflict of interest relevant to this article was reported.

Fig. 1.

Polygons vertices.


Fig. 2.

Generated points.


Fig. 3.

Generated Voronoi diagram.


Fig. 4.

Generalized Voronoi diagram.


Fig. 5.

S-GVD result.


Fig. 6.

Pruning procedure results.


Fig. 7.

Connecting all adjacent nodes to each endpoint.


Fig. 8.

Shortest path found using the A* algorithm.


Fig. 9.

Minimum distance from an obstacle measured at various ɛ values.


Fig. 10.

Time spent on the algorithm at various ɛ values.


Fig. 11.

Images of maps used in the experiment: (a) Map 1, (b) Map 2, (c) Map 3, (d) Map 4, (e) Map 5, (f) Map 6, and (g) Map 7.


Fig. 12.

Results of Map 1: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.


Fig. 13.

Results of Map 2: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.


Fig. 14.

Results of Map 3: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.


Fig. 15.

Results of Map 4: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.


Fig. 16.

Results of (a) Map 5, (b) Map 6, and (c) Map 7.


Table. 1.

Table 1. Map characteristics.

MapCharacteristic
1Various polygons
2Low complexity
3Middle complexity
4High complexity
5Winding route
6Spiral route
7Maze route

Table. 2.

Table 2. Endpoints of each map.

MapStart point (x, y)End point (x, y)
Maps 1(0.05, 0.05)(0.9, 0.9)
Maps 2(0.05, 0.95)(0.95, 0.05)
Maps 3(0.55, 0.05)(0.4, 0.95)
Maps 4(0.05, 0.6)(0.95, 0.45)
Map 5(0.1, 0.075)(0.1, 0.915)
Map 6(0.05, 0.05)(0.5, 0.5)
Map 7(0.05, 0.93)(0.9, 0.06)

Table. 3.

Table 3. Clearance and performance comparisons.

MapS-GVDGVD


Min-distance%Time%Min-distance%Time%
Map 10.0689698.10.21916.40.070321001.334100

Map 20.0762397.70.22119.20.078061001.154100

Map 30.0450094.40.52318.90.047681002.760100

Map 40.0255096.41.44825.30.026451005.716100

Map 50.0279391.22.07629.30.030611007.077100

Map 60.0564996.00.68515.60.058841004.381100

Map 70.0197391.05.15046.60.0216810011.043100

Table. 4.

Table 4. Comparison in terms of the total path distance.

MapS-GVDGVDV-graph



Distance%Distance%Distance%
Map 11.34513124.91.34772125.11.07690100

Map 21.25439116.41.25599116.61.07717100

Map 31.35510126.11.35997126.51.07493100

Map 41.47251123.81.48138124.61.18900100

Map 55.61097116.15.62432116.44.83239100

Map 63.61396123.83.62261124.12.91889100

Map 74.24498131.04.26918131.73.24158100

Mean2.69958122.62.70874123.02.20155100

Table. 5.

Algorithm 1. Generating chains.

Find (n): find the first node that has n neighbors
GC: generate a single chain given a starting node
1:procedure GCs
2:feature ← empty list
3:chains ← empty list
4:start nodes ← empty queue
5: push (−1, Find(1)) to start nodes
6:Whilestart nodes is not empty Do
7:  chain ← empty list
8:  idx ← pop element from start nodes
9:  candidates ← GC(idx, chain, feature)
10:  append chain to chains
11:  If beginning of chain is not in featureThen
12:   append begin of chain to feature
13:  If end of chain is not in featureThen
14:   append end of chain to feature
15:  push all candidates to start nodes
16:Returnchains

Table. 6.

Algorithm 2. Generating chain.

I: (previous node, current node)
C: chain
F: feature nodes
Find (node): find the neighbors of node
1:procedure GC(I, C, F)
2:current ← current node of I
3:previous ← previous node of I
4: append current to C
5:neighbors ← Find(current)
6:visitedF+ previous
7:  If count of neighbors = 1 Then
8:   If neighbors[0] = previous Then
9:    Return empty list
10:   Else
11:    idx ← (current, neighbors[0])
12:    Return GC(idx, C, F)
13:  Else If count of neighbors = 2 Then
14:   If all neighbors are in visited Then
15:    If previous = neighbors[0] Then
16:     append neighbors[1] tochain
17:    Else
18:     append neighbors[0] to chain
19:    Return empty list
20:   Else If neighbors[0] is in visited Then
21:    idx ← (current, neighbors[1])
22:   Else If neighbors[1] is in visited Then
23:    idx ← (current, neighbors[0])
24:   Return GC(idx, C, F)
25:candidates ← empty list
26:For neighbor in neighbors Do
27:  If neighbor is not in visited Then
28:   start ← (current, neighbor)
29:   append start to candidates
30:Return candidates

Table. 7.

Algorithm 3. A* Algorithm.

S: start node
G: goal node
Find (node): find the neighbors of node
1:procedure GCs(S, G)
2:open ← priority queue
3: push S to open
4:closed ← empty list
5:While open is not empty Do
6:  current ← pop from open
7:  If current is not in closed Then
8:   If current = goal Then
9:    Return current
10:   Else
11:    append current to closed
12:    neighbors ← Find(current)
13:   For neighbor in neighbors Do
14:    If neighbor is not in closed Then
15:     push neighbor to open

  1. Magid, E, Lavrenov, R, and Afanasyev, I. Voronoi-based trajectory optimization for UGV path planning, 383-387. https://doi.org/10.1109/ICMSC.2017.7959506
  2. Bhattacharya, P, and Gavrilova, ML (2008). Roadmap-based path planning-using the Voronoi diagram for a clearance-based shortest path. IEEE Robotics & Automation Magazine. 15, 58-66. https://doi.org/10.1109/MRA.2008.921540
    CrossRef
  3. Jung, JH, and Kim, DH (2020). Local path planning of a mobile robot using a novel grid-based potential method. International Journal of Fuzzy Logic and Intelligent Systems. 20, 26-34. https://doi.org/10.5391/IJFIS.2020.20.1.26
    CrossRef
  4. Bhattacharya, P, and Gavrilova, ML . Voronoi diagram in optimal path planning., Proceedings of the 4th International Symposium on Voronoi Diagrams in Science and Engineering (ISVD), 2007, Glamorgan, UK, Array, pp.38-47. https://doi.org/10.1109/ISVD.2007.43
  5. Evans, DG, and Jones, SM (1987). Detecting Voronoi (area-of-influence) polygons. Mathematical Geology. 19, 523-537. https://doi.org/10.1007/BF00896918
    CrossRef
  6. Lee, DT, and Drysdale, RL (1981). Generalization of Voronoi diagrams in the plane. SIAM Journal on Computing. 10, 73-87. https://doi.org/10.1137/0210006
    CrossRef
  7. Masehian, E, and Amin-Naseri, MR (2004). A Voronoi diagram-visibility graph-potential field compound algorithm for robot path planning. Journal of Robotic Systems. 21, 275-300. https://doi.org/10.1002/rob.20014
    CrossRef
  8. Wu, ST, da Silva, AC, and Marquez, MR (2004). The Douglas-Peucker algorithm: sufficiency conditions for non-self-intersections. Journal of the Brazilian Computer Society. 9, 67-84. https://doi.org/10.1590/S0104-65002004000100006
    CrossRef
  9. Hart, PE, Nilsson, NJ, and Raphael, B (1968). A formal basis for the heuristic determination of minimum cost paths. IEEE Transactions on Systems Science and Cybernetics. 4, 100-107. https://doi.org/10.1109/TSSC.1968.300136
    CrossRef
  10. Li, X, Hu, X, Wang, Z, and Du, Z . Path planning based on combinaion of improved A-STAR algorithm and DWA algorithm., Proceedings of 2020 2nd International Conference on Artificial Intelligence and Advanced Manufacture (AIAM), 2020, Manchester, UK, Array, pp.99-103. https://doi.org/10.1109/AIAM50918.2020.00025
  11. Niu, H, Lu, Y, Savvaris, A, and Tsourdos, A (2018). An energyefficient path planning algorithm for unmanned surface vehicles. Ocean Engineering. 161, 308-321. https://doi.org/10.1016/j.oceaneng.2018.01.025
    CrossRef
  12. Seidel, R (1991). A simple and fast incremental randomized algorithm for computing trapezoidal decompositions and for triangulating polygons. Computational Geometry. 1, 51-64. https://doi.org/10.1016/0925-7721(91)90012-4
    CrossRef
  13. Gavrilova, M, and Rokne, JG (2000). Reliable line segment intersection testing. Computer-Aided Design. 32, 737-745. https://doi.org/10.1016/S0010-4485(00)00050-6
    CrossRef
  14. Ju, C, Luo, Q, and Yan, X . Path planning using an improved a-star algorithm., Proceedings of 2020 11th International Conference on Prognostics and System Health Management (PHM-2020 Jinan), 2020, Jinan, China, Array, pp.23-26. https://doi.org/10.1109/PHM-Jinan48558.2020.00012
  15. Toan, TQ, Sorokin, AA, and Trang, VTH . Using modification of visibility-graph in solving the problem of finding shortest path for robot., Proceedings of 2017 International Siberian Conference on Control and Communications (SIBCON), 2017, Astana, Kazakhstan, Array, pp.1-6. https://doi.org/10.1109/SIBCON.2017.7998564

JunTak Lee currently active as a undergraduate internship and student in the Department of Computer Science and Engineering at Dongguk University at Seoul, Korea. His current research interests are in-door localization and path finding in robots. E-mail: ross1573@dgu.ac.kr

Tae-Won Kang received the B.S. in Computer Science & Engineering and M.S. degrees in Artificial Intelligence from Dongguk University, Korea, in 2021 and 2023, respectively. E-mail: ktw3388@dgu.ac.kr

Yong-Sik Choi received the M.S. degree from the Department of Computer Science and Engineering, Seoul, Korea, in 2020, and he has been Ph.D. degree candidate at the Department of Artificial Intelligence, Dongguk University, Seoul, Korea, since 2020. His research area include intelligent systems, machine learning, and human-robot interaction. E-mail: sik2230@dongguk.edu

Jin-Woo Jung received the B.S. and M.S. degrees in Electrical Engineering from Korea Advanced Institute of Science and Technology (KAIST), Korea, in 1997 and 1999, respectively and received the Ph.D. degree in Electrical Engineering and Computer Science from KAIST, Korea in 2004. Since 2006, he has been with the Department of Computer Science and Engineering at Dongguk University at Seoul, Korea, where he is currently a professor. His current research interests include human behavior recognition, mobile robot and intelligent human-robot interaction. E-mail jwjung@dongguk.edu

Article

Original Article

International Journal of Fuzzy Logic and Intelligent Systems 2023; 23(3): 259-269

Published online September 25, 2023 https://doi.org/10.5391/IJFIS.2023.23.3.259

Copyright © The Korean Institute of Intelligent Systems.

Clearance-Based Performance-Efficient Path Planning Using Generalized Voronoi Diagram

JunTak Lee1, Tae-Won Kang2, Yong-Sik Choi2, and Jin-Woo Jung1

1Department of Computer Science and Engineering, Dongguk University, Seoul, Korea
2Department of Artificial Intelligence, Dongguk University, Seoul, Korea

Correspondence to:Jin-Woo Jung (jwjung@dongguk.edu)

Received: July 5, 2023; Accepted: August 4, 2023

This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License (http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted noncommercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

Abstract

The Voronoi diagram is one of the most well-known methods in clearance-based pathfinding. The generalized Voronoi diagram, which is derived from the Voronoi diagram, accepts a polygon as input. This study proposes a method for generating and simplifying a generalized Voronoi diagram. A generalized Voronoi diagram is generated by creating a Voronoi diagram with points representing polygons. The Douglas-Peucker line simplification algorithm is used to simplify the diagram, and the A-star algorithm is used to determine the optimal path. By comparing the simplified and non-simplified versions, we determine that the simplifying process decreases the run time while preserving most of the clearance; however, the distance inefficiency of the Voronoi diagram is not overcome. Additional research is required to determine a more distance-efficient path.

Keywords: Generalized Voronoi diagram, Path finding, DP algorithm, A-star algorithm

1. Introduction

Path planning in a dynamic environment for autonomous robots is one of the most important tasks in robotics and is considered a core problem in modern robotics [14]. It aims to determine a collision-free or distance-efficient path for a robot to reach its target location. These conflicting characteristics are defined as clearance and optimality. Focusing on clearance, the Voronoi diagram is one of the most well-known methods because it guarantees a maximum clearance [4].

A Voronoi diagram is a partition of a plane, and each partition is called a Voronoi polygon and is associated with a unique point [4]. These convex polygons are called Voronoi polygons [5]. In local areas, obstacles are represented by polygons or line segments. The Voronoi diagram, which is generated using points, is inappropriate for these situations. A generalized Voronoi diagram (GVD) is generated using polygons [6]. Because a GVD is generated using polygons, it is suitable in obstacle contained environments. Similar to the Voronoi diagram, in which each Voronoi polygon is associated with a unique point, the Voronoi polygons in the GVD are associated with unique polygons. Because the Voronoi diagram maximizes the distance to the points, the GVD maximizes the distance to the polygons. This feature makes the GVD appropriate for clearance-based path planning in obstacle-contained environments.

Unlike the Voronoi diagram, which has straight line segments, the Voronoi polygons in the GVD consist of parabolic curved segments [7]. This requires many vertices to be represented and renders path planning inefficient. To overcome this inefficiency, utilization is required. Simplifying the line segments requires a diagram because it reduces the number of vertices. However, excessive line simplification may result in a non-original deformity, and the path can intersect with obstacles. This can lead to a path planning failure because the path that intersects with obstacles is unreachable. The Douglas-Peucker line-simplification (DP) algorithm provides the best perceptual representation of the original lines [8]. This approach is suitable for path planning because it results in the smallest changes in terms of the diagram shape.

The A-star (A*) algorithm is the best-first search algorithm and is widely used in path planning. This algorithm guarantees the optimal path in a static environment and improves the efficiency using a heuristic function [9]. In two-dimensional (2D) node-based maps, the A* algorithm uses an evaluation function to identify the next node. The evaluation function can be defined as

f(n)=g(n)+h(n),

where g(n) refers to the actual cost from the start node to the current node, and h(n) refers to the estimated cost from the current node to the goal node, which is also known as a heuristic function [10]. On a grid-based map, the Manhattan and Euclidean distances are widely used to define a heuristic function. However, on a node-based map, the Manhattan distance cannot satisfy the underestimation because the actual distance can be less than the Manhattan distance. Calculating the shortest path between two points, that is, the Euclidean distance, is suitable for node-based maps.

In this study, we constructed a GVD and simplified its diagram using the DP algorithm. The results of the simplified GVD are represented by nodes and their connections. To obtain the shortest path based on the simplified GVD (S-GVD), we used the A* algorithm, whose heuristic function is defined as the Euclidean distance. Because the DP algorithm requires a tolerance value, we simulated multiple situations to determine a moderate value. The S-GVD and GVD were compared to show differences in the clearance and performance. The minimum distance from obstacles was measured to represent the clearance of the diagram. The execution time was measured to represent the performance. To measure the efficiency, their visibility graph were compared.

2. Methodology

2.1 Generalized Voronoi Diagram

A GVD can be constructed using multiple methods [1, 6, 7, 11]. However, to preserve the details and remain capable of producing any polygon, we decided to adopt a different perspective. The main idea of our method involves representing polygons using points, which is accomplished by following four steps:

  • 1. Triangulate polygons.

  • 2. Generate points at regular interval along the line segments in each triangle.

  • 3. Create Voronoi diagram with the generated points.

  • 4. Delete the nodes that exist inside the polygons.

We triangulated the polygons using Seidel’s algorithm, which triangulates polygons regardless of their concaveness and convexity [12]. We then generate points at regular intervals along the line segments of each triangle. For the polygon vertices shown in Figure 1, Figure 2 presents their conversion results.

By considering only the polygons, the generation of the Voronoi diagram fails. Therefore, a boundary is required [4]. In addition, an independent space is required for each endpoint to ensure clearance at each endpoint. This can be solved by adding endpoints to the Voronoi diagram, which generates a unique Voronoi polygon that ensures that no other polygons intersect the area. After adding all required points, we generated a Voronoi diagram using the Python SciPy library. Figure 3 shows the Voronoi diagram results.

Points in the polygon are unreachable. These points must be removed to generate a passable path. To delete unreachable nodes, determining whether each node is in the polygon is necessary. This was determined by testing the order of the points. The order of three points in the same plane can be expressed as clockwise (CW) or counterclockwise (CCW). The order of points (P1, P2, P3) can be determined using Eqs. (1) and (2) [13].

Order=P1P2×P1P3,{CW,(Order<0),Parallel,(Order=0),CCW,(Order>0).

If a single point P and the vertices of the triangles V1, V2, V3 are given, we can determine whether the point is in the triangle using Eqs. (3) and (4).

Location=CCW(V1,V2,P)×CCW(V1,P,V3),{Inside,(Location0),Outside,(Location>0).

Testing only a single vertex can yield unreliable results. Therefore, every vertex in the triangle must be tested.

After specifying the nodes in the polygons, we delete them and reorganize the diagram. Consequently, the GVD can be obtained, as shown in Figure 4.

2.2 Simplifying the GVD

Because the DP algorithm relies only on the distance between points and lines, it uses a polyline and a tolerance ɛ [8]. Moreover, the GVD, which contains many diverging points, must be divided into polygonal chains to execute the DP algorithm. Therefore, we implemented a chaining algorithm based on the neighbor count.

From a neighborhood perspective, nodes can be classified into three types: dead-end, feature, and chained. Because the GVD does not contain independently existing nodes, we did not consider them. A dead-end node is at the dead end of the diagram and has a neighbor count of one. A feature node is a diverging point in the diagram, with a neighbor count greater than 2. Finally, a chained node is in the middle of the chain, and is not a dead-end or feature node, with a neighbor count of 2.

The algorithm begins by specifying the first starting node, which is a dead-end node. Subsequently, a chain is created. After creating the chain, neighbors from the end node are specified as newly discovered starting nodes, and it is pushed into the starting node queue. The entire diagram can be searched by looping the procedure from creating the chain and adding newly discovered starting nodes.

The single-chain generation algorithm is executed according to the number of neighbors. Two scenarios are possible for dead-end nodes: either at the end of the line or at the beginning of the algorithm. The first situation indicates that no newly discovered start nodes remain and that this is the end of the chain. Therefore, the algorithm exits. However, the second scenario should not result in the algorithm exiting, and it should continue searching for the end of the chain. Feature nodes have only one possible scenario at the end of the chain. The algorithm must terminate and notify unvisited neighbors. Finally, chained nodes have two possible scenarios. If the algorithm has visited every neighbor, it is at the end of the line, and the algorithm must exit. Otherwise, if the algorithm has visited only one neighbor, then the chain is incomplete, and the algorithm continues. Algorithms 1 and 2 show how chains were generated in this study.

After generating the chains in the diagram, we can now use the DP algorithm to simplify the polyline. Because the simplified polyline differs according to the index, we reorganized the GVD. Figure 5 show the results of the S-GVD.

Because the start and end nodes are included in the diagram generation, the diagram has its own Voronoi polygon. Therefore, paths containing dead-end nodes are not passed through. This renders such lines unnecessary. Therefore, we implemented a pruning procedure to eliminate such lines. Figure 6 shows the pruning procedure results.

2.3 A-Star Algorithm on S-GVD

To execute the A* algorithm, a connection must be made between the endpoints and adjacent nodes. To achieve this, the node adjacent to the endpoints must be determined. The folloing features were used to determine the corresponding nodes. We assumed that a line is created using one of the endpoints of the diagram and one of the nodes as both ends. If the node is adjacent to the endpoint, it should not intersect all lines in the diagram. Therefore, we can identify adjacent nodes by checking the intersection of line segments. The intersection of two lines (L1(P1, P2), L2(P3, P4)) can be determined using Eq. (5).

(CCW(P1,P2,P3)×CCW(P1,P2,P4)<0)and(CCW(P3,P4,P1)×CCW(P3,P4,P2)<0).

Figure 7 shows the connecting of all adjacent nodes to each endpoint.

The algorithm starts at the start node. It then expands to its neighboring nodes. Each neighboring node calculates its evaluation function using the Euclidean distance as a heuristic function. After selecting the closest node, the algorithm repeats from the expansion stage. This loops until the goal node is reached. Algorithm 3 shows this procedure [14].

Figure 8 shows the results of searching the path using the A* algorithm.

2.4 Finding the Moderate Tolerance

Because the DP algorithm executes based on the ɛ value, an appropriate ɛ value must be determined: the maximum value that does not contaminate the path. The minimum distance from the obstacle was measured to ensure that the path retained its original shape. The performance was evaluated by measuring the time spent on the algorithm. This measurement was performed by varying the ɛ values on various maps and paths. Figures 9 and 10 present the distance and performance results, respectively.

We determined that the performance increases with ɛ. However, when ɛ exceeds 0.0008, paths begin to approach obstacles. Furthermore, when ɛ exceeds 0.04, some paths begin to intersect with obstacles. This explains why the distance approaches zero in certain situations. However, most situations showed no significant decrease in the distance from 0.0 to 0.0064. We selected an ɛ value of 0.0064 because of this.

3. Results

To test the S-GVD in various environments, we tested seven maps of various environments. Table 1 lists the characteristics of each map, and Figure 11 shows images of the maps used for testing.

Based on Maps 1–4, we tested four paths. Paths 1 and 2 were intended to cross diagonally, whereas paths 3 and 4 were intended to cross the center. Because Maps 5–7 were mazelike environments, we tested a single path with the intended endpoints. Using a 2D coordinate system on the map, we defined the lower left corner as (0, 0) and the upper right corner as (1, 1), where the horizontal axis is x, and the vertical axis is the y. Table 2 lists the endpoints of each map. Figures 1216 present the results of the path search based on Table 2.

3.1 Comparison

Various aspects of the GVD and S-GVD were compared. The minimum distance from the obstacle in the path was measured to determine the extent to which clearance was maintained. The execution time was measured to determine the extent of the performance improvement. Table 3 lists the minimum distances from obstacles measured in the experiment. For Maps 1–4, we averaged the values of all paths.

In the experiment, we observed that the computational time was reduced by simplifying the GVD. Moreover, the time reduction tends to be inversely proportional to the complexity. We determined it to be up to six times faster on low-complexity maps, such as Maps 1 or 5, whereas it was only two times faster on high-complexity maps, such as Map 7. We also noticed that the minimum distance, which represents the clearance, was reduced when simplifying the diagram. In the low-complexity map, this decrease was less than 3%, whereas in the high-complexity map, it was approximately 5%. On a maze-like map, the reduction reached 10%. These results indicate that clearance is affected when the complexity increases.

In terms of distance, the shortest path can be obtained using a visibility graph (V-graph) [15]. Therefore, we compared the total distances of the paths generated on the S-GVD, GVD, and V-graph. Table 4 lists the values measured during the experiments.

As the focus was on clearance, no significant difference was observed between the S-GVD and GVD methods. In addition, it was less than 1%. However, the difference between the V-graph and the other graphs indicated that the GVD-based method was approximately 23% longer. This value appears to be similar to that of Masehian’s previous work, which showed that the Voronoi diagram method was approximately 26% longer than that of the V-graph method [7].

4. Conclusion

In this study, we proposed the S-GVD method for the clearance-based path planning problem. We successfully created an SGVD and its paths. The path generated by the S-GVD is similar to that generated by the GVD, with fewer points. The comparison shows that the S-GVD has positive affects the runtime efficiency without losing clearance. This is more effective for low-complexity maps but is still useful for high-complexity maps. However, the distance inefficiency of the S-GVD is similar to that of the GVD because the paths are similar. This shows that the distance inefficiency of the S-SVD has not been overcome. Therefore, further studies are required to increase the path efficiency.

Fig 1.

Figure 1.

Polygons vertices.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 2.

Figure 2.

Generated points.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 3.

Figure 3.

Generated Voronoi diagram.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 4.

Figure 4.

Generalized Voronoi diagram.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 5.

Figure 5.

S-GVD result.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 6.

Figure 6.

Pruning procedure results.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 7.

Figure 7.

Connecting all adjacent nodes to each endpoint.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 8.

Figure 8.

Shortest path found using the A* algorithm.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 9.

Figure 9.

Minimum distance from an obstacle measured at various ɛ values.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 10.

Figure 10.

Time spent on the algorithm at various ɛ values.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 11.

Figure 11.

Images of maps used in the experiment: (a) Map 1, (b) Map 2, (c) Map 3, (d) Map 4, (e) Map 5, (f) Map 6, and (g) Map 7.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 12.

Figure 12.

Results of Map 1: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 13.

Figure 13.

Results of Map 2: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 14.

Figure 14.

Results of Map 3: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 15.

Figure 15.

Results of Map 4: (a) path 1, (b) path 2, (c) path 3, and (d) path 4.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Fig 16.

Figure 16.

Results of (a) Map 5, (b) Map 6, and (c) Map 7.

The International Journal of Fuzzy Logic and Intelligent Systems 2023; 23: 259-269https://doi.org/10.5391/IJFIS.2023.23.3.259

Table 1 . Map characteristics.

MapCharacteristic
1Various polygons
2Low complexity
3Middle complexity
4High complexity
5Winding route
6Spiral route
7Maze route

Table 2 . Endpoints of each map.

MapStart point (x, y)End point (x, y)
Maps 1(0.05, 0.05)(0.9, 0.9)
Maps 2(0.05, 0.95)(0.95, 0.05)
Maps 3(0.55, 0.05)(0.4, 0.95)
Maps 4(0.05, 0.6)(0.95, 0.45)
Map 5(0.1, 0.075)(0.1, 0.915)
Map 6(0.05, 0.05)(0.5, 0.5)
Map 7(0.05, 0.93)(0.9, 0.06)

Table 3 . Clearance and performance comparisons.

MapS-GVDGVD


Min-distance%Time%Min-distance%Time%
Map 10.0689698.10.21916.40.070321001.334100

Map 20.0762397.70.22119.20.078061001.154100

Map 30.0450094.40.52318.90.047681002.760100

Map 40.0255096.41.44825.30.026451005.716100

Map 50.0279391.22.07629.30.030611007.077100

Map 60.0564996.00.68515.60.058841004.381100

Map 70.0197391.05.15046.60.0216810011.043100

Table 4 . Comparison in terms of the total path distance.

MapS-GVDGVDV-graph



Distance%Distance%Distance%
Map 11.34513124.91.34772125.11.07690100

Map 21.25439116.41.25599116.61.07717100

Map 31.35510126.11.35997126.51.07493100

Map 41.47251123.81.48138124.61.18900100

Map 55.61097116.15.62432116.44.83239100

Map 63.61396123.83.62261124.12.91889100

Map 74.24498131.04.26918131.73.24158100

Mean2.69958122.62.70874123.02.20155100

Algorithm 1. Generating chains.

Find (n): find the first node that has n neighbors
GC: generate a single chain given a starting node
1:procedure GCs
2:feature ← empty list
3:chains ← empty list
4:start nodes ← empty queue
5: push (−1, Find(1)) to start nodes
6:Whilestart nodes is not empty Do
7:  chain ← empty list
8:  idx ← pop element from start nodes
9:  candidates ← GC(idx, chain, feature)
10:  append chain to chains
11:  If beginning of chain is not in featureThen
12:   append begin of chain to feature
13:  If end of chain is not in featureThen
14:   append end of chain to feature
15:  push all candidates to start nodes
16:Returnchains

Algorithm 2. Generating chain.

I: (previous node, current node)
C: chain
F: feature nodes
Find (node): find the neighbors of node
1:procedure GC(I, C, F)
2:current ← current node of I
3:previous ← previous node of I
4: append current to C
5:neighbors ← Find(current)
6:visitedF+ previous
7:  If count of neighbors = 1 Then
8:   If neighbors[0] = previous Then
9:    Return empty list
10:   Else
11:    idx ← (current, neighbors[0])
12:    Return GC(idx, C, F)
13:  Else If count of neighbors = 2 Then
14:   If all neighbors are in visited Then
15:    If previous = neighbors[0] Then
16:     append neighbors[1] tochain
17:    Else
18:     append neighbors[0] to chain
19:    Return empty list
20:   Else If neighbors[0] is in visited Then
21:    idx ← (current, neighbors[1])
22:   Else If neighbors[1] is in visited Then
23:    idx ← (current, neighbors[0])
24:   Return GC(idx, C, F)
25:candidates ← empty list
26:For neighbor in neighbors Do
27:  If neighbor is not in visited Then
28:   start ← (current, neighbor)
29:   append start to candidates
30:Return candidates

Algorithm 3. A* Algorithm.

S: start node
G: goal node
Find (node): find the neighbors of node
1:procedure GCs(S, G)
2:open ← priority queue
3: push S to open
4:closed ← empty list
5:While open is not empty Do
6:  current ← pop from open
7:  If current is not in closed Then
8:   If current = goal Then
9:    Return current
10:   Else
11:    append current to closed
12:    neighbors ← Find(current)
13:   For neighbor in neighbors Do
14:    If neighbor is not in closed Then
15:     push neighbor to open

References

  1. Magid, E, Lavrenov, R, and Afanasyev, I. Voronoi-based trajectory optimization for UGV path planning, 383-387. https://doi.org/10.1109/ICMSC.2017.7959506
  2. Bhattacharya, P, and Gavrilova, ML (2008). Roadmap-based path planning-using the Voronoi diagram for a clearance-based shortest path. IEEE Robotics & Automation Magazine. 15, 58-66. https://doi.org/10.1109/MRA.2008.921540
    CrossRef
  3. Jung, JH, and Kim, DH (2020). Local path planning of a mobile robot using a novel grid-based potential method. International Journal of Fuzzy Logic and Intelligent Systems. 20, 26-34. https://doi.org/10.5391/IJFIS.2020.20.1.26
    CrossRef
  4. Bhattacharya, P, and Gavrilova, ML . Voronoi diagram in optimal path planning., Proceedings of the 4th International Symposium on Voronoi Diagrams in Science and Engineering (ISVD), 2007, Glamorgan, UK, Array, pp.38-47. https://doi.org/10.1109/ISVD.2007.43
  5. Evans, DG, and Jones, SM (1987). Detecting Voronoi (area-of-influence) polygons. Mathematical Geology. 19, 523-537. https://doi.org/10.1007/BF00896918
    CrossRef
  6. Lee, DT, and Drysdale, RL (1981). Generalization of Voronoi diagrams in the plane. SIAM Journal on Computing. 10, 73-87. https://doi.org/10.1137/0210006
    CrossRef
  7. Masehian, E, and Amin-Naseri, MR (2004). A Voronoi diagram-visibility graph-potential field compound algorithm for robot path planning. Journal of Robotic Systems. 21, 275-300. https://doi.org/10.1002/rob.20014
    CrossRef
  8. Wu, ST, da Silva, AC, and Marquez, MR (2004). The Douglas-Peucker algorithm: sufficiency conditions for non-self-intersections. Journal of the Brazilian Computer Society. 9, 67-84. https://doi.org/10.1590/S0104-65002004000100006
    CrossRef
  9. Hart, PE, Nilsson, NJ, and Raphael, B (1968). A formal basis for the heuristic determination of minimum cost paths. IEEE Transactions on Systems Science and Cybernetics. 4, 100-107. https://doi.org/10.1109/TSSC.1968.300136
    CrossRef
  10. Li, X, Hu, X, Wang, Z, and Du, Z . Path planning based on combinaion of improved A-STAR algorithm and DWA algorithm., Proceedings of 2020 2nd International Conference on Artificial Intelligence and Advanced Manufacture (AIAM), 2020, Manchester, UK, Array, pp.99-103. https://doi.org/10.1109/AIAM50918.2020.00025
  11. Niu, H, Lu, Y, Savvaris, A, and Tsourdos, A (2018). An energyefficient path planning algorithm for unmanned surface vehicles. Ocean Engineering. 161, 308-321. https://doi.org/10.1016/j.oceaneng.2018.01.025
    CrossRef
  12. Seidel, R (1991). A simple and fast incremental randomized algorithm for computing trapezoidal decompositions and for triangulating polygons. Computational Geometry. 1, 51-64. https://doi.org/10.1016/0925-7721(91)90012-4
    CrossRef
  13. Gavrilova, M, and Rokne, JG (2000). Reliable line segment intersection testing. Computer-Aided Design. 32, 737-745. https://doi.org/10.1016/S0010-4485(00)00050-6
    CrossRef
  14. Ju, C, Luo, Q, and Yan, X . Path planning using an improved a-star algorithm., Proceedings of 2020 11th International Conference on Prognostics and System Health Management (PHM-2020 Jinan), 2020, Jinan, China, Array, pp.23-26. https://doi.org/10.1109/PHM-Jinan48558.2020.00012
  15. Toan, TQ, Sorokin, AA, and Trang, VTH . Using modification of visibility-graph in solving the problem of finding shortest path for robot., Proceedings of 2017 International Siberian Conference on Control and Communications (SIBCON), 2017, Astana, Kazakhstan, Array, pp.1-6. https://doi.org/10.1109/SIBCON.2017.7998564