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:
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.
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 https://github.com/personalrobotics/or_fcl.git src/or_fcl
$ . devel/setup.sh
$ 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 setup.sh
for this to take effect.
You can build or_fcl entirely ROS-agnostic by setting the USE_CATKIN
variable:
$ git clone https://github.com/personalrobotics/or_fcl.git
$ 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')
env.SetCollisionChecker(collision_checker)
Any CheckCollision
or CheckSelfCollision
calls on env
will now use FCL
instead of the default collision checker (typically ODE). See
scripts/test.py
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:
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.