PPL Checkout, Compilation, and Execution

PPL Checkout, Compilation, and Execution


  1. Checking out the code

    The next step is to check out the motion planning code. "Checking out" means that you create your own copy from our GitHub repository. You can edit/play with/destroy this copy without affecting other people. Later on, we will see how you can add changes back to the repository by "committing" your changes.

    1. Open up a terminal if one is not already open.
    2. Change your directory to home. Type cd ~.
    3. Make a directory for the PPL Code. Type mkdir PPL. Type cd PPL.
    4. Now that we are in the directory where your copy of the current branch that we use is going to live we can check it out. For this we use a program called GitHub. To check out the code type git clone git@github.com:parasollab/ppl.git. There should be a new directory in PPL called ppl. Type cd ppl.
    5. Check out the crash course branch of ppl. git checkout crash_course
    6. There are several directories here.
      • docs - Contains important code for generating documentation.
      • Examples - Contains example motion planning scenarios.
      • src - Contains all the c++ code for motion planning. This is where everyone works.
      • tests - Contains test cases to validate that our algorithms are working as intended.
  2. Understanding PPL

    The src directory is the heart of PPL. Go into src. Type cd src. The core directories and files include:

    • ConfigurationSpace - Contains important files which define the C-space and mathematic operations of various robot types.
    • Geometry - Contains methods to build the motion planning bodies and different boundary types
    • MPLibrary - Contains all our libraries used to solve motion planning problems. These include:
      • Connectors - Contains files which structure connection strategies, e.g., NeighborhoodConnection.
      • DistanceMetrics - Contains functions to compute distances, e.g., Euclidean.
      • Extenders - Contains methods for growing tree-based planners (RRTs).
      • LocalPlanners - Contains methods to validate simple paths between two Cfgs.
      • MapEvaluators - Contains ways to evaluate the map contruction, such as solving queries.
      • Metrics - Contains various computations on roadmaps, such as connectivity, number of nodes, etc.
      • MPStrategies - Contains strategies for solving the motion planning problem, e.g., BasicPRM and BasicRRT.
      • MPTools - Contains tools that can be used by different classes in the library.
      • NeighborhoodFinders - Contains algorithms to compute neighbors, such as a brute force method (BFNF).
      • PathModifiers - Contains methods for post-processing existing paths.
      • Samplers - Contains methods to generate Cfgs, ex. Uniform, OBPRM, MAPRM, etc.
      • ValidityCheckers - Contains algorithms to determine whether a Cfg is valid or invalid, e.g., collision detection.
    • MPProblem - Contains basic classes such as the Roadmap and MPProblem.
    • Utilities - Contains helpful functions to compute things like angular distance, or setting random seed, etc.
    • Workspace - Contains data structure and files to create and maintain regions of the work space.
    • main.cpp - Contains function main.
  3. Checking out and building the visual tool

    TODO fill this in with instructions for James' new tool

  4. Compiling and running the code

    The next step is learning to compile and run ppl.

    1. If you are not in a terminal, open one up
    2. If you are compiling on your personal computer, follow the instructions in the README.md file for the branch you are compiling. We recommend using conan rather than vcpkg. The first time you compile, also install the dependencies for your operating system. For example, find the readme for the crash_course branch here.
    3. If you are using a lab computer, follow these instructions.
    4. If you run into any problems, check with your grad mentor.