Very Short Overview of OMPL (Open Motion Planning Library)

This article is devoted to provide a quick overview before you dive into OMPL.
1. OMPL as starter of your motion planning project
Reliability
OMPL is a very stable baseline for your motion planning development.
Since 2010, from Lydia Kavraki (opens in a new tab)'s Algorithmic Robotics class, OMPL has been actively developed and widely used by robotics researchers (opens in a new tab) over a decade. Its proven reliability led it to be used from famous open-source projects such as moveit (opens in a new tab).
As can be seen here (opens in a new tab), it shows effectiveness across diverse robot systems including robotic arms (moveit!), humanoid (opens in a new tab), and mobile robot (opens in a new tab).
Flexibility by abstraction
When you saw OMPL in many pages (opens in a new tab), you might think that OMPL has its own environmental representation such as mesh or distance field. But it doesn't. Whatever you saw, they are all just wrappers (such as OMPL.app (opens in a new tab))
In OMPL, user might have to define the belows to reflect their mission setup:
- StateValidityChecker (opens in a new tab): whether a state can be reachable when obstacles or bound are considered (there might be more cases). A good example can be found here (opens in a new tab).
- Propagte (opens in a new tab): It is used when checks whether two states can be connected (opens in a new tab) during the tree expansion phase. It is related with 1) whether it is control-possible (e.g., very slow car might not reach far position due to control limit!), or 2) whether the connecting trajectory does not hit obstacles.
2. "Sampling-based" motion planning library
Three categories of motion planning algorithms
Except for reinforcement learning (RL), most motion planning algorithms take one of the three approaches:
- Graph-search planners such as A* and Dijkstra algorithm (opens in a new tab). They are often used when the solution domain is predefined before computing motions (e.g., all path points are expected on a grid).
- Sampling based planners such as RRT, RRT*, PRM (opens in a new tab). This group randomly samples a feasible configuration (e.g., safe positions) after planning is triggered. In general, the planner tries to connect any two configurations by either simple interpolation or control dynamics.
- Optimization based planners such as CHOMP (opens in a new tab) and LQRs (opens in a new tab). They use gradient-based numerical optimization to minimize costs such as integral of acceleration to generate smooth motion, observing some constraints.
Among these, OMPL only supports the second category.
Implementations of sampling based planners
State space vs control space
Before beginning, we should distinguish two terms: state vs control .
State is the result of previous control. For example, the pose of end-effector of a robotic arm can be seen as a state in OMPL, while velocities of the joints as an input.
Two types of planners
As can been seen from this documentation (opens in a new tab), OMPL provides two sub-groups:
- Geometric planners: try to connect two sampled configurations in state space (such as interpolations).
- Control-based planners:
try to connect two sampled configurations by control domain (opens in a new tab).
This requires
propagate
user-implementation to let OMPL know they can reach next state with in control limits.