Advanced Grasping: step-by-step#
Attention
This page documents a Premium robot feature. It may or may not be available on your robot.
🏁 Goal of this tutorial
At the end of the tutorial, you will know how to run the Advanced Grasping pipeline to pick-up an object standing on a table, in front of the robot.
This page is a step by step guide on how to grasp and place an object with TIAGo.
Pre-requisites#
We recommend you to first read Overview of the Advanced Grasping pipeline.
In particular, you must first set up the Advanced Grasping package, following the either steps for the simulation or the real robot. For the demo set up for the real robot have a look at the real robot.
Note
It is recommended to first test the grasping in simulation environment before proceeding with the real robot.
Grasp an object: Step by step#
Step 1#
Once the robot is ready use the following command to start the perception action:
rostopic pub /advanced_grasping/perception/goal pal_bt_grasping_msgs/PerceptionActionGoal "header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
goal_id:
stamp:
secs: 0
nsecs: 0
id: ''
goal:
object_color: ''
object_type: ''"
The robot will construct an octomap of the environment and look for a graspable object.
Step 2#
Once the object has been detected it will be added to the planning scene. When the action
has finished successfully use the grasp action to grasp, setting the object_id
to object:
rostopic pub /advanced_grasping/grasp/goal pal_bt_grasping_msgs/GraspObjectActionGoal "header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
goal_id:
stamp:
secs: 0
nsecs: 0
id: ''
goal:
object_id: 'object'
grasping_side: ''"
The robot will grasp the object and move to home position.
Step 3#
To place the object back on the table use the place action. Ensure that the
argument auto_determine_height
is set to true
and the x
and
y
coordinates of the placement position are correct. In this example the
x
coordinate is set to 0.8 as an example.
rostopic pub /advanced_grasping/place/goal pal_bt_grasping_msgs/PlaceObjectActionGoal "header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
goal_id:
stamp:
secs: 0
nsecs: 0
id: ''
goal:
grasping_side: ''
auto_determine_height: true
pose:
header:
seq: 0
stamp:
secs: 0
nsecs: 0
frame_id: ''
pose:
position:
x: 0.9
y: 0.05
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 0.0"
The robot will now determine the surface height and place the object on top of this surface. Then it will return back to home position.
See also#
To continue, you might want to check:
Tutorial: Customizing the Advanced Grasping pipeline to learn how to use and customize the Advanced Grasping pipeline in your projects.