- 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.
- Open up a terminal if one is not already open.
- Change your directory to home. Type cd ~.
- Make a directory for the PPL Code. Type mkdir PPL. Type cd PPL.
- 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.
- Check out the crash course branch of ppl. git checkout crash_course
- 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.
- 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.
-
Checking out and building the visual tool
TODO fill this in with instructions for James' new tool
-
Compiling and running the code
The next step is learning to compile and run ppl.
- If you are not in a terminal, open one up
- 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.
- If you are using a lab computer, follow
these instructions.
- If you run into any problems, check with your grad mentor.