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 papl that defines types and algorithms for path planning and a number of packages that build on top of papl to solve concrete types of planning problems.

papl: Base package [API]

The papl package has three levels of functionality:

The papl module overview shows the dependencies between the modules with each level of functionality drawn in the same color.

papl_image: Image planning [API]

This package contains utilities for planning of paths in images of the type loaded by camlimages.

papl_se: Rigid body planning [API]

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 [API]

The preceeding packages are libraries; this package shows how to use them.


Bitbucket project page


BSD style license.

Anders Lau Olsen (
Page created Mar 2012, last updated June 2012