Skip to content

OpenRAVE bindings for the Flexible Collision Checking Library (FCL).

License

Notifications You must be signed in to change notification settings

personalrobotics/or_fcl

Repository files navigation

or_fcl

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.

Dependencies

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 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.

Standalone Instructions

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}"

Usage

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.

Benchmarks

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.

Troubleshooting

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.

License

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

Contributors

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.

About

OpenRAVE bindings for the Flexible Collision Checking Library (FCL).

Resources

License

Stars

Watchers

Forks

Packages

No packages published