Note: Instructions for using GraspHandleAction.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Getting Started with openning the cupboard

Description: These tutorial will show you how to use the GraspHandleAction

Keywords: GraspHandleAction, opendoors, opencupboard, move_arm

Tutorial Level: INTERMEDIATE

Next Tutorial: Here are the tutorials for using an SimpleActionClient How to write a simple client for opendoors action server actionlib tutorials

Compiling opendoors package

If you have not downloaded opendoors package, please do so by following:

svn co `roslocate svn opendoors`

After you do that, make sure package is compiled on your local machine by:

roscd opendoors
rosmake

opendoors package heavily relies on implementation of move_arm service and ee_cart_imped force controller. For the specifics of these packages, please see tutorials for move_arm move_arm/Tutorials, and tutorials for ee_cart_imped ee_cart_imped_action/Tutorials

Create a tutorial package

First create a package for this tutorial:

roscreate-pkg my_opendoors_tutorial actionlib rospy ee_cart_imped_action 
move_arm_service motion_planning_msgs

This creates a ros-package with necessary dependencies. This we do further will be made in this package

Writing the launch file

Create launch directory in my_opendoors_tutorial. Within the launch directory create a launch file and copy the following code. For writing a launch file, visit ROS/Tutorials/UsingRxconsoleRoslaunch.

opendoors package depends on a few nodes which are used for moving the arm with collision free IK and for controlling the force in the arm joints. This the code for the launch file.

<launch>

  <!-- grasping the handle after the detection-->
 <node name="grasp_handle_action_server" pkg="opendoors" type="grasp_handle.py" output="screen"/>

  • This is for launching the action server which we will subscribe to in order to move the arm. This is the core action server that integrates move_arm and ee_cart_imped_action.

 <!-- object detection node-->
 <node name="tabletop_for_cabinet_door" pkg="tabletop_for_cabinet" type="door_processing_server" output="screen" />
 <node name="tabletop_for_cabinet_object" pkg="tabletop_for_cabinet" type="object_processing_server" output="screen"/>
 
 <!-- tabletop manipulation launch file-->
 <include file="$(find pr2_tabletop_manipulation_launch)/launch/pr2_tabletop_manipulation.launch"/>
  • This is for launching a node which we use for detecting a handle on the cupboard. For details of this package, please visit Tutorials.

 <!-- move arm launch file-->
 <include file="$(find move_arm_service)/launch/move_arm_service.launch"/>
  • This is the IK move_arm service which we are using to get to the handle collision free.

 <!-- force controller for the right arm-->
 <include file="$(find ee_cart_imped_action)/launch/r_arm_cart_imped_action.launch"/>
 
 <!-- force controller for the left arm-->
 <include file="$(find ee_cart_imped_action)/launch/l_arm_cart_imped_action.launch"/>
 </launch> 
  • These launch files launch action controllers in ee_cart_imped_control for right and left arms.

Wiki: opendoors/Tutorials/How to use GraspHandleAction (last edited 2011-06-04 19:46:56 by AnnieHolladay)