Using OpenRAVE with ROS
Shows how to setup a full robot system with OpenRAVE and Robot Operating System (ROS). Any robot system should deal with autonomous manipulation with vision feedback, sensor loops, and higher-level reasoning.
OpenRAVE can be used in many different scenarios.
- There is one openrave instance that does the planning and you would like all controllers/sensor feeding that to it. We'll call this the Master
- There are openrave instances outside of the Master that wrap hardware/simulation controllers, generate simulated sensor data. These instances publish to the ROS network and usually feed into the Master openrave.
OpenRAVE plugins connecting to ROS
There are several openrave/ros plugins that create nodes internally and advertise/subscribe to messages. These packages can be found in jsk-ros-pkg:
- openraveros - can send commands to OpenRAVE through the ROS network. There's tutorials in openraveros_tutorials.
- openrave_sensors - subscribe to ROS messages for getting sensor data into openrave (loaded by Master)
- openrave_robot_control - simple session interface for controlling robots over the ROS network with openrave being the underlying client. You'll notice in the lib folder is a librobot_control.so openrave plugin which the Master loads)
- schunk_motion_controllers - connects to the hardware Schunk interfaces and advertises services to control a robot.
- orrosplanning - misc plugins for reading sensing data and displaying it into openrave. For example, if there is a node plublishing checkerboard_detector/ObjectDetection messages, it is possible to use the ObjectTransform openrave SensorSystem interface to display the objects inside the environment.