../_images/tiago-icon.png ../_images/tiagopro-icon.png

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: