Installation

Select your operating system:

Ubuntu

Download the OMPL installation script. First, make the script executable:
chmod u+x install-ompl-ubuntu.sh
Next, there are several ways to run this script:
  • ./install-ompl-ubuntu.sh will install the latest release of OMPL without Python bindings
  • ./install-ompl-ubuntu.sh --python will install the latest release of OMPL with Python bindings
  • ./install-ompl-ubuntu.sh --app will install the latest release of OMPL.app with Python bindings
  • ./install-ompl-ubuntu.sh --github will install the main branch of OMPL (this can be combined with the other flags above)
The script downloads and installs OMPL and all dependencies via apt-get & pip and from source. It will ask for your password to install things. The script has been tested on vanilla installs of 16.04 (Xenial) and higher. The Python binding generation requires a lot of RAM; having 6GB or more available is recommended.
Simply type:
apt-get install libompl-dev ompl-demos
Note that this package does not include Python bindings.
Debian packages for OMPL are also found in ROS distributions. Note that these packages do not include Python bindings. To install the ROS version of OMPL you need to add the ROS repository to your list of sources (you have probably have done this already if you are using ROS):
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
and install OMPL:
sudo apt-get update
sudo apt-get install ros-`rosversion -d`-ompl
Please see MoveIt for further information.

Fedora

Simply type:
sudo yum install ompl
Note that this package does not include Python bindings.

Linux (generic)

OMPL requires Boost (version 1.58 or higher), CMake (version 3.5 or higher), and Eigen (version 3.3 or higher). Some additional features are available if ODE is installed. OMPL.app requires in addition Assimp, Open GL libraries and header files, libccd (version 2.0.0 or higher), and FCL (version 0.5.0 or higher). To be able to generate python bindings you need to install the Python library and header files and Py++. The OMPL.app GUI requires PyQt5 (including its OpenGL bindings) and PyOpenGL. Finally, you need a C++14 compiler (g++-5 or newer).

Once the dependencies are installed, OMPL.app can then be compiled like so:

  • Create a build directory and run cmake:
    cd omplapp
    mkdir -p build/Release
    cd build/Release
    cmake ../..
  • Optionally, generate the Python bindings with make -j 4 update_bindings. The Python binding generation requires a lot of RAM; having 6GB or more available is recommended.
  • Compile OMPL.app by typing make -j 4.
  • Optionally, run the test programs by typing make test.
  • Optionally, generate the documentation (i.e., a local copy of this web site) by typing make doc (requires Doxygen and Graphviz to be installed).

The build system includes a number of options that you can enable or disable.

macOS

Install MacPorts and type:
sudo port sync \; install ompl +app
(Omit the +app part if you do not need OMPL.app.) If you want to build OMPL from source instead, you can install just the OMPL dependencies like so:
sudo port install `port -q info --depends ompl | sed 's/,//g'`
or like this if you want to build OMPL.app:
sudo port install `port -q info --depends ompl +app | sed 's/,//g'`
Install Homebrew and type:
brew install ompl
Note that the Homebrew formula does not include Python bindings. You could install all the dependencies for OMPL and the Python bindings and build OMPL from source:
brew install eigen castxml numpy boost-python3 pypy3 flann
Make sure to use Homebrew's python3 in that case by calling cmake like so:
cmake -DPYTHON_EXEC=/usr/local/bin/python3 ...

MS Windows

It is recommended to use vcpkg, a Microsoft-supported package manager for open source software. Once you have vcpkg installed, you can install OMPL like so:
vcpkg install omplapp
(Omit the app part if you only need the OMPL library.) Note that the vcpkg installation does not include Python bindings.