Main Page

From OpenRAVE

Jump to: navigation, search

Contents

Introduction to OpenRAVE - A Planning Architecture for Autonomous Robotics

One of the challenges in developing real-world autonomous robots is the need for integrating and rigorously testing high-level scripting, motion planning, perception, and control algorithms. For this purpose, we introduce an open-source cross-platform software architecture called OpenRAVE, the Open Robotics and Animation Virtual Environment. OpenRAVE is targeted for real-world autonomous robot applications, and includes a seamless integration of 3-D simulation, visualization, planning, scripting and control. A plugin architecture allows users to easily write custom controllers or extend functionality. With OpenRAVE plugins, any planning algorithm, robot controller, or sensing subsystem can be distributed and dynamically loaded at run-time, which frees developers from struggling with monolithic code-bases. Users of OpenRAVE can concentrate on the development of planning and scripting aspects of a problem without having to explicitly manage the details of robot kinematics and dynamics, collision detection, world updates, and robot control. The OpenRAVE architecture provides a flexible interface that can be used in conjunction with other popular robotics packages such as Player and ROS because it is focused on autonomous motion planning and high-level scripting rather than low-level control and message protocols. OpenRAVE also supports a powerful network scripting environment which makes it simple to control and monitor robots and change execution flow during run-time using scripting languages like Octave and Matlab. One of the key advantages of open component architectures is that they enable the robotics research community to easily share and compare algorithms.

Get the sources for OpenRAVE at sourceforge by checking out from the subversion repository. Although there's no official download with a version number yet, the subversion tree is pretty stable. If by any chance there are compilation problems with it, try updating again in an hour.

svn co https://openrave.svn.sourceforge.net/svnroot/openrave openrave

The core OpenRAVE is licenced under the Lesser GPL, which makes it possible for commercial use. The licenses for each of the plugins is up to the plugin authors.

Installation and Setup

Getting Started

Components/Features

Examples/Tutorials

All examples can be found in the ${INSTALL}/share/openrave/examples directory

  • Grasping - How to simulate grasping of objects with OpenRAVE and how to calculate force closure metrics.

  • Working with Sensors - How to implement and use simulated and real sensors like laser range finders and cameras.

  • Hanoi Puzzle - How to solve the Hanoi Puzzle with OpenRAVE scripting.

  • Opening and Closing Doors - Example of how to create a grasp set for any hand that cages the handles of doors, and how to efficiently plan with these grasp sets to open and close doors for any robot. Manipulation with caging increases the configuration spaces of the robot and allows the robot to achieve tasks that would be infeasible without it.

  • Playing Chess - Simple example of a scene and a person moving chess pieces on a chessboard.
  • Environment Cloning - Explains the advantages of cloning environments and goes into parallel execution of planners.

Developer Notes

Default Plugins in Distribution

This is a list of the plugins from the OpenRAVE SourceForge repository and the type of interfaces they offer.

Collision Checkers

  • Bullet (bulletrave) - Collision checker from the Bullet Physics Package (fast and accurate)
  • ODE (oderave) - Open Dynamics Engine collision checker (fast, but inaccurate for triangle meshes)
  • PQP (pqprave) - PQP collision checker, slow but allows distance queries to objects.

Controllers

  • IdealController (basecontrollers) - Ideal controller used for planning and non-physics simulations.
  • PlayerController (playerrave) - Player client wrapped in a controller. The controller can be used to synchronize multiple different actarray servers that for one robot. For example, in mobile robotics the arm, hand, and moving base are usually separate control threads running on potentially different computers. This player controller can be used to give OpenRAVE a unified control and view of the robot.
  • SimplePlayerController (playerrave) - A player controller that does not support all the synchronization features. Should be used for actarray servers that don't support all the features of an actarray interface.

Inverse Kinematics Solvers

  • Man1Leftikfast (ikfastsolvers) - for the 7 DOF left arm of the man1 OpenRAVE model
  • Man1Rightikfast (ikfastsolvers) - for the 7 DOF right arm of the man1 OpenRAVE model
  • ManusLeftArmikfast (ikfastsolvers) - for the 6 DOF left Manus arm from Exact Dynamics BV.
  • PA10ikfast (ikfastsolvers) - for the 7 DOF Mitsubishi PA-10 arm.
  • PUMAikfast (ikfastsolvers) - for 6 DOF PUMA arm.
  • WAM7ikfast (ikfastsolvers) - for the entire 7 DOF Barrett Whole Arm Manipulator (WAM).

