OpenRAVE bindings for the Flexible Collision Checking Library (FCL).
C++ Python CMake Shell
Clone or download
Latest commit e58e72e Aug 12, 2016
Failed to load latest commit information.
catkin-env-hooks fix openrave path munging to prepend instead of append to support ove… Jul 21, 2016
scripts Made executable. Mar 19, 2016
src rework baking interface (now callable from python) Apr 30, 2016
tests add failing test case for link/link collision bug Mar 22, 2016
.gitignore Added .travis.yml file. Nov 24, 2015
LICENSE Added LICENSE. Mar 19, 2016 Updated Travis badge from .com to .org. Mar 20, 2016
package.xml Added a Catkin env hook to set OPENRAVE_PLUGINS. Mar 20, 2016


Build Status

OpenRAVE bindings for the Flexible Collision Library (FCL). This package provides an OpenRAVE collision checking plugin that uses FCL to perform collision checks.


This package requires the following dependencies:

Installation Instructions

The CMakeLists.txt file in the root of this repository supports Catkin and standalone CMake builds. See the appropriate section below for installation instructions specific to your environment.

Catkin Instructions

This preferred way of building or_fcl. In this case, you should already have OpenRAVE installed as a system dependency.

$ cd /my/workspace
$ git clone src/or_fcl
$ . devel/
$ catkin_make -DCMAKE_BUILD_TYPE=Release

This will build the OpenRAVE plugins into the share/openrave-0.9/plugins directory in your devel space. If you run catkin_make install the plugin will be installed to the same directory in your install space. In either case, this package registers a Catkin environment hook that adds the installation directory to the OPENRAVE_PLUGINS environment variable. You will need re-source for this to take effect.

Standalone Instructions

You can build or_fcl entirely ROS-agnostic by setting the USE_CATKIN variable:

$ git clone
$ mkdir -p or_fcl/build
$ cd or_fcl/build
$ cmake -DCMAKE_BUILD_TYPE=Release -DUSE_CATKIN:bool=0 ..
$ make
$ make install

This will build the plugin in the share/openrave-0.9/plugins directory inside your ${CMAKE_INSTALL_PREFIX}, which likely defaults to /usr/local. You will need to append this directory to your OPENRAVE_PLUGINS to use it, e.g.

$ export OPENRAVE_PLUGINS="/usr/local/share/openrave-0.9/plugins:${OPENRAVE_PLUGINS}"


Once or_fcl is installed, you can set FCL as your collision checker:

env = openravepy.Environment()
collision_checker = openravepy.RaveCreateCollisionChecker(env, 'fcl')

Any CheckCollision or CheckSelfCollision calls on env will now use FCL instead of the default collision checker (typically ODE). See scripts/ for a working example of using or_fcl to perform a collision check.


The collision checking benchmarks in the or_benchmarks package indicate that or_fcl is significantly (3-5 times) faster than OpenRAVE's included collision checkers for non-trivial queries:

self_collision_results empty_env_collision_results prkitchen_env_results

The performance of a collision checker strongly depends on characteristics of the environment (e.g. types of primitive geometry, convex vs. non-convex meshes, distance between geometries). As such, these benchmarks may not reflect the performance of or_fcl for your application.


You may get this warning when calling RaveCreateCollisionChecker:

[plugindatabase.h:577 Create] Failed to create name fcl, interface collisionchecker

This means that the or_fcl plugin is not in a directory listed in the OPENRAVE_PLUGINS environment variable. Try manually appending the share/openrave-0.9/plugins directory in your CMAKE_INSTALL_PREFIX to the OPENRAVE_PLUGINS environment variable.


or_fcl is licensed under a BSD license. See LICENSE for more information.


or_fcl was developed by the Personal Robotics Lab in the Robotics Institute at Carnegie Mellon University. This plugin was written by Michael Koval with contributions from Chris Dellin and Jennifer King.