From 407c680b3dcfaa113d2d880ac81c9a683b7c4abf Mon Sep 17 00:00:00 2001 From: ceelo777 Date: Sun, 24 Nov 2019 17:07:48 -0500 Subject: [PATCH 1/3] Added my design document for my issue --- documents/design/d_star_lite.md | 105 ++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 documents/design/d_star_lite.md diff --git a/documents/design/d_star_lite.md b/documents/design/d_star_lite.md new file mode 100644 index 000000000..0e1429ce3 --- /dev/null +++ b/documents/design/d_star_lite.md @@ -0,0 +1,105 @@ +# Project Title + +*Issue #567* +(What GitHub issue is associated with this project) + +**Author:** +- Christopher Lo + +## The Problem + +What is the problem you are trying to solve? Why is it important to solve this problem? +What is the end goal of this project? This section should similar to the body of the GitHub +issue but include more details about it. This will be a qualitative description of the +project. Use as many details you can to describe the requirements of the project. +*(This is similar to the Motivation section of the other design documents.)* + +Currently, Jessii, our IGVC robot, uses A* in order to plan its path through the obstacle +course. This is all done with ROS package move_base_flex, which serves to allow the robot to +utilize an enhanced version of the planner, controller, and recovery plugin ROS interfaces. +However, there is a better path planner algorithm, D* lite, which builds upon the Lifelong +Planning A* (LPA) algorithm and D* algorithms. Thus, to resolve this issue, I will be replacing +the currently used A* algorithm with the better D* lite algorithm in order to improve Jessii's +path planning on the obstacle course. + +## Proposed Solution + +- How are you going to solve this problem? +- What are the steps you need to take to complete the project? +- Break down the problem above into smaller, individual components with specific metrics of success +- You can think of this section as a quantitative description of the project +- Each bullet should represent a single action + - Use sub-bullets to provide more details and justifications for each step +- *(Replace these bullet points with your own)* + +_It's OK if your approach changes later in the project as you learn more. Treat this like +a road map that you can come back to to figure out what to work on next. If you aren't sure about the +technical details, make sure your ideas are clear. It's also OK to come up with a couple solutions +and decide which to pursue later. There should be some justification with your solution (i.e. how +does each step address part of the problem above)._ + +To solve this problem, I am going to: + +- Read a research paper on D* lite by researchers Sven Koenig and +Maxim Likhachev in order to understand the technical details behind Lifelong Planning A* and D* Lite for +robot navigation in unknown terrain, which essentially includes goal-directed navigation and the mapping of +unknown terrain, concepts that will be useful to understand when implementingthe D* lite algorithm. + +- Read up on move_base_flex, a ROS package responsible for the planning, control, and recovery features +for Jessii. + +- Read up on the parameters used by the method that will contain the D* lite algorithm implementation within +the software base. + +- Create an implementation using the parameters and concepts learned from the D* lite research paper. + +- Run tests using a simulator and see if the planner works better than the A* algorithm currently in place. + +## Questions & Research + +Are there things you are unsure about or don't know? What do you need to research to be able to +complete this project? If you need information from the mechanical or electrical subteams, +be sure to describe that here. If your solution requires more research to implement, descibe +what kind of topics you need look at. Link any research papers/articles that you find here. + +**Of course, if you have _any_ questions or concerns, feel free to bring them up at any time. +If you ever feel lost or don't know what to do or work on, Oswin or any old software member +can help you out. You are not expected to know every technical detail about the project. Expressing +what you don't know will make it easier to do research and ask for help.** + +Currently, I do not know much about D* Lite (which is why I will be reading the research paper to extract +information that will be essential for creating a working implementation of the algorithm). In addition, +I will need to read up on A* and LPA (Lifelong Planning A*) in order to understand why D* Lite is better than +these algorithms and how I can seamlessly reap the benefits. + +Link to D* Lite paper: https://aaai.org/Papers/AAAI/2002/AAAI02-072.pdf + +## Overall Scope + +### Affected Packages + +- What parts of the software will you have to change (if any)? +- Which packages are relevant to the success of the project? +- Your first step of the project should be reviewing the relevant packages and code + +The parts of the software that I will have to change are the move_base_flex wrapper_global_planner.h file, +which contains the makePlan() method that will ultimately be responsible for holding my D* lite algorithm +implementation. I will also be editing the planner core file within the navigation folder in order to render +a map of the unknown terrain that Jessii will be crossing and using to calculate a path with the D* lite +algorithm. + +### Schedule + +Subtask 1 (11/24/2019): Read up on the D* Lite research paper. (11/24/2019) + +Subtask 2 (11/31/2019): Read up on move_base_flex package and methods used in the body of the method containing the +D* Lite algorithm. + +Subtask 3 (01/01/2020): Create an implementation of the D* Lite algorithm in the method. (01/01/2020) + +Subtask 4 (01/10/2020): Run tests on the newly implemented D* Lite algorithm using a simulator or actual Jessii. + +Code Review (1/15/2020): Include an estimate for when your code/result will be ready to review + +*(School work will change over the semester and software often takes longer than you expect to write, +so don't worry if you fall behind. Just be sure to update this document with your progress.)* From 1e72bb974af3525c72d4affdd4af1a80b4a43b0b Mon Sep 17 00:00:00 2001 From: ceelo777 Date: Wed, 8 Jan 2020 19:09:17 -0500 Subject: [PATCH 2/3] Added my design document for D* lite --- documents/design/d_star_lite.md | 40 +-------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/documents/design/d_star_lite.md b/documents/design/d_star_lite.md index 0e1429ce3..35adb0eb6 100644 --- a/documents/design/d_star_lite.md +++ b/documents/design/d_star_lite.md @@ -8,12 +8,6 @@ ## The Problem -What is the problem you are trying to solve? Why is it important to solve this problem? -What is the end goal of this project? This section should similar to the body of the GitHub -issue but include more details about it. This will be a qualitative description of the -project. Use as many details you can to describe the requirements of the project. -*(This is similar to the Motivation section of the other design documents.)* - Currently, Jessii, our IGVC robot, uses A* in order to plan its path through the obstacle course. This is all done with ROS package move_base_flex, which serves to allow the robot to utilize an enhanced version of the planner, controller, and recovery plugin ROS interfaces. @@ -24,22 +18,6 @@ path planning on the obstacle course. ## Proposed Solution -- How are you going to solve this problem? -- What are the steps you need to take to complete the project? -- Break down the problem above into smaller, individual components with specific metrics of success -- You can think of this section as a quantitative description of the project -- Each bullet should represent a single action - - Use sub-bullets to provide more details and justifications for each step -- *(Replace these bullet points with your own)* - -_It's OK if your approach changes later in the project as you learn more. Treat this like -a road map that you can come back to to figure out what to work on next. If you aren't sure about the -technical details, make sure your ideas are clear. It's also OK to come up with a couple solutions -and decide which to pursue later. There should be some justification with your solution (i.e. how -does each step address part of the problem above)._ - -To solve this problem, I am going to: - - Read a research paper on D* lite by researchers Sven Koenig and Maxim Likhachev in order to understand the technical details behind Lifelong Planning A* and D* Lite for robot navigation in unknown terrain, which essentially includes goal-directed navigation and the mapping of @@ -57,16 +35,6 @@ the software base. ## Questions & Research -Are there things you are unsure about or don't know? What do you need to research to be able to -complete this project? If you need information from the mechanical or electrical subteams, -be sure to describe that here. If your solution requires more research to implement, descibe -what kind of topics you need look at. Link any research papers/articles that you find here. - -**Of course, if you have _any_ questions or concerns, feel free to bring them up at any time. -If you ever feel lost or don't know what to do or work on, Oswin or any old software member -can help you out. You are not expected to know every technical detail about the project. Expressing -what you don't know will make it easier to do research and ask for help.** - Currently, I do not know much about D* Lite (which is why I will be reading the research paper to extract information that will be essential for creating a working implementation of the algorithm). In addition, I will need to read up on A* and LPA (Lifelong Planning A*) in order to understand why D* Lite is better than @@ -78,10 +46,6 @@ Link to D* Lite paper: https://aaai.org/Papers/AAAI/2002/AAAI02-072.pdf ### Affected Packages -- What parts of the software will you have to change (if any)? -- Which packages are relevant to the success of the project? -- Your first step of the project should be reviewing the relevant packages and code - The parts of the software that I will have to change are the move_base_flex wrapper_global_planner.h file, which contains the makePlan() method that will ultimately be responsible for holding my D* lite algorithm implementation. I will also be editing the planner core file within the navigation folder in order to render @@ -99,7 +63,5 @@ Subtask 3 (01/01/2020): Create an implementation of the D* Lite algorithm in the Subtask 4 (01/10/2020): Run tests on the newly implemented D* Lite algorithm using a simulator or actual Jessii. -Code Review (1/15/2020): Include an estimate for when your code/result will be ready to review +Code Review (1/15/2020): Code/result will be ready to review -*(School work will change over the semester and software often takes longer than you expect to write, -so don't worry if you fall behind. Just be sure to update this document with your progress.)* From a381dce9195b4ef2e54b107fb49c2e163a8486f1 Mon Sep 17 00:00:00 2001 From: ceelo777 Date: Wed, 8 Jan 2020 19:19:22 -0500 Subject: [PATCH 3/3] Edited my design document for D* Lite --- documents/design/d_star_lite.md | 42 +++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/documents/design/d_star_lite.md b/documents/design/d_star_lite.md index 35adb0eb6..8986a4008 100644 --- a/documents/design/d_star_lite.md +++ b/documents/design/d_star_lite.md @@ -8,20 +8,23 @@ ## The Problem -Currently, Jessii, our IGVC robot, uses A* in order to plan its path through the obstacle -course. This is all done with ROS package move_base_flex, which serves to allow the robot to -utilize an enhanced version of the planner, controller, and recovery plugin ROS interfaces. -However, there is a better path planner algorithm, D* lite, which builds upon the Lifelong -Planning A* (LPA) algorithm and D* algorithms. Thus, to resolve this issue, I will be replacing -the currently used A* algorithm with the better D* lite algorithm in order to improve Jessii's -path planning on the obstacle course. +- The ROS package move_base_flex serves to allow the robot to utilize an enhanced version of +the planner, controller, and recovery plugin ROS interfaces: + +- There is a better path planner algorithm, D* lite which builds upon the Lifelong +Planning A* (LPA) algorithm and D* algorithms. + +- Thus, to resolve this issue, I will be replacing the currently used A* algorithm with the +better D* lite algorithm in order to improve Jessii's path planning on the obstacle course. ## Proposed Solution - Read a research paper on D* lite by researchers Sven Koenig and Maxim Likhachev in order to understand the technical details behind Lifelong Planning A* and D* Lite for -robot navigation in unknown terrain, which essentially includes goal-directed navigation and the mapping of -unknown terrain, concepts that will be useful to understand when implementingthe D* lite algorithm. +robot navigation in unknown terrain. + +- Includes goal-directed navigation and the mapping of unknown terrain, concepts that will be useful to +understand when implementingthe D* lite algorithm. - Read up on move_base_flex, a ROS package responsible for the planning, control, and recovery features for Jessii. @@ -35,10 +38,11 @@ the software base. ## Questions & Research -Currently, I do not know much about D* Lite (which is why I will be reading the research paper to extract -information that will be essential for creating a working implementation of the algorithm). In addition, -I will need to read up on A* and LPA (Lifelong Planning A*) in order to understand why D* Lite is better than -these algorithms and how I can seamlessly reap the benefits. +- I do not know much about D* Lite (which is why I will be reading the research paper to extract +information that will be essential for creating a working implementation of the algorithm). + +- I will need to read up on A* and LPA (Lifelong Planning A*) in order to understand why D* Lite +is better than these algorithms and how I can seamlessly reap the benefits. Link to D* Lite paper: https://aaai.org/Papers/AAAI/2002/AAAI02-072.pdf @@ -46,11 +50,13 @@ Link to D* Lite paper: https://aaai.org/Papers/AAAI/2002/AAAI02-072.pdf ### Affected Packages -The parts of the software that I will have to change are the move_base_flex wrapper_global_planner.h file, -which contains the makePlan() method that will ultimately be responsible for holding my D* lite algorithm -implementation. I will also be editing the planner core file within the navigation folder in order to render -a map of the unknown terrain that Jessii will be crossing and using to calculate a path with the D* lite -algorithm. +- The parts of the software that I will have to change are the: + +- move_base_flex wrapper_global_planner.h file containing the makePlan() method that will ultimately be +responsible for holding my D* lite algorithm implementation. + +- Planner core file within the navigation folder in order to render a map of the unknown terrain that Jessii +will be crossing and using to calculate a path with the D* lite algorithm. ### Schedule