Papl - Sampling based path planning in Ocaml
Papl is an experiment in the design of sampling based path planning systems.
Path planners are typically implemented for a specific robot simulation system. General as the planning algorithms may be, they are often difficult to reuse outside of the robot system. Inverse kinematics and other algorithms are similarly rewritten scratch for every robot system.
One goal of Papl is to investigate if sampling based path planning algorithms are sufficiently general and powerful that they can be packaged as stand-alone libraries and reused to advantage. Common as this goal may be, Ocaml has some strong tools for expressing the algorithms in type safe and representation invariant ways.
The Papl system consists of a base package called
defines types and algorithms for path planning and a number of
packages that build on top of
papl to solve concrete types of
papl: Base package [API]
papl package has three levels of functionality:
- Fundamentals parts of sampling based algorithms, such as metrics, samplers, and planning space constraints.
- Planning algorithms.
- Planning space types such as arrays, tuples, and rigid body transformations.
The papl module overview shows the dependencies between the modules with each level of functionality drawn in the same color.
papl_image: Image planning
This package contains utilities for planning of paths in images of the type loaded by camlimages.
papl_se: Rigid body planning
This package contains workcells and animation for 2D and 3D rigid body planning.
papl_robwork: Manipulator planning
for RobWork [API]
Papl can be linked with RobWork to solve planning problems for its workcells.
papl_examples: Example programs
The preceeding packages are libraries; this package shows how to use them.
BSD style license.