xu-pu / high_speed_scooping

High-speed scooping with Direct-Drive Hand

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

High-Speed Scooping

1. Overview

This repository contains the software implementation of High-Speed Scooping using a direct-drive gripper. It can be applied to rapidly picking thin objects off from a hard surface, which would be quite challenging with a straightforward approach aiming at directly obtaining a pinch grasp. See below for a comparison of our high-speed scooping with the traditional approach.

High-Speed Scooping (Ours)

Direct Pinch Grasping (Traditional)

Related Paper

  • K. H. Mak, P. Xu, and J. Seo, "High-Speed Scooping Manipulation through Stiffness Control and Direct-Drive Actuation," submitted to 2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) (under review).

2. Prerequisites

2.1 Hardware

  • Universal Robot UR10: Industrial Robot Arm
  • Direct-Drive Hand (DDH): Our direct-drive gripper inspired from the paper below:
    • A. Bhatia, A. M. Johnson, and M. T. Mason, “ Direct Drive Hands: Force-Motion Transparency in Gripper Design, ” in Robotics: Science and Systems, 2019.

2.2 Software

Our software is implemented with python3 and tested on Ubuntu 16.04.

To install python3 on Linux:

sudo apt install python3 python3-pip

Cloning our high-speed scooping software together with our ddh_driver:

git clone https://github.com/HKUST-RML/high_speed_scooping.git --recurse-submodules

Then, install the software dependencies:

cd high_speed_scooping
pip3 install -r requirements.txt
cd ddh_driver
pip3 install -r requirements.txt

Our software takes advantage of the package urx. Instead of the default library, use our customized version from high_speed_scooping/urx by executing the following in the python script:

import sys
sys.path.insert(0,'..') # add the path /high_speed_scooping to the python environment at the first index
import urx # import urx from /high_speed_scooping 

Our version provides the method of getting the instantaneous tool speed by calling get_tcp_speed(), which allows us to control the decelerating distance of the robot.

3. Run High-Speed Scooping

3.1 Run with real robot

  1. Start a Jupyter Notebook server in terminal by executing
cd high_speed_scooping/script
jupyter notebook
  1. Run HSS_example.ipynb through the Jupyter Notebook web interface. Details of using our software are available in script/HSS_example.ipynb

3.2 Changing execution parameters

The parameters of High-Speed Scooping can be specified in config/hss.yaml. The parameters are as follows:

Object Dimensions

  • object_length: object length in the scooping direction ()
  • object_thickness: object thickness ()

Gripper Parameters

  • gripper_tilt: tilting angle of the gripper ( )
  • contact_distance: distance from gripper frame to surface when the fingers are in contact ()
  • finger_prescoop_position: dimensionless F position on the object from the scooping edge
  • thumb_prescoop_position: dimensionless prescoop position away from the scooping edge
  • gripper_center: gripper center line dimensionless position on the object from the scooping edge
  • digits_speed: speed of the digits (bandwidth of low-pass filter applied to motor's step input)
  • finger_prescoop_stiffness: position p-gain of finger before scoop
  • thumb_prescoop_stiffness: position p-gain of thumb before scoop
  • finger_scoop_stiffness: position p-gain of finger for scooping
  • thumb_scoop_stiffness: position p-gain of thumb for scooping
  • finger_grasp_stiffness: position p-gain of finger for grasping
  • thumb_grasp_stiffness: position p-gain of thumb for grasping
  • digit_grasp_position: position of fingertips in the motor frame for grasping the object

The gripper's parameters for setting the initial pose are illustrated as follows:

where
  • finger_prescoop_position = F_dist / object_length
  • thumb_prescoop_position = T_dist / object_length
  • gripper_center = center_dist / object_length

Arm's Motion Parameters

  • gripper_height: initial height of gripper in the world frame ()
  • init_vel: velocity of tcp when initializing gripper pose ()
  • init_acc: acceleration of tcp when initializing gripper pose ()
  • smack_vel: velocity of tcp when approaching to the surface ()
  • smack_acc: acceleration of tcp when approaching to the surface ()
  • slow_dist: distance of gripper slowing down after collision ()
  • lift_vel: velocity of tcp when lifting the object up from the surface ()
  • lift_dist: distance of gripper lifted off from the surface ()
  • stop_acc: deceleration of stopping the robot's motion ()

The arm's motion parameters are illustrated as follows:

4. Timeline of High-Speed Scooping

  • Initial Configuration (t = 0s): The arm carries the gripper such that it is placed above the object to pick. The gripper is oriented such that the thumb's face forms a desired nonzero angle of attack (less than 90 degrees) with the ground surface.
  • Approach (t = 0.75s): The gripper is moved towards the ground surface, whose height does not need to be known a priori.
  • Interaction with the Environment (t = 1.15s): The gripper detects a collision between its digits and the ground surface by measuring the displacement of the digit linkages. As soon as the collision occurs, the arm moving downward is accelerated upward to stop it from hitting the surface.
  • Interaction with the Object (t = 1.20s): In the meantime, the gripper closes by moving the thumb towards the finger with higher proportional/derivative gains, which will render the digit linkages stiffer. The finger is shown to press down on the object while the thumb slides on the surface towards the finger and eventually penetrates under the object.
  • Pinch Grasp (t = 1.27s): Finally, a secure pinch grasp is obtained and the arm starts moving upward. Meanwhile, The stiffness of the digit linkages (that is, the control gains) is increased further, to secure the grasp.
  • Lifting (t = 1.48s): The gripper takes off from the surface to complete the task.

Robot's motion parameters during the scooping process

The solid (dotted) lines represent the actual (commanded) values of the parameter. The gray vertical dotted line indicates the moment when the robot detects the collision.

Maintenance

For any technical issues, please contact Ka Hei Mak (khmakac@connect.ust.hk)

About

High-speed scooping with Direct-Drive Hand


Languages

Language:Jupyter Notebook 88.5%Language:Python 11.5%