Note: Instructions for using GraspHandleAction.

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)