Paper available here
The dynamic grasping benchmark was motivated by a desire to encourage reproducible evaluation of robot performance on dynamic grasping tasks. Existing methods for measuring dynamic grasping performance differ greatly in the type and difficulty of task. Some systems are tested with objects moving on predictable trajectories only. In other cases the object is moved randomly by a human, but object motion stops before the robot completes the grasping action. A need was identified for a system that enables repeatable evaluation of robot performance on various dynamic grasping tasks.
The design presented consists of an XY motion platform that can move objects through arbitrary trajectories at various speeds. The system uses a CoreXY motion platform design that is described here. All parts in the design can be 3D printed or easily sourced.
The dynamic workspace platform is controlled by an Arduino running Grbl that interprets and executes g-code commands, in the same way a 3D printer or CNC machine would. This allows for precise control of the platform, and therefore the induced object motion.
The table below provides a link to an Australian distributor for all purchased parts used in the construction of the dynamic workspace. All parts can be substiuted for a similar product from an alternative source.
Part Name | Specification | Quantity | Source |
---|---|---|---|
Arduino CNC Shield | 1 | https://www.makerstore.com.au/product/cnc-shield-no-drivers/ | |
Arduino UNO | 1 | https://www.makerstore.com.au/product/arduino-compatible-uno-r3-with-usb-cable/ | |
GT2 Timing Belt | 5mm Wide | 5m | https://www.makerstore.com.au/product/gt2-2mm-timing-belt/ |
GT2 Timing Pulley, 20 tooth | 2 | https://www.makerstore.com.au/product/gt2-2mm-timing-pulley-20/ | |
Linear Bearing Blocks | SCS10UU | 6 | https://www.makerstore.com.au/product/bear-scs10uu/ |
Limit Switch | 2 | https://www.makerstore.com.au/product/micro-limit-switch/ | |
Nema 17 Stepper Motor | 560mN.m | 2 | https://www.makerstore.com.au/product/elec-nema17-b/ |
Rubber Sealed Bearing | 5x11x4mm | 16 | https://plaig.com.au/product/5x11x4mm-bearing-rubber-seals-mr115-2rs/ |
Stepper Motor Driver | DRV8825 | 2 | https://www.makerstore.com.au/product/elec-drv8825/ |
10mm Diameter Smooth Rod | 500mm long | 4 | https://www.makerstore.com.au/product/hard-rod-10/ |
12mm MDF Sheet | 650x600mm | 1 | |
12mm MDF Sheet | 260x260mm | 1 |
Part Name | Length | Quantity | Use |
---|---|---|---|
M5 Socket Head | 55mm | 8 | Idler Pulley Axles |
M5 Countersunk | 30mm | 16 | Mounts to Base |
M5 Socket Head | 15mm | 24 | Carriage to Bearing Blocks |
M5 Nyloc Nut | 20 | ||
M5 Washers | 16 | Idler Pulley Spacers | |
M3 Socket Head | 15mm | 12 | Motor to Mounts, Limit Switch to Mounts |
M3 Nut | 4 |
All parts were printed in PLA with 20% infill.
Part Name | Quantity | File Name |
---|---|---|
Motor Mount Left | 1 | cad/stls/StepperMount_Left.stl |
Motor Mount Right | 1 | cad/stls/StepperMount_Right.stl |
Idler Block Left | 1 | cad/stls/IdlerBlock_Left.stl |
Idler Block Right | 1 | cad/stls/IdlerBlock_Right.stl |
Y Carriage End Block | 2 | cad/stls/YAxisEndBlock.stl |
Idler Pulley | 8 | cad/stls/IdlerPulley.stl |
X Carriage | 1 | cad/stls/XCarriage.stl |
Belt Clip | 4 | cad/stls/BeltClip.stl |
- Start by assembling the object platform support consisting of the X Carriage and two linear bearings.
- Attach remaining linear bearings to the Y Carriage End Blocks.
- Attach stepper motors to motor mounts.
- Insert bearings and idler pulleys into the Idler Blocks and Y Carriage End Blocks. Take note of idler pulley orientation in the provided CAD files.
- Assemble parts on smooth rods to form a free standing assembly on top of the MDF base sheet. Mark, drill, and bolt holes to permanently mount motor mounts and idler blocks.
- Attach limit switches to Motor Mount Left.
- Attach CNC shield to Arduino and insert stepper motor drivers into shield. A guide for general usage of the shield is available here.
- Complete wiring of stepper motors and limit switches into shield.
The Arduino should be flashed with the grbl firware in this repository. Changes to the grbl code for this project are contained in config.h, defaults.h, defaults_mobile_workspace.h. To upload to Arduino, use Arduino IDE to open workspace_firmware/grbl-master/grbl/examples/grblUpload/grblUpload.ino and upload to board.
ROS control is provided by running the dynamic_workspace_controller/scripts/ros_control.py node. This node advertises two services.
- /reset_workspace: Will reset the workspace to a home position cancelling the current motion.
- /run_workspace_trajectory: Run a workspace trajectory at a given speed.
Custom trajectories can be added to trajectory_shapes.py.
We present an example experiment to evaluate the performance of various perception systems on a dynamic grasping task. More details are available in the associated publication.
The experiment procedure is as follows:
- The robot drives to a home position 500mm above the center of the workspace and the fingers are openned.
- Simulatenously, a visual servoing controller is enabled, and the dynamic workspace begins a trajectory.
- The robot follows the actions of the controller until its fingers are closed, or the system loses tracking of the object.
- Once fingers are closed or task is abandoned, the hand is lifted from the workspace.
- Grasp success is evalued and the workspace and robot are reset.
For each perception system 20 trials were conducted at each speed. A set of 20 random trajectories was generated and used for each perception system and speed. The figure below presents 3 example trajectories from the set of 20.
For each trial, the time between the robot starting controller movement (step 2 in the above procedure) and the robot closing its fingers or losing tracking of the object was recorded. We also record the result of the trial categorised into one of three options:
- Success: The object is succesfully grasped and lifted from the workspace.
- Perception Failure: The object left the field of view of the perception system and tracking was lost.
- Control Failure: The system maintained tracking, but failure resulted from poor grasp pose synthesis or control.
The results below demonstrate the improved performance of a dual hand perception system compared to a conventional wrist mounted configuration. In particular, the perception failure rate is signficantly reduced.