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 GraspHandleActionKeywords: 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.