Experimenting with PRMs and RRTs

Experimenting with PRMs and RRTs


  1. Playing with PRMs

    In this assignment, you will learn more about PRM through practical experimentation. This assignment aims to observe and understand how the quality of a roadmap can be affected when modifying its features. In this assignment, you will gain more familiarity with PPL and define motion planning problems through XML files. To be more specific, in this lesson, you build several roadmaps by varying (1) the number of samples (vertices) and (2) the number of edges. Then you will observe the performance of those roadmaps in two different environments. Follow the following directions:

    1. Go to ppl/Examples/CCAssignment2/ProblemDefinition.xml. Here you will find the XML file where our baseline problem is defined. In src/Assignment2/Env you will find the two environments we will use, Topo and Narrow.
    2. We are ready to run the first experiment at this point. We will start using the Topo environment and the baseline PRM, which is already set in our problem XML file. This baseline consists of using 25 samples, where each sample is attempted no more than 10 times. You will find these values defined in the <BasicPRM> node. As well, the baseline produces at most 5 edges on each vertex. You will find this value in the <NeighborhoodFinders> node. So go ahead and run the baseline experiment. In your terminal, run ./ppl_mp -f Examples/CCAssignment2/ProblemDefinition.xml (assuming you are located in src).
    3. Now that you have run the first experiment, you will find a roadmap (*.map) and path (*.path) files in the CCAssignment2 directory. Let's use vizmo to visualize those files and see how your roadmap looks. In your terminal, run ./vizmo++, then click on File, then Open, and select both the map and path files. Now, browse the env file, select CCAssignment2/Env/Topo.env, and load the environment. You should see the built roadmap and the found path.
    4. Observe in detail the different features of your roadmap (you can take a screenshot). Observe the number of vertices and the number of edges. Are they helpful in representing the connectivity of the environment?
    5. In the CCAssignment2 directory, you will also file a statistics file (*.stat) where different data of your experiment is printed. Find the total planning time, which is named "BasicPRM::BasicPRM1::Run". Record this value for further comparison with the other PRMs.
    6. Now you are done running and analyzing the data of the baseline PRM, now you will repeat steps (3,4,5,6) by modifying the baseline in the following different settings (a) Incrementing to 100 samples, (b) Incrementing to 10 edges, and (c) Incrementing to both 100 samples and 10 edges.
    7. At this point, we are done with using the Topo environment. Look for the <Environment> node in your XML file and switch to the Narrow environment. You will follow the same procedure you made with the Topo environment. Take screenshots of the different paths and roadmaps and record the different planning times.
    8. Finally, we are done with testing four different roadmaps in two different environments. Answer the following questions and submit your answers on Canvas.
      • What are your conclusions?
      • Is the roadmaps' performance the same in both roadmaps? If not, why do you believe they perform differently?
      • Is there any relationship between the number of vertices/edges and the planning times?
  2. Playing with RRTs

    We already learned how building a graph (or roadmap) over the c-space helps us approximate and represent the free c-space. We also learned how varying the parameters of our roadmap defines its quality and connectivity. Now is the time to try a different way to explore and approximate the c-space. Instead of a graph, we will use a tree to traverse the c-space, where the tree's root will represent the start position, and the goal will be reached when growing the tree. Go ahead over the following steps to learn more about one of the most fundamental methods in sampling-based motion planning, Rapidly-exploring Random Tree (RRT).

    1. Complete the reading assignment: Rapidly-exploring Random Trees: A new tool for path planning, Steven M. LaValle.
    2. Now, open the ProblemDefinition.xml file again, look for the node <Solver> and switch from "BasicPRM" to "RRT". Now you will be able to exercise RRT in the Topo and Narrow environments. Go ahead and run one experiment on each environment.
    3. Look at the rdmp, path, and stat output files. Answer the following questions and submit your answers on Canvas:
      • What do you observe?
      • Is the RRT performance similar in the two environments? If not, what do you think is different?
      • Describe a few differences between PRM and RRT.
      • Which method do you believe performed better?
      • What are the pros and cons of each method?