Improved RRT-Connect Algorithm Based on Triangular Inequality for Robot Path Planning
<p>Overview of the algorithms in this paper: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 2
<p>RRT algorithm: (<b>a</b>) Process when <span class="html-italic">q<sub>new</sub></span> is created; (<b>b</b>) After the random sampling has ended.</p> "> Figure 3
<p>The ‘Extend’ method from RRT-Connect algorithm.</p> "> Figure 4
<p>The ‘Connect’ method from the RRT-Connect algorithm.</p> "> Figure 5
<p>Abstract process of the ‘Triangular-Rewiring’ method: (<b>a</b>) Example tree; (<b>b</b>) After rewiring between <span class="html-italic">q<sub>child</sub></span> and <span class="html-italic">q<sub>ancestor</sub></span>; (<b>c</b>) At this time, <span class="html-italic">α</span> is the distance between <span class="html-italic">q<sub>child</sub></span> and <span class="html-italic">q<sub>parent</sub></span>, <span class="html-italic">β</span> is the distance between <span class="html-italic">q<sub>parent</sub></span> and <span class="html-italic">q<sub>ancestor</sub></span>, and <span class="html-italic">γ</span> is the distance between <span class="html-italic">q<sub>child</sub></span> and <span class="html-italic">q<sub>ancestor</sub></span>.</p> "> Figure 6
<p>Detailed process of the ‘Triangular-Rewiring’ method: (<b>a</b>) Each node <span class="html-italic">q</span> for index <span class="html-italic">i</span> (at this time, <span class="html-italic">q<sub>start</sub></span> is same as <span class="html-italic">q</span><sub>7</sub> and <span class="html-italic">q<sub>goal</sub></span> is same as <span class="html-italic">q</span><sub>0</sub>); (<b>b</b>) Represent each node using the <span class="html-italic">n</span>-th ancestor <math display="inline"><semantics> <mrow> <msup> <mi>ξ</mi> <mi>n</mi> </msup> </mrow> </semantics></math> of <span class="html-italic">q</span><sub>0</sub>; (<b>c</b>) Each distance <math display="inline"><semantics> <mrow> <msub> <mi mathvariant="normal">????</mi> <mi>n</mi> </msub> </mrow> </semantics></math> between the <span class="html-italic">n</span>-th and (<span class="html-italic">n</span> + 1)-th ancestor nodes of <span class="html-italic">q</span><sub>0</sub>; (<b>d</b>) When the ‘Triangular-Rewiring’ method is applied and rewired by distance <math display="inline"><semantics> <mrow> <msub> <mi mathvariant="normal">????</mi> <mrow> <msub> <mi>k</mi> <mi>j</mi> </msub> </mrow> </msub> </mrow> </semantics></math>; (<b>e</b>) Represent as the value of <span class="html-italic">k<sub>j</sub></span>; (<b>f</b>) Represent each node by the <span class="html-italic">n</span>-th ancestor <math display="inline"><semantics> <mrow> <msup> <mi>ξ</mi> <mi>n</mi> </msup> </mrow> </semantics></math> of <span class="html-italic">q</span><sub>0</sub> after method is applied.</p> "> Figure 7
<p>Proposed ‘Extend’ method for the RRT-Connect algorithm.</p> "> Figure 8
<p>Proposed ‘Connect’ method for the RRT-Connect algorithm.</p> "> Figure 9
<p>Detailed process of the proposed algorithm: (<b>a</b>) Start position <span class="html-italic">q<sub>start</sub></span> from tree <span class="html-italic">T<sub>a</sub></span> and goal position <span class="html-italic">q<sub>goal</sub></span> from tree <span class="html-italic">T<sub>b</sub></span>; (<b>b</b>) Create <span class="html-italic">q<sub>newA</sub></span> nearest to <span class="html-italic">T<sub>a</sub></span> from 1<sup>st</sup> random sampling position <span class="html-italic">q<sub>rand</sub></span> and create <span class="html-italic">q<sub>newB</sub></span> from <span class="html-italic">q<sub>goal</sub></span> nearest to <span class="html-italic">T<sub>b</sub></span>; (<b>c</b>) Create new <span class="html-italic">q<sub>newA</sub></span> from <span class="html-italic">q<sub>near</sub></span> nearest to <span class="html-italic">T<sub>b</sub></span> from the second random sampling position <span class="html-italic">q<sub>rand</sub></span> and rewire between <span class="html-italic">q<sub>newA</sub></span> and <span class="html-italic">q<sub>goal</sub></span> the ancestor of the <span class="html-italic">q<sub>newA</sub></span>; (<b>d</b>) Create a new <span class="html-italic">q<sub>newA</sub></span> from <span class="html-italic">q<sub>near</sub></span> nearest to <span class="html-italic">T<sub>a</sub></span> from the third random sampling position <span class="html-italic">q<sub>rand</sub></span> and rewire between <span class="html-italic">q<sub>newA</sub></span> and <span class="html-italic">q<sub>start</sub></span> with the ancestor of <span class="html-italic">q<sub>newA</sub></span>; (<b>e</b>) Create new <span class="html-italic">q<sub>newA</sub></span> from <span class="html-italic">q<sub>near</sub></span> nearest to <span class="html-italic">T<sub>a</sub></span> from the fifth random sampling position <span class="html-italic">q<sub>rand</sub></span> and connect between <span class="html-italic">q<sub>newA</sub></span> and <span class="html-italic">q<sub>newB</sub></span> nearest to <span class="html-italic">T<sub>b</sub></span> from <span class="html-italic">q<sub>newA</sub></span>; (<b>f</b>) Result of Path <span class="html-italic">R</span> from <span class="html-italic">q<sub>start</sub></span> to <span class="html-italic">q<sub>goal</sub></span>.</p> "> Figure 10
<p>Maps for the experiment: (<b>a</b>) Map 1; (<b>b</b>) Map 2; (<b>c</b>) Map 3; (<b>d</b>) Map 4; (<b>e</b>) Map 5; (<b>f</b>) Map 6; (<b>g</b>) Map 7; (<b>h</b>) Map 8.</p> "> Figure 11
<p>Experimental result of Map 1: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 12
<p>Experimental results of Map 2: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 13
<p>Experimental result of Map 3: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 14
<p>Experimental result of Map 4: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 15
<p>Experimental result of Map 5: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 16
<p>Experimental result of Map 6: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 17
<p>Experimental result of Map 7: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 18
<p>Experimental result of Map 8: (<b>a</b>) RRT; (<b>b</b>) RRT-Connect; (<b>c</b>) the proposed algorithm.</p> "> Figure 19
<p>Experimental results in total for the average number of samples (for first path finding): (<b>a</b>) result of each map compared with the RRT algorithm (<math display="inline"><semantics> <mrow> <msub> <mi>x</mi> <mrow> <mi>c</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mfenced> <mi>i</mi> </mfenced> </mrow> </semantics></math>); (<b>b</b>) average result compared with the RRT algorithm (<math display="inline"><semantics> <mrow> <msub> <mi>X</mi> <mrow> <mi>c</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> </mrow> </semantics></math>).</p> "> Figure 20
<p>Experimental results in total for the average path length: (<b>a</b>) result of each map compared with the RRT algorithm (<math display="inline"><semantics> <mrow> <msub> <mi>x</mi> <mrow> <mi>c</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mfenced> <mi>i</mi> </mfenced> </mrow> </semantics></math>); (<b>b</b>) average result compared with the RRT algorithm (<math display="inline"><semantics> <mrow> <msub> <mi>X</mi> <mrow> <mi>c</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> </mrow> </semantics></math>).</p> "> Figure 21
<p>Experimental results in total on the average planning time: (<b>a</b>) result of each map compared with the RRT algorithm (<math display="inline"><semantics> <mrow> <msub> <mi>x</mi> <mrow> <mi>c</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> <mfenced> <mi>i</mi> </mfenced> </mrow> </semantics></math>); (<b>b</b>) average result compared to the RRT algorithm (<math display="inline"><semantics> <mrow> <msub> <mi>X</mi> <mrow> <mi>c</mi> <mi>m</mi> <mi>p</mi> </mrow> </msub> </mrow> </semantics></math>).</p> ">
Abstract
:1. Introduction
2. Rapidly Exploring Random Tree (RRT) Algorithm
3. RRT-Connect Algorithm
3.1. Pseudocode of the RRT-Connect Algorithm
Algorithm 1 Pseudocode of the RRT-Connect Algorithm | |
Input: qstart ← Start Point Position qgoal ← Goal Point Position λ ← Step Length C ← Position Set of All Boundary Points in All Obstacles Ν ← Number of Random Samples Output: R ← Result of Path R Initialize: Ta ← Null Tree Tb ← Null Tree dshorter ← 0 | |
BeginRRT-ConnectProcedure | |
1 | Ta ← Insert Root Node<qstart> to Ta |
2 | Tb ← Insert Root Node<qgoal> to Tb |
3 | While 1 ← n to N do |
4 | Generate n-th Random Sample |
5 | qrand ← Position of n-th Random Sample |
6 | If Not Extend(Ta, Tb, qnewB ← Null, qrand, λ, C) then |
7 | If Connect(Preach ← Null Path, Ta, Tb, qnewB, λ) then |
8 | dreach ← Distance of Preach |
9 | If dshorter = 0 or dshorter > dreach then |
10 | R ← Preach |
11 | dshorter ← dreach |
12 | Swap(Ta, Tb) |
EndRRT-ConnectProcedure |
3.2. Pseudocode of the Extend Method from the RRT-Connect Algorithm
Algorithm 2 Pseudocode of the original ‘Extend’ method from the RRT-Connect Algorithm | |
Input: Ta ← Tree Ta from RRT-Connect Tb ← Tree Tb from RRT-Connect qnewB ← Position qnewB from RRT-Connect qrand ← Position qrand from RRT-Connect λ ← Step Length λ from RRT-Connect C ← Position Set C from RRT-Connect Output: ftrap ← Result of Boolean ftrap Ta ← Result of Tree Ta //Return by Reference Tb ← Result of Tree Tb //Return by Reference qnewB ← Result of Position qnewB //Return by Reference Initialize: ftrap ← False | |
Begin ExtendProcedure fromRRT-Connect | |
1 | qnear ← Find Position of Nearest Node in Ta from qrand |
2 | If NotisInside(qnear, qrand, λ) then |
3 | qnewA ← Position of the Intersection Point between the Line Segment connecting qrand and qnear and a Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
4 | Else |
5 | qnewA ← qrand |
6 | IfisTrapped(qnewA, qnear, C) then |
7 | ftrap ← True |
8 | Else |
9 | Ta ← Insert Node<qnewA> and Edge<qnewA, qnear> to Ta |
10 | qnear ← Find Position of Nearest Node in Tb from qnewA |
11 | If isInside(qnear, qnewA, λ) then |
12 | qnewB ← qnear |
13 | Else |
14 | qnewB ← Position of Intersection Point between Line Segment connecting qnewA and qnear, and Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
15 | While Not isTrapped(qnewB, qnear, C) do |
16 | Tb ← Insert Node<qnewB> and Edge<qnewB, qnear> to Tb |
17 | If Not isInside(qnewA, qnewB, λ) then |
18 | qnear ← qnewB |
19 | qnewB ← Position of Intersection Point between Line Segment connecting qnewA and qnear, and Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
20 | Else |
21 | Break |
EndExtendProcedure fromRRT-Connect |
3.3. Pseudocode of the Connect Method from the RRT-Connect Algorithm
Algorithm 3 Pseudocode of the Original ‘Connect’ Method from the RRT-Connect Algorithm | |
Input: Preach ← Path Preach from RRT-Connect Ta ← Tree Ta from RRT-Connect Tb ← Tree Tb from RRT-Connect qnewB ← Position qnewB from RRT-Connect λ ← Step Length λ from RRT-Connect Output: freach ← Result of Boolean freach Preach ← Result of Path Pmerged //Return by Reference Initialize: freach ← False | |
BeginConnectProcedure fromRRT-Connect | |
1 | IfisInside(qnewA, qnewB, λ) then |
2 | Pa ← Path from Root Node [qstart] to Last Inserted Node [qnewA] in Ta |
3 | Pb ← Path from qnewB to Root Node [qgoal] in Tb |
4 | Pconnect ← Path from Last Inserted Node [qnewA] in Ta to qnewB in Tb |
5 | Pmerged ← Merge Path Pa to Pb via Pconnect |
6 | freach ← True |
EndConnectProcedure fromRRT-Connect |
4. Proposed Triangular Inequality-Based RRT-Connect Algorithm
- There is only one start point and one goal point even though the goal point may be changed incrementally as time goes on.
- The robot is capable of omnidirectional motion.
4.1. Pseudocode of the Proposed Triangular-Rewiring Method for the Improved RRT-Connect Algorithm
Algorithm 4 Pseudocode of the Proposed ‘Triangular-Rewiring’ Method for the RRT-Connect Algorithm | |
Input: qchild ← Position {qnew/qnewA/qnewB} from {Extend/Connect} qparent ← Position qnear from {Extend/Connect} T ← Tree {Tmerged/Ta/Tb} from {Extend/Connect} C ← Position Set C from {Extend/Connect} Output: {Tmerged/Ta/Tb} ← Result of T | |
BegintriangularRewiringProcedure fromExtend, Connect | |
1 | qancestor ← Position of Parent Node of qparent in T |
2 | If NotisTrapped(qancestor, qchild, C) then |
3 | T ← Delete Node<qparent>, Edge<qparent, qchild> and Edge<qparent, qancestor> from T |
4 | qparent ← qancestor |
5 | qancestor ← Position of Parent Node of qancestor in T |
6 | While Not qancestor = Null do |
7 | If Not isTrapped(qancestor, qchild, C) then |
8 | T ← Delete Node<qparent> and Edge<qparent, qancestor> from T |
9 | qparent ← qancestor |
10 | qancestor ← Position of Parent Node of qancestor in T |
11 | Else |
12 | Break |
13 | T ← Insert Edge<qparent, qchild> to T |
14 | Else |
15 | T ← Insert Node<qchild> and Edge<qchild, qparent> to T |
EndtriangularRewiringProcedure fromExtend, Connect |
4.2. Mathematical Modeling of the Proposed Triangular Inequality-Based RRT-Connect Algorithm
4.3. Pseudocode of Proposed Extend Method for the Improved RRT-Connect Algorithm
Algorithm 5 Pseudocode of the Proposed ‘Extend’ Method for the RRT-Connect Algorithm | |
Input: Ta ← Tree Ta from RRT-Connect Tb ← Tree Tb from RRT-Connect qnewB ← Position qnewB from RRT-Connect qrand ← Position qrand from RRT-Connect λ ← Step Length λ from RRT-Connect C ← Position Set C from RRT-Connect Output: ftrap ← Result of Boolean ftrap Ta ← Result of Tree Ta //Return by Reference Tb ← Result of Tree Tb //Return by Reference qnewB ← Result of Position qnewB //Return by Reference Initialize: ftrap ← False | |
BeginExtendProcedure fromRRT-Connect | |
1 | qnear ← Find Position of Nearest Node in Ta from qrand |
2 | If NotisInside(qnear, qrand, λ) then |
3 | qnewA ← Position of Intersection Point between Line Segment connecting qrand and qnear, and Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
4 | Else |
5 | qnewA ← qrand |
6 | IfisTrapped(qnewA, qnear, C) then |
7 | ftrap ← True |
8 | Else |
9 | Ta ← triangularRewiring(qnewA, qnear, Ta, C) |
10 | qnear ← Find Position of Nearest Node in Tb from qnewA |
11 | If isInside(qnear, qnewA, λ) then |
12 | qnewB ← qnear |
13 | Else |
14 | qnewB ← Position of Intersection Point between Line Segment connecting qnewA and qnear, and Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
15 | While Not isTrapped(qnewB, qnear, C) do |
16 | Tb ← triangularRewiring(qnewB, qnear, Tb, C) |
17 | If Not isInside(qnewA, qnewB, λ) then |
18 | qnear ← qnewB |
19 | qnewB ← Position of Intersection Point between Line Segment connecting qnewA and qnear, and Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
20 | Else |
21 | Break |
EndExtendProcedure fromRRT-Connect |
4.4. Pseudocode of the Proposed Connect Method for the RRT-Connect Algorithm
Algorithm 6 Pseudocode of the Proposed ‘Connect’ Method for the RRT-Connect Algorithm | |
Input: Preach ← Path Preach from RRT-Connect Ta ← Tree Ta from RRT-Connect Tb ← Tree Tb from RRT-Connect qnewB ← Position qnewB from RRT-Connect λ ← Step Length λ from RRT-Connect Output: freach ← Result of Boolean freach Preach ← Result of Path Pmerged //Return by Reference Initialize: freach ← False | |
BeginConnectProcedure fromRRT-Connect | |
1 | IfisInside(qnewA, qnewB, λ) then |
2 | Pa ← Path from Root Node [qstart] to Last Inserted Node [qnewA] in Ta |
3 | Pb ← Path from qnewB to Root Node [qgoal] in Tb |
4 | Pconnect ← Path from Last Inserted Node [qnewA] in Ta to qnewB in Tb |
5 | Tmerged ← Tree Structure with Merge Path Pa to Pb via Pconnect //1st Insert: qstart, …, n-th Insert: qnewA, (n + 1)-th Insert: qnewB, …, Last Insert: qgoal to Tmerged |
6 | For i ← Inserted Index of qnewA in Tmerged to (Number of Node in Tmerged) – 1 do |
7 | qnew ← (i – 1)-th Inserted Node in Tmerged |
8 | qnear ← i-th Inserted Node in Tmerged |
9 | Tmerged ← triangularRewiring(qnew, qnear, Tmerged, C) |
10 | Pmerged ← Path from Root Node [qstart] to Last Inserted Node [qgoal] in Tmerged |
11 | freach ← True |
EndConnectProcedure fromRRT-Connect |
4.5. Process of the Proposed Triangular Inequality-Based RRT-Connect Algorithm
5. Experimental Results
5.1. Experimental Environment
5.2. Experimental Results and Analysis for Each Map
5.3. Experimental Results and Analysis in Total
6. Conclusions
Author Contributions
Funding
Institutional Review Board Statement
Informed Consent Statement
Conflicts of Interest
Appendix A. Details of the RRT Algorithm
Appendix A.1. Pseudocode of the RRT Algorithm
Algorithm A1 Pseudocode of the RRT Algorithm | |
Input: qstart ← Position of Start Point qgoal ← Position of Goal Point λ ← Step Length C ← Position Set of All Boundary Points in All Obstacles N ← Number of Random Samples Output: R ← Result of Path R Initialize: T ← Null Tree dshorter ← 0 | |
BeginRRTProcedure | |
1 | T ← Insert Root Node<qstart> to T |
2 | While 1 ← n to N do |
3 | Generaten-th Random Sample |
4 | qrand ← Position of n-th Random Sample |
5 | qnear ← Find Position of Nearest Node in T from qrand |
6 | If Not isInside(qnear, qrand, λ) then |
7 | qnew ← Position of Intersection Point between Line Segment connecting qrand and qnear, and Circle with Radius λ centered at qnear //2D: Circle, 3D: Sphere, … |
8 | Else |
9 | qnew ← qrand |
10 | If Not isTrapped(qnew, qnear, C) then |
11 | T ← Insert Node<qnew> and Edge<qnew, qnear> to T |
12 | If isInside(qnew, qgoal, λ) then |
13 | T ← Insert Node<qgoal> and Edge<qnew, qgoal> to T |
14 | Preach ← Path from Last Inserted Node [qgoal] to Root Node [qstart] in T |
15 | dreach ← Distance of Preach |
16 | If dshorter = 0 or dshorter > dreach then |
17 | R ← Preach |
18 | dshorter ← dreach |
19 | T ← Delete Node<qgoal> and Edge<qnew, qgoal> from T |
EndRRTProcedure |
Appendix A.2. Pseudocode of the Functions Used in the RRT Algorithm
Algorithm A2 Pseudocode of the isInside Function from the RRT Algorithm | |
Input: qcenter ← Position {qnear/qnew} from RRT qtarget ← Position {qrand/qgoal} from RRT λ ← Step Length λ from RRT Output: f ← Result of Boolean f Initialize: f ← False | |
BeginisInsideProcedure fromRRT | |
1 | d ← Distance of qcenter to qtarget |
2 | Ifλ ≥ d then |
3 | f ← True |
EndisInsideProcedure fromRRT |
Algorithm A3 Pseudocode of the isTrapped Function from the RRT Algorithm | |
Input: qnew ← Position qnew from RRT qnear ← Position qnear from RRT C ← Position Set of All Boundary Points in All Obstacles C from RRT Output: f ← Result of Boolean f Initialize: n ← 1 f ← True | |
BeginisTrappedProcedure fromRRT | |
1 | lq ← Line Segment connecting qnew and qnear |
2 | c ← Position Set of All Boundary Points of n-th Inserted Obstacle in C |
3 | lc ← Line Segment connecting Last Inserted Position and 1st Inserted Position in c |
4 | i ← 1 |
5 | While Not Intersect between lq and lc do |
6 | lc ← Line Segment connecting i-th Inserted Position and (i + 1)-th Inserted Position in c |
7 | i ← i + 1 |
8 | If i = (Number of Position in c) – 1 then |
9 | If Intersect between lq and lc then |
10 | Break |
11 | n ← n + 1 |
12 | If n > (Number of Position Set in C) then |
13 | f ← False |
14 | Break |
15 | Else |
16 | c ← Position Set of All Boundary Points of n-th Inserted Obstacle in C |
17 | lc ← Line Segment connecting Last Inserted Position and 1st Inserted Position in c |
18 | i ← 1 |
EndisTrappedProcedure fromRRT |
Appendix A.3. Basic Mathematical Modeling of the RRT Algorithm
References
- Schwab, K. The Fourth Industrial Revolution; Crown Business: New York, NY, USA, 2017. [Google Scholar]
- Sariff, N.; Buniyamin, N. An overview of autonomous mobile robot path planning algorithms. In Proceedings of the IEEE 4th Student Conference on Research and Development, Selangor, Malaysia, 28–29 June 2006; pp. 183–188. [Google Scholar]
- Roy, D. Visibility graph based spatial path planning of robots using configuration space algorithms. Int. J. Robot. Autom. 2009, 24, 1–9. [Google Scholar] [CrossRef]
- Katevas, N.I.; Tzafestas, S.G.; Pnevmatikatos, C.G. The approximate cell decomposition with local node refinement global path planning method: Path nodes refinement and curve parametric interpolation. J. Intell. Robot. Syst. 1998, 22, 289–314. [Google Scholar] [CrossRef]
- Warren, C.W. Global Path Planning using Artificial Potential Fields. In Proceedings of the International Conference on Robotics and Automation, Scottsdale, AZ, USA, 14–19 May 1989; Volume 1, pp. 316–321. [Google Scholar]
- LaValle, S.M. Motion planning part II: Wild frontiers. IEEE Robot. Autom. Mag. 2011, 18, 108–118. [Google Scholar]
- Mac, T.T.; Copot, C.; Tran, D.T.; De Keyser, R. Heuristic approaches in robot path planning: A survey. Robot. Auton. Syst. 2016, 86, 13–28. [Google Scholar] [CrossRef]
- Paden, B.; Čáp, M.; Yong, S.Z.; Yershov, D.; Frazzoli, E. A survey of motion planning and control techniques for self-driving urban vehicles. IEEE Trans. Intell. Veh. 2016, 1, 33–55. [Google Scholar] [CrossRef] [Green Version]
- Karaman, S.; Frazzoli, E. Incremental sampling based algorithms for optimal motion planning. arXiv 2010, arXiv:1005.0416. [Google Scholar]
- Brunner, M.; Bruggemann, B.; Schulz, D. Hierarchical Rough Terrain Motion Planning using an Optimal Sampling based Method. In Proceedings of the IEEE International Conference on Robotics and Automation, Karlsruhe, Germany, 6–10 May 2013; pp. 5539–5544. [Google Scholar]
- Adiyatov, O.; Varol, H.A. Rapidly-exploring Random Tree Based Memory Efficient Motion Planning. In Proceedings of the IEEE International Conference on Mechatronics and Automation, Takamatsu, Japan, 4–7 August 2013; pp. 354–359. [Google Scholar]
- LaValle, S.M.; Kuffner, J.J., Jr. Randomized kinodynamic planning. Int. J. Robot. Res. 2001, 20, 378–400. [Google Scholar] [CrossRef]
- LaValle, S.M. Rapidly-Exploring Random Trees: A New Tool for Path Planning; Springer: London, UK, 1998. [Google Scholar]
- Englot, B.; Hover, F.S. Sampling based coverage path planning for inspection of complex structures. In Proceedings of the ICAPS 2012, 22nd International Conference on Automated Planning and Scheduling, Atibaia, Sao Paulo, Brazil, 25–29 June 2012. [Google Scholar]
- Kuffner, J.J., Jr.; LaValle, S.M. RRT-connect: An Efficient Approach to Single-query Path Planning. In Proceedings of the IEEE International Conference on Robotics and Automation, San Francisco, CA, USA, 24–28 April 2000; Volume 2, pp. 995–1001. [Google Scholar]
- Islam, F.; Nasir, J.; Malik, U.; Ayaz, Y.; Hasan, O. Rrt*-smart: Rapid Convergence Implementation of rrt* towards Optimal Solution. In Proceedings of the IEEE International Conference on Mechatronics and Automation, Chengdu, China, 5–8 August 2012; pp. 1651–1656. [Google Scholar]
- Jeong, I.-B.; Lee, S.-J.; Kim, J.-H. Quick-RRT*: Triangular inequality based implementation of RRT* with improved initial solution and convergence rate. Expert Syst. Appl. 2019, 123, 82–90. [Google Scholar] [CrossRef]
- Karaman, S.; Frazzoli, E. Sampling based algorithms for optimal motion planning. Int. J. Robot. Res. 2011, 30, 846–894. [Google Scholar] [CrossRef]
- Gammell, J.D.; Srinivasa, S.S.; Barfoot, T.D. Informed RRT*: Optimal Sampling based Path Planning Focused via Direct Sampling of an Admissible Ellipsoidal Heuristic. In Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems, Chicago, IL, USA, 14–18 September 2014; pp. 2997–3004. [Google Scholar]
- Klemm, S.; Oberländer, J.; Hermann, A.; Roennau, A.; Schamm, T.; Zollner, J.M.; Dillmann, R. RRT*-Connect: Faster, Asymptotically Optimal Motion Planning. In Proceedings of the IEEE International Conference on Robotics and Biomimetics, Zhuhai, China, 6–9 December 2015; pp. 1670–1677. [Google Scholar]
- Choudhury, S.; Scherer, S.; Singh, S. RRT*-AR: Sampling based Alternate Routes Planning with Applications to Autonomous Emergency Landing of a Helicopter. In Proceedings of the IEEE International Conference on Robotics and Automation, Karlsruhe, Germany, 6–10 May 2013; pp. 3947–3952. [Google Scholar]
- Noreen, I.; Amna, K.; Zulfiqar, H. A comparison of RRT, RRT* and RRT*-smart path planning algorithms. Int. J. Comput. Sci. Netw. Secur. 2016, 16, 20. [Google Scholar]
- Da Silva Arantes, M.; Toledo, C.F.M.; Williams, B.C.; Ono, M. Collision-free encoding for chance-constrained nonconvex path planning. IEEE Trans. Robot. 2019, 35, 433–448. [Google Scholar] [CrossRef]
- Nazarahari, M.; Khanmirza, E.; Doostie, S. Multi-objective multi-robot path planning in continuous environment using an enhanced genetic algorithm. Expert Syst. Appl. 2019, 115, 106–120. [Google Scholar] [CrossRef]
- Sung, I.; Choi, B.; Nielsen, P. On the training of a neural network for online path planning with offline path planning algorithms. Int. J. Inf. Manag. 2020, 102142. [Google Scholar] [CrossRef]
- Jeon, G.-Y.; Jung, J.-W. Water sink model for robot motion planning. Sensors 2019, 19, 1269. [Google Scholar] [CrossRef] [PubMed] [Green Version]
- Han, J. Mobile robot path planning with surrounding point set and path improvement. Appl. Soft Comput. 2017, 57, 35–47. [Google Scholar] [CrossRef]
- Yoon, H.U.; Lee, D.-W. Subplanner algorithm to escape from local minima for artificial potential function based robotic path planning. Int. J. Fuzzy Log. Intell. Syst. 2018, 18, 263–275. [Google Scholar] [CrossRef]
- Jung, J.-W.; So, B.-C.; Kang, J.-G.; Lim, D.-W.; Son, Y. Expanded Douglas–Peucker polygonal approximation and opposite angle based exact cell decomposition for path planning with curvilinear obstacles. Appl. Sci. 2019, 9, 638. [Google Scholar] [CrossRef] [Green Version]
H/W | Specification |
---|---|
CPU | Intel Core i7-6700k 4.00 GHz (8 CPUs) |
RAM | 32,768 MB (32 GB DDR4) |
VGA | Nvidia GeForce GTX 1080 (VRAM 8 GB) SLI (x2) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 1216 (100) | 729 (60) | 823 (68) |
Avg. path length (px) | 1341 (100) | 1343 (100) | 1200 (89) |
Avg. planning time (ms) | 12 (100) | 7 (58) | 10 (83) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 271 (100) | 101 (37) | 113 (42) |
Avg. path length (px) | 598 (100) | 613 (98) | 484 (81) |
Avg. planning time (ms) | 6 (100) | 3 (50) | 3 (50) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 6106 (100) | 4574 (75) | 4679 (77) |
Avg. path length (px) | 1934 (100) | 1871 (97) | 1489 (77) |
Avg. planning time (ms) | 866 (100) | 299 (35) | 313 (36) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 290 (100) | 28 (10) | 32 (11) |
Avg. path length (px) | 711 (100) | 588 (83) | 534 (75) |
Avg. planning time (ms) | 3 (100) | 3 (100) | 4 (133) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 371 (100) | 68 (18) | 74 (20) |
Avg. path length (px) | 554 (100) | 588 (106) | 465 (84) |
Avg. planning time (ms) | 13 (100) | 2 (15) | 2 (15) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 541 (100) | 184 (34) | 140 (26) |
Avg. path length (px) | 886 (100) | 778 (88) | 668 (75) |
Avg. planning time (ms) | 9 (100) | 6 (67) | 4 (44) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 436 (100) | 235 (54) | 244 (56) |
Avg. path length (px) | 898 (100) | 862 (96) | 674 (75) |
Avg. planning time (ms) | 5 (100) | 4 (80) | 3 (60) |
RRT | RRT-Connect | Proposed Algorithm | |
---|---|---|---|
Avg. num. of samples (samples) | 17,033 (100) | 3031 (18) | 2954 (17) |
Avg. path length (px) | 1611 (100) | 1576 (98) | 1358 (84) |
Avg. planning time (ms) | 4501 (100) | 119 (3) | 125 (3) |
Algorithm (cmp) | Performance Ratio Based on RRT | Avg. | |||||||
---|---|---|---|---|---|---|---|---|---|
Map 1 | Map 2 | Map 3 | Map 4 | Map 5 | Map 6 | Map 7 | Map 8 | ||
RRT | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |
RRT-Connect | 60 | 37 | 75 | 10 | 18 | 34 | 54 | 18 | 38 |
Proposed | 68 | 42 | 77 | 11 | 20 | 26 | 56 | 17 | 40 |
Algorithm (cmp) | Performance Ratio Based on RRT | Avg. | |||||||
---|---|---|---|---|---|---|---|---|---|
Map 1 | Map 2 | Map 3 | Map 4 | Map 5 | Map 6 | Map 7 | Map 8 | ||
RRT | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |
RRT-Connect | 100 | 98 | 97 | 83 | 106 | 88 | 96 | 98 | 96 |
Proposed | 89 | 81 | 77 | 75 | 84 | 75 | 75 | 84 | 80 |
Algorithm (cmp) | Performance Ratio Based on RRT | Avg. | |||||||
---|---|---|---|---|---|---|---|---|---|
Map 1 | Map 2 | Map 3 | Map 4 | Map 5 | Map 6 | Map 7 | Map 8 | ||
RRT | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |
RRT-Connect | 58 | 50 | 35 | 100 | 15 | 67 | 80 | 3 | 51 |
Proposed | 83 | 50 | 36 | 133 | 15 | 44 | 60 | 3 | 53 |
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |
© 2021 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).
Share and Cite
Kang, J.-G.; Lim, D.-W.; Choi, Y.-S.; Jang, W.-J.; Jung, J.-W. Improved RRT-Connect Algorithm Based on Triangular Inequality for Robot Path Planning. Sensors 2021, 21, 333. https://doi.org/10.3390/s21020333
Kang J-G, Lim D-W, Choi Y-S, Jang W-J, Jung J-W. Improved RRT-Connect Algorithm Based on Triangular Inequality for Robot Path Planning. Sensors. 2021; 21(2):333. https://doi.org/10.3390/s21020333
Chicago/Turabian StyleKang, Jin-Gu, Dong-Woo Lim, Yong-Sik Choi, Woo-Jin Jang, and Jin-Woo Jung. 2021. "Improved RRT-Connect Algorithm Based on Triangular Inequality for Robot Path Planning" Sensors 21, no. 2: 333. https://doi.org/10.3390/s21020333
APA StyleKang, J. -G., Lim, D. -W., Choi, Y. -S., Jang, W. -J., & Jung, J. -W. (2021). Improved RRT-Connect Algorithm Based on Triangular Inequality for Robot Path Planning. Sensors, 21(2), 333. https://doi.org/10.3390/s21020333