/dexterous_ungrasping

This package is an implementation of Dexterous Ungrasping, which refers to the task of securely transferring an object from the gripper to the environment through dexterous manipulation.

Primary LanguagePythonMIT LicenseMIT

Dexterous Ungrasping (Shallow-Depth Insertion)

1. Overview

This package is an implementation of Dexterous Ungrasping, which refers to the task of securely transferring an object from the gripper to the environment through dexterous manipulation, like the way players would place stones in the game of Go. Our technique features dexterous manipulation actions that combine into a complete ungrasping operation as seen in the animations below. Dexterous ungrasping is generalized from our previous work, shallow-depth insertion, for addressing the task of placement without the concavity at the environment, which is more difficult than insertion. This package is directly applicable to a simple hardware setting with the conventional parallel-jaw gripper installed on an industrial robot arm.

Note: This package is also used for implementing Shallow-Depth Insertion (SDI): a novel robotic manipulation technique suitable for assembling thin peg-like objects into a hole with a shallow depth, as can be seen in a cell phone battery insertion for example.

Shallow-Depth Insertion

Dexterous Ungrasping

Full Video Link:

  1. Shallow-Depth Insertion
  2. Dexterous Ungrasping

Published Article

Contributers: Chung Hee Kim, Ka Hei Mak, and Jungwon Seo

2. Prerequisites

2.1 Hardware

2.2 Software

3. Build on ROS

In your catkin workspace:

cd ~/catkin_ws/src
git clone https://github.com/HKUST-RML/shallow_depth_insertion.git
cd ..
catkin_make

4. Run Shallow-Depth Insertion

4.1 Run in Simulation

SDI can be visualized in simulation through Gazebo and RVIZ. The robot arm motion is simulated but the object-robot contact interaction is currently not availble. To visualize the robot arm motion:

roslaunch shallow_depth_insertion ur10_robot.launch simulation:=true
roslaunch shallow_depth_insertion gripper.launch sim:=true
rosrun shallow_depth_insertion SDI_main.py

4.2 Run with Real Robot

If you are able to meet the basic hardware requirements (robot arm and gripper), you can execute SDI with the real robot:

roslaunch shallow_depth_insertion ur10_robot.launch simulation:=false
roslaunch shallow_depth_insertion gripper.launch
rosrun shallow_depth_insertion SDI_main.py

4.3 Changing execution parameters

The parameters of the SDI process can be specified in config/sdi_config.yaml. The parameters are as follows:

  • Robot Parameter
    • tcp_speed: Robot tool center point (TCP) speed
  • Gripper Parameter
    • tcp2fingertip: Distance from TCP to gripper fingertip
    • finger_thickness: Thickness of the robot finger
    • gripper_speed: Gripper actuation speed between 0.013 and 0.100
    • gripper_force: Gripper force between 0 and 100 (%)
  • Object Dimension
    • object_thickness: object thickness in meters
    • object_length: object length in meters
  • SDI configuration:
    • theta_0: Angle between object and hole prior to regrasping
    • delta_0: Distance from fingertip to object tip within gripper in meters
    • psi_regrasp: Angle between object and upper finger after regrasping
    • theta_tilt: Angle to tilt after regrasping
    • axis: Axis and direction to rotate about using right-hand rule

5. Dexterous Ungrasping

5.1 Immobilized Insertion

  • Implementing immobilized insertion requires the use of the extendable palm device. Please refer to the instructions here for setting up the device. Once the palm device is installed on the base gripper and the software prerequisites are satifised, you can control the extendable plam device via dyanmixal servos:
roslaunch shallow_depth_insertion dynamixel.launch
rosrun shallow_depth insertion dynamixel.py
  • The following input commands can be used to control the extendable palm in the dynamixel.py executable:

    • e: fully extend
    • c: fully contract
    • f: increase speed
    • s: decrease speed
    • integer between 115 and 152: setting position of the extendable palm (unit in mm)
  • To execute battery insertion with palm assistance on the real robot:

rosrun shallow_depth_insertion SDI_battery_main.py

5.2 Precision Placement

  • Precision placement can be executed in the same way shallow-depth insertion is executed. No additional hardware or software is required. For example, to execute precision placement of a coin on a real robot:
rosrun shallow_depth_insertion PP_coin.py

6. Background

SDI is composed of three primitive operations: tilt, regrasp, and tuck. The three manipulation primitives are utilized to navigate the configuration space of the object-gripper-hole system, which is parameterized as follows:

  • θ : Angle formed between the object and the hole surface
  • ψ : Angle formed between the object and the gripper upper finger
  • γ : Ratio of the object enclosed by the gripper over the object length

The three primitive operations navigate the configuration space as follows:

  • Tilt: Changes θ by rotating the gripper-object system about the corner of the hole. No change in ψ and the distance between the two fingers.
  • Regrasp: Changes ψ by rotating the gripper about the tip of the gripper upper finger. No change in θ, but the distnace between the two fingers are coordinated accordingly.
  • Tuck: Changes θ and ψ by rotating the gripper about the tip of the gripper lower finger.

γ is fixed initially and remains fixed throughout the SDI process.

                    

7. License

The source code is released under MIT license.

8. Maintenance

For any technical issues, please contact John Kim chkimaa@connect.ust.hk and Ka Hei Mak khmakac@connect.ust.hk.