Planners

  • BasicRRT (basicrrt) - Basic forward search RRTs with a goal bias.
  • BiRRT (birrt) - Bi-directional RRTs
    • J.J. Kuffner and S.M. LaValle. RRT-Connect: An efficient approach to single-query path planning. In Proc. IEEE Int'l Conf. on Robotics and Automation (ICRA'2000), pages 995-1001, San Francisco, CA, April 2000.
  • BiSpace (bispace) - BiSpace algorithm
    • Rosen Diankov, Nathan Ratliff, Dave Ferguson, Siddhartha Srinivasa, James Kuffner. BiSpace Planning: Concurrent Multi-Space Exploration. Robotics: Science and Systems Conference, June 2008.
  • GraspExploration (grasper) - RRT meant to explore the space
  • Grasper (grasper) - Simple planner that performs a follow and squeeze operation of a robotic hand.
  • RA* - (rplanners) - Randomized A*
  • rBiRRT - (rplanners) - A more bug-free, complete implementation of Bi-directional RRTs.

Physics Engines

  • ODE (oderave) - ODE physics engine.

Problems

  • BaseManipulation (basemanipulation) - Very useful routines for manipulation planning and planning in general!
  • GrasperProblem (grasper) - Used to simulate a hand grasping an object by closing its fingers until collision with all links.
  • Logging (logging) - Can save the entire scene to an XML file and can record/playback the motions of each object of entire OpenRAVE sessions.
  • Player (playerrave) - Can create various player clients to communicate with player interfaces like the laser and position3d.
  • TaskCaging (taskcaging) - Implements various algorithms to open and close doors by having the hand cage the handles instead of tightly grip. This greatly relaxes the constraints on the robot (see the door manipluation example). The relevant paper is:
    • Rosen Diankov, Siddhartha Srinivasa, Dave Ferguson, James Kuffner. Manipulation Planning with Caging Grasps. IEEE-RAS Intl. Conf. on Humanoid Robots, December 2008.
  • TaskManipulatin (basemanipulation) - Grasp/Manipulation planning with grasp sets.

Robots

  • GenericRobot (baserobots) - Generic default robot that supports simple trajectory execution.
  • Humanoid (baserobots) - Humanoid robot with explicit definitions on a head, two hands, and two feet.

Sensors

  • BaseCamera (basesensors) -provides a simulated camera using the standard pinhole projection.
  • BaseFlashLidar3D (basesensors) - provides a simulated 3D flash lidar sensor. A flash LIDAR instantaneously returns the depth measurements in the form of an image.
  • BaseLaser2D (basesensors) - provides a simulated 2D laser range finder.
  • BaseSpinningLaser2D (basesensors) - provides a simulated spinning 2D laser range finder.
  • ROSLaser2D (rosrave) - connects to a ROS LaserScan message that receives laser data in real-time.

Sensor Systems

Viewers

  • qtcoin (qtcoinrave) - provides a GUI using the Coin3D, Qt4, and SoQt libraries.

Media, Projects, and Related Publications

Publications

Rosen Diankov and James Kuffner, OpenRAVE: A Planning Architecture for Autonomous Robotics, tech. report CMU-RI-TR-08-34, Robotics Institute, Carnegie Mellon University, July, 2008.

Misc

Authors and History

OpenRAVE was founded by Rosen Diankov at the Planning And Autonomy Lab in the Carnegie Mellon University Robotics Institute. It was inspired from the RAVE simulator James Kuffner had started developing in 1995 and used for his experiments ever since. The OpenRAVE project was started in 2006 and is a complete rewrite of RAVE. Our main goal with OpenRAVE is to create a planning architecture that would give robotics researchers an easy open-source interface to control their robots both in simulation and in the real-world without having to worry about the small details.

Founders and Maintainers

  • Rosen Diankov - core developer, author of many of the plugins, maintains the wiki documentation and example code.

Contributors

  • Dmitry Berenson

Robot Systems using OpenRAVE


  • Robotics Manipulation System - Focuses on a full robot system using OpenRAVE and the Robot Operating System (ROS) architecture. It deals with autonomous manipulation with vision feedback, sensor loops, and higher-level reasoning.

(If you have a project using OpenRAVE and want to post it here, email Rosen Diankov.)

Personal tools