From 88681884d2282c2a256c8deb0ba83faeda7e0a89 Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 18:12:38 -0400 Subject: [PATCH 1/9] Create non_a_star_planning.md --- wiki/planning/non_a_star_planning.md | 106 +++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 wiki/planning/non_a_star_planning.md diff --git a/wiki/planning/non_a_star_planning.md b/wiki/planning/non_a_star_planning.md new file mode 100644 index 00000000..41bc280f --- /dev/null +++ b/wiki/planning/non_a_star_planning.md @@ -0,0 +1,106 @@ +--- +# Jekyll 'Front Matter' goes here. Most are set by default, and should NOT be +# overwritten except in special circumstances. +# You should set the date the article was last updated like this: +date: 2020-05-11 # YYYY-MM-DD +# This will be displayed at the bottom of the article +# You should set the article's title: +title: Title goes here +# The 'title' is automatically displayed at the top of the page +# and used in other parts of the site. +--- +This template acts as a tutorial on writing articles for the Robotics Knowledgebase. In it we will cover article structure, basic syntax, and other useful hints. Every tutorial and article should start with a proper introduction. + +This goes above the first subheading. The first 100 words are used as an excerpt on the Wiki's Index. No images, HTML, or special formating should be used in this section as it won't be displayed properly. + +If you're writing a tutorial, use this section to specify what the reader will be able to accomplish and the tools you will be using. If you're writing an article, this section should be used to encapsulate the topic covered. Use Wikipedia for inspiration on how to write a proper introduction to a topic. + +In both cases, tell them what you're going to say, use the sections below to say it, then summarize at the end (with suggestions for further study). + +## First subheading +Use this section to cover important terms and information useful to completing the tutorial or understanding the topic addressed. Don't be afraid to include to other wiki entries that would be useful for what you intend to cover. Notice that there are two \#'s used for subheadings; that's the minimum. Each additional sublevel will have an added \#. It's strongly recommended that you create and work from an outline. + +This section covers the basic syntax and some rules of thumb for writing. + +### Basic syntax +A line in between create a separate paragraph. *This is italicized.* **This is bold.** Here is [a link](/). If you want to display the URL, you can do it like this . + +> This is a note. Use it to reinforce important points, especially potential show stoppers for your readers. It is also appropriate to use for long quotes from other texts. + + +#### Bullet points and numbered lists +Here are some hints on writing (in no particular order): +- Focus on application knowledge. + - Write tutorials to achieve a specific outcome. + - Relay theory in an intuitive way (especially if you initially struggled). + - It is likely that others are confused in the same way you were. They will benefit from your perspective. + - You do not need to be an expert to produce useful content. + - Document procedures as you learn them. You or others may refine them later. +- Use a professional tone. + - Be non-partisan. + - Characterize technology and practices in a way that assists the reader to make intelligent decisions. + - When in doubt, use the SVOR (Strengths, Vulnerabilities, Opportunities, and Risks) framework. + - Personal opinions have no place in the Wiki. Do not use "I." Only use "we" when referring to the contributors and editors of the Robotics Knowledgebase. You may "you" when giving instructions in tutorials. +- Use American English (for now). + - We made add support for other languages in the future. +- The Robotics Knowledgebase is still evolving. We are using Jekyll and GitHub Pages in and a novel way and are always looking for contributors' input. + +Entries in the Wiki should follow this format: +1. Excerpt introducing the entry's contents. + - Be sure to specify if it is a tutorial or an article. + - Remember that the first 100 words get used else where. A well written excerpt ensures that your entry gets read. +2. The content of your entry. +3. Summary. +4. See Also Links (relevant articles in the Wiki). +5. Further Reading (relevant articles on other sites). +6. References. + +#### Code snippets +There's also a lot of support for displaying code. You can do it inline like `this`. You should also use the inline code syntax for `filenames` and `ROS_node_names`. + +Larger chunks of code should use this format: +``` +def recover_msg(msg): + + // Good coders comment their code for others. + + pw = ProtocolWrapper() + + // Explanation. + + if rec_crc != calc_crc: + return None +``` +This would be a good spot further explain you code snippet. Break it down for the user so they understand what is going on. + +#### LaTex Math Support +Here is an example MathJax inline rendering $ \phi(x\|y) $ (note the additional escape for using \|), and here is a block rendering: +$$ \frac{1}{n^{2}} $$ + +#### Images and Video +Images and embedded video are supported. + +![Put a relevant caption here](assets/images/Hk47portrait-298x300.jpg) + +{% include video id="8P9geWwi9e0" provider="youtube" %} + +{% include video id="148982525" provider="vimeo" %} + +The video id can be found at the end of the URL. In this case, the URLs were +`https://www.youtube.com/watch?v=8P9geWwi9e0` +& `https://vimeo.com/148982525`. + +## Summary +Use this space to reinforce key points and to suggest next steps for your readers. + +## See Also: +- Links to relevant material within the Robotics Knowledgebase go here. + +## Further Reading +- Links to articles of interest outside the Wiki (that are not references) go here. + +## References +- Links to References go here. +- References should be in alphabetical order. +- References should follow IEEE format. +- If you are referencing experimental results, include it in your published report and link to it here. From 9a4c61692fe77a484c248a1cc34548d5f87c8b51 Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 18:13:44 -0400 Subject: [PATCH 2/9] Rename non_a_star_planning.md to non-a-star-planning.md --- wiki/planning/{non_a_star_planning.md => non-a-star-planning.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename wiki/planning/{non_a_star_planning.md => non-a-star-planning.md} (100%) diff --git a/wiki/planning/non_a_star_planning.md b/wiki/planning/non-a-star-planning.md similarity index 100% rename from wiki/planning/non_a_star_planning.md rename to wiki/planning/non-a-star-planning.md From 3cefa6cc75283dbf662388ba0ece32f80e2babfa Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 18:33:20 -0400 Subject: [PATCH 3/9] Team A 2024: Theta Star Images --- assets/images/theta_star_explor.png | Bin 0 -> 34099 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/theta_star_explor.png diff --git a/assets/images/theta_star_explor.png b/assets/images/theta_star_explor.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe4e049e1764b057bdee46caa6c0600aa1428c7 GIT binary patch literal 34099 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 literal 0 HcmV?d00001 From ec1d94df9b9bc2877adb85888a169e5cee95c9b9 Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 18:33:58 -0400 Subject: [PATCH 4/9] Update non-a-star-planning.md --- wiki/planning/non-a-star-planning.md | 41 ++++++++++++++++------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/wiki/planning/non-a-star-planning.md b/wiki/planning/non-a-star-planning.md index 41bc280f..1b7b0278 100644 --- a/wiki/planning/non-a-star-planning.md +++ b/wiki/planning/non-a-star-planning.md @@ -1,31 +1,36 @@ --- -# Jekyll 'Front Matter' goes here. Most are set by default, and should NOT be -# overwritten except in special circumstances. -# You should set the date the article was last updated like this: -date: 2020-05-11 # YYYY-MM-DD -# This will be displayed at the bottom of the article -# You should set the article's title: +date: {} title: Title goes here -# The 'title' is automatically displayed at the top of the page -# and used in other parts of the site. +published: true --- -This template acts as a tutorial on writing articles for the Robotics Knowledgebase. In it we will cover article structure, basic syntax, and other useful hints. Every tutorial and article should start with a proper introduction. +## Introduction +This wiki aims to build on the already excellent A* implementation guide by providing information about different planning approaches to counter the pitfalls of standard A* when applied to physical robots. In the scope of this article are two popular extensions - Theta Star and Safe Interval Path Planning (SIPP) that each have their strengths and weaknesses. -This goes above the first subheading. The first 100 words are used as an excerpt on the Wiki's Index. No images, HTML, or special formating should be used in this section as it won't be displayed properly. +Theta Star planning is a pathfinding algorithm that is an extension of the popular A* algorithm. The key difference between Theta Star and A* is that Theta Star uses a line-of-sight check to reduce the number of nodes that need to be explored during pathfinding. The line-of-sight check is a simple test to determine if a path between two points is blocked by any obstacles. If there is a clear line of sight, the path is considered free and the algorithm can move on to the next node. If there is an obstacle in the way, the algorithm needs to generate a new path around it. -If you're writing a tutorial, use this section to specify what the reader will be able to accomplish and the tools you will be using. If you're writing an article, this section should be used to encapsulate the topic covered. Use Wikipedia for inspiration on how to write a proper introduction to a topic. +Safe interval path planning is a method of planning robot motion that ensures collision avoidance and safety. It involves dividing the robot's workspace into safe intervals or regions, where the robot can move without colliding with obstacles. The path planning algorithm then generates a safe path by connecting these intervals. This approach ensures that the robot's motion is safe and collision-free. Safe interval path planning is essential for applications where robots are required to work in close proximity to humans or other objects. -In both cases, tell them what you're going to say, use the sections below to say it, then summarize at the end (with suggestions for further study). +## Overview of Theta* Algorithm -## First subheading -Use this section to cover important terms and information useful to completing the tutorial or understanding the topic addressed. Don't be afraid to include to other wiki entries that would be useful for what you intend to cover. Notice that there are two \#'s used for subheadings; that's the minimum. Each additional sublevel will have an added \#. It's strongly recommended that you create and work from an outline. +Theta* algorithm is a pathfinding algorithm that is an extension of the A* algorithm. It is used to find the shortest path between two points in a 2D grid-based environment. -This section covers the basic syntax and some rules of thumb for writing. +#### Important Terms +Here are the key steps and important terms involved in the Theta* algorithm: +- **Grid Map**: A 2D grid-based environment that represents the space in which the robot moves. Each cell in the grid represents a possible position that the robot can occupy. -### Basic syntax -A line in between create a separate paragraph. *This is italicized.* **This is bold.** Here is [a link](/). If you want to display the URL, you can do it like this . +- **Heuristics**: A function used to estimate the distance between two points in the grid map. The heuristic function used in Theta* is often the Euclidean distance or Manhattan distance. For even better results, it is recommended to use a pre-computed Dijkstra map since it accounts for static obstacles if the map is known -> This is a note. Use it to reinforce important points, especially potential show stoppers for your readers. It is also appropriate to use for long quotes from other texts. +- **Open List**: A list of nodes that need to be explored during pathfinding. Each node in the list represents a position in the grid map and its associated cost. + +- **Closed List**: A list of nodes that have already been explored during pathfinding. + +- **Start and Goal Nodes**: The starting and ending points in the grid map between which the shortest path needs to be found. + +- **Line of Sight Check**: A test that determines if there is a clear path between two points. If a clear path exists, the algorithm can "shortcut" between two nodes, reducing the number of nodes that need to be explored. In practice, this can be implemented as using Bresenham's line drawing equation borrowed from Computer Graphics to approximate lines on 2D grids, with possible speed ups. + +Theta* should always give paths with lower cost than those from standard A*, since the line-of-sight check can only shorten paths. In practice, the paths tend to mimic visibility graphs around obstacles + +![Node Exploration Behaviour of Theta Star](assets/images/theta_star_explor.png) #### Bullet points and numbered lists From a3e770077fca1d8060b1b2f72d1d0f4d43fa4ab3 Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 18:34:10 -0400 Subject: [PATCH 5/9] Update non-a-star-planning.md From 60c5b899945563e0fe655c68a752bee359187a4b Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 18:36:02 -0400 Subject: [PATCH 6/9] Create Screenshot from 2023-05-03 18-35-22.png --- assets/images/theta_vs_astar.png | Bin 0 -> 8705 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/theta_vs_astar.png diff --git a/assets/images/theta_vs_astar.png b/assets/images/theta_vs_astar.png new file mode 100644 index 0000000000000000000000000000000000000000..ee7e4dc97f20caf692ffa74a5b7551524708194c GIT binary patch literal 8705 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 Date: Wed, 3 May 2023 19:04:53 -0400 Subject: [PATCH 7/9] Create sipp_timeline.png --- assets/images/sipp_timeline.png | Bin 0 -> 7456 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/sipp_timeline.png diff --git a/assets/images/sipp_timeline.png b/assets/images/sipp_timeline.png new file mode 100644 index 0000000000000000000000000000000000000000..fd207f2d4574a6f937303ad69b831e2577d4dd8c GIT binary patch literal 7456 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 eFTea+wEiE6cAxAI@2Efk0000*Q literal 0 HcmV?d00001 From aaf5ea78206f4d89fc2355712cc263a1d9bf6c16 Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 19:05:08 -0400 Subject: [PATCH 8/9] Create sipp_behaviour.png --- assets/images/sipp_behaviour.png | Bin 0 -> 16492 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/images/sipp_behaviour.png diff --git a/assets/images/sipp_behaviour.png b/assets/images/sipp_behaviour.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b9ad2d7e4ec5cf271d4464056a43e3c9473224 GIT binary patch literal 16492 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 literal 0 HcmV?d00001 From d35977d7cefaeeb57a084f9ac29017f836efd16a Mon Sep 17 00:00:00 2001 From: Dhanvi Sreenivasan Date: Wed, 3 May 2023 23:27:09 -0400 Subject: [PATCH 9/9] Team A 2024 - Extensions to A* for Dynamic Planning --- wiki/planning/non-a-star-planning.md | 124 ++++++++++++++------------- 1 file changed, 64 insertions(+), 60 deletions(-) diff --git a/wiki/planning/non-a-star-planning.md b/wiki/planning/non-a-star-planning.md index 1b7b0278..d1d7fb18 100644 --- a/wiki/planning/non-a-star-planning.md +++ b/wiki/planning/non-a-star-planning.md @@ -1,6 +1,6 @@ --- date: {} -title: Title goes here +title: Extensions To A* for Dynamic Planning published: true --- ## Introduction @@ -14,7 +14,7 @@ Safe interval path planning is a method of planning robot motion that ensures co Theta* algorithm is a pathfinding algorithm that is an extension of the A* algorithm. It is used to find the shortest path between two points in a 2D grid-based environment. -#### Important Terms +### Important Terms Here are the key steps and important terms involved in the Theta* algorithm: - **Grid Map**: A 2D grid-based environment that represents the space in which the robot moves. Each cell in the grid represents a possible position that the robot can occupy. @@ -30,82 +30,86 @@ Here are the key steps and important terms involved in the Theta* algorithm: Theta* should always give paths with lower cost than those from standard A*, since the line-of-sight check can only shorten paths. In practice, the paths tend to mimic visibility graphs around obstacles -![Node Exploration Behaviour of Theta Star](assets/images/theta_star_explor.png) +Node Exploration Behaviour of Theta* | Path Comparison +:-------------------------:|:-------------------------: +![Node Exploration Behaviour of Theta Star]({{site.baseurl}}/assets/images/theta_star_explor.png) | ![theta_vs_astar.png]({{site.baseurl}}/assets/images/theta_vs_astar.png) -#### Bullet points and numbered lists -Here are some hints on writing (in no particular order): -- Focus on application knowledge. - - Write tutorials to achieve a specific outcome. - - Relay theory in an intuitive way (especially if you initially struggled). - - It is likely that others are confused in the same way you were. They will benefit from your perspective. - - You do not need to be an expert to produce useful content. - - Document procedures as you learn them. You or others may refine them later. -- Use a professional tone. - - Be non-partisan. - - Characterize technology and practices in a way that assists the reader to make intelligent decisions. - - When in doubt, use the SVOR (Strengths, Vulnerabilities, Opportunities, and Risks) framework. - - Personal opinions have no place in the Wiki. Do not use "I." Only use "we" when referring to the contributors and editors of the Robotics Knowledgebase. You may "you" when giving instructions in tutorials. -- Use American English (for now). - - We made add support for other languages in the future. -- The Robotics Knowledgebase is still evolving. We are using Jekyll and GitHub Pages in and a novel way and are always looking for contributors' input. -Entries in the Wiki should follow this format: -1. Excerpt introducing the entry's contents. - - Be sure to specify if it is a tutorial or an article. - - Remember that the first 100 words get used else where. A well written excerpt ensures that your entry gets read. -2. The content of your entry. -3. Summary. -4. See Also Links (relevant articles in the Wiki). -5. Further Reading (relevant articles on other sites). -6. References. -#### Code snippets -There's also a lot of support for displaying code. You can do it inline like `this`. You should also use the inline code syntax for `filenames` and `ROS_node_names`. -Larger chunks of code should use this format: -``` -def recover_msg(msg): +### Algorithm: Key Steps - // Good coders comment their code for others. +The underlying algorithm for Theta* only differs from A* in one key step - the line of sight check to shorten the underlying paths. A simple outline is as follows: - pw = ProtocolWrapper() +- Initialize the start node and add it to the open list. - // Explanation. +- While the open list is not empty, select the node with the lowest cost from the open list. - if rec_crc != calc_crc: - return None -``` -This would be a good spot further explain you code snippet. Break it down for the user so they understand what is going on. +- If the selected node is the goal node, terminate the algorithm and return the path. -#### LaTex Math Support -Here is an example MathJax inline rendering $ \phi(x\|y) $ (note the additional escape for using \|), and here is a block rendering: -$$ \frac{1}{n^{2}} $$ +- Otherwise, expand the selected node by generating its neighboring nodes. -#### Images and Video -Images and embedded video are supported. +- For each neighbor, check if a line of sight exists between the selected node and the neighbor. If it does, compute the cost of the path using the line-of-sight shortcut. Otherwise, compute the cost of the path without the shortcut. + +- Update the neighbor's cost and parent if a better path has been found. + +- Add the neighbor to the open list if it is not already on the list. + +- Move the selected node to the closed list. + +Once this process concludes, the path is traced back by recursively looking up the parents starting from the goal node back to the start node. This will carry all the neat theoretical guarantees of A* such as optimality and completeness assuming the hueristic is consistent and admissible. + + +### Pros and Cons +Pros | Cons +:-------------------------:|:-------------------------: +Lower cost of paths | Longer compute time due to line of sight check +Paths are easy to navigate as a set of straight line segments | Moves away from neat grid discretization +Easy to extend to higher dimensionalities | Still limited by underlying grid representation + +## Overview of Safe Interval Path Planning + +Unlike with Theta*, SIPP relies on abstracting the underlying 2D lattice and obstacles as a safety graph. This process requires some knowledge of static and dynamic obstacles, using which safe regions are created and connected by edges if a path exists between them. These 'regions' are actually time intervals over specific map regions, such that if the robot is within the given area inside the time interval, it is guranteed to be safe from collision. + +Using this new graph abstraction, we can then apply standard A* on this new graph to produce paths that do not collide, handle dynamic obstacles(given sufficient information from some high level obstacle detection stack) and performs much faster than space-time A* given that intervals are finite compared to discretized time searches. + +### Important Terms +Here are the key steps involved in the Safe Interval Path Planning algorithm: +- **Safe Interval Generation**: The first step of the SIPP algorithm is to divide the workspace into safe intervals, which are regions where the robot can move without colliding with obstacles. This is done by considering the robot's shape and size and generating safe intervals around each obstacle. + +- **Interval Graph Construction**: Once the safe intervals are generated, the next step is to construct an interval graph that represents the connectivity of the safe intervals. In the interval graph, each safe interval is represented by a node, and there is an edge between two nodes if the corresponding safe intervals are connected and the robot can move between them without colliding with obstacles. + +- **Shortest Path Computation**: The third step of the SIPP algorithm is to find the shortest path through the interval graph that connects the start and goal positions while avoiding obstacles. This is done using a path planning algorithm, such as A* or Dijkstra's algorithm, which searches for the path with the lowest cost in the interval graph. + +- **Trajectory Computation**: Once the shortest path is found, the next step is to compute the trajectory of the robot along the path. This involves computing the exact position of the robot at each time step along the path, taking into account the robot's size and shape, the safe intervals, and the obstacles in the workspace. + +- **Collision Checking**: During trajectory computation, it is important to check for collisions between the robot and obstacles in the workspace. If a collision is detected, the trajectory is adjusted to avoid the obstacle and stay within the safe intervals. + +- **Dynamic Obstacle Handling**: The SIPP algorithm also accounts for dynamic obstacles in the workspace, such as moving people or vehicles. To handle dynamic obstacles, the trajectory is continuously updated in real-time to avoid collisions and stay within the safe intervals. + +SIPP Schematic +--- +![sipp_timeline.png]({{site.baseurl}}/assets/images/sipp_timeline.png) + +SIPP Behaviour +--- +![sipp_behaviour.png]({{site.baseurl}}/assets/images/sipp_behaviour.png) -![Put a relevant caption here](assets/images/Hk47portrait-298x300.jpg) -{% include video id="8P9geWwi9e0" provider="youtube" %} -{% include video id="148982525" provider="vimeo" %} -The video id can be found at the end of the URL. In this case, the URLs were -`https://www.youtube.com/watch?v=8P9geWwi9e0` -& `https://vimeo.com/148982525`. ## Summary -Use this space to reinforce key points and to suggest next steps for your readers. +Theta* and SIPP (Safe Interval Path Planning) are two popular algorithms used in robotic motion planning. Theta* is an improvement over A* algorithm that reduces the number of nodes expanded in the search tree by using a technique called "line-of-sight checking". On the other hand, SIPP is a method that generates safe intervals, constructs an interval graph, finds the shortest path through the graph, computes the trajectory of the robot along the path, and handles dynamic obstacles in real-time. By taking into account the robot's shape and size, SIPP ensures safe and collision-free motion planning for robots in complex and dynamic environments. -## See Also: -- Links to relevant material within the Robotics Knowledgebase go here. +Over the course of this article, we explored the key implementation details of each of these planners, their use cases and strengths and weaknesses. Both of them give significant improvements to Space-Time A* in terms of handling dynamic obstacles and path quality, but at the cost of increased computational complexity and time. -## Further Reading -- Links to articles of interest outside the Wiki (that are not references) go here. +Future work can include plugins for the same that are readily integrated into popular ROS-based packages like MoveIt!, allowing users to simply tune the parameters based on their usecase and use it on a variety of diverse systems ## References -- Links to References go here. -- References should be in alphabetical order. -- References should follow IEEE format. -- If you are referencing experimental results, include it in your published report and link to it here. +- Daniel, K., Nash, A., Koenig, S., & Felner, A. (2010). Theta*: Any-angle path planning on grids. Journal of Artificial Intelligence Research, 39, 533-579. +- Atzmon, D., Felner, A., Stern, R., Wagner, G., Barták, R., & Zhou, N. F. (2017). k-Robust multi-agent path finding. In Proceedings of the International Symposium on Combinatorial Search (Vol. 8, No. 1, pp. 157-158). +- Phillips, M., & Likhachev, M. (2011, May). Sipp: Safe interval path planning for dynamic environments. In 2011 IEEE international conference on robotics and automation (pp. 5628-5635). IEEE +- Lu, Z., Zhang, K., He, J., & Niu, Y. (2016). Applying k-means clustering and genetic algorithm for solving mtsp. In Bio-inspired Computing–Theories and Applications: 11th International Conference, BIC-TA 2016, Xi'an, China, October 28-30, 2016, Revised Selected Papers, Part II 11 (pp. 278-284). Springer Singapore. +- Nash, A., Koenig, S., & Tovey, C. (2010, July). Lazy Theta*: Any-angle path planning and path length analysis in 3D. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 24, No. 1, pp. 147-154).