Main Page

From OpenRAVE

Jump to: navigation, search

Contents

Introduction to OpenRAVE - A Planning Environment 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 Python, 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/trunk openrave

The core OpenRAVE is licenced under the Lesser GPL, which makes it possible for commercial use. Most of the example demos are licensed under Apache License, Version 2.0, which is much less restrictive. The licenses for each of the plugins is up to the plugin authors, please check the source code.

The openrave-users mailing list has many answers to frequently asked questions. Subscribe here.

Please support OpenRAVE development by referencing it in your works/publications/projects with:

@techreport{openrave,
   author = "Rosen Diankov and James Kuffner",
   title = "OpenRAVE: A Planning Architecture for Autonomous Robotics",
   institution = "Robotics Institute",
   month = "July",
   year = "2008",
   number= "CMU-RI-TR-08-34",
   url={http://openrave.programmingvision.com},
}

Installation and Setup

Getting Started

Components/Features

Documentation

Examples/Tutorials

All examples can be found in the ${INSTALL}/share/openrave/examples directory. To run openravepy examples, just execute the *.py files. To run MATLAB/Octave examples, first start openrave and then in a separate terminal execute the *.m files.

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

  • Constraint Planning - Example of a robot planning while maintaining orientation constraints for an object.

  • Grasp Planning with Camera Visibility - Example showing how to split the manipulation grasp planning framework into two stages: one to achieve sensor visibility, and the other to plan for grasps while slowing getting closer to the goal.

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

  • Registering Callbacks - Examples of how to register callbacks in python like getting selected point on viewer or handling collisions for the physics engine.

Robot-specific Database Generation

  • Convex Decomposition - Show how to automatically simplify the robot meshes for faster collision checking.

  • Link Statistics - Database that gathers various statistics on the robot links like swept volumes.

  • Inverse Reachability - Clusters the reachability space into a sampling distribution for the base placement of the robot

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.

Inverse Kinematics Solvers

  • Katanaikfast (ikfastsolvers) - for the 5 DOF Katana Arm (1 dummy DOF added).
  • 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 (rplanners) - 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.
  • ExplorationRRT (rplanners) - RRT meant to explore the space
  • GraspGradient (rplanners) - Stochastic gradient descent planner.
  • Grasper (grasper) - Simple planner that performs a follow and squeeze operation of a robotic hand.
  • RA* - (rplanners) - Randomized A*

Physics Engines

  • ODE (oderave) - ODE physics engine.

Problems

  • BaseManipulation (rmanipulation) - 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.
  • IKFast (ikfastsolvers) - Allows dynamic loading and registering of ikfast shared objects to openrave plugins.
  • Logging (logging) - Can save the entire scene to an XML file and can record/playback the motions of each object of entire OpenRAVE sessions.
  • TaskCaging (rmanipulation) - 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 (rmanipulation) - Grasp/Manipulation planning with grasp sets.
  • VisualFeedback (rmanipulation) - Adds grasp planning taking into account camera visibility.

Robots

  • GenericRobot (baserobots) - Generic default robot that supports simple trajectory execution.

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.

Misc

Authors and History

OpenRAVE was founded by Rosen Diankov at the Quality of Life Technology Center 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.

Robot Systems using OpenRAVE

  • Modular Robots - OpenMR is an OpenRave Modular Robots plug-in for simulating the locomotion of modular robots.

  • 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