User Tools

Site Tools


How To Build a Granular Gripper

Author: <Yu Hang He> Email:
Date: Last modified on <07/25/2019>
Keywords: granular gripper, vacuum gripper

The photo above depicts the granular gripper which allows you to grip objects using jamming principle of granular material. The big picture problem is that conventional vacuum gripper cannot operate with irregular shaped objects. Solving this partially or completely is important because a robust gripper can allow robots to fully interact with its environment. This tutorial shows you how to construct the granular gripper and takes approximately 6 hours to complete.

The granular gripper in this tutorial was based on the universal gripper originally proposed by John R. Amend. For more information on the principle of granular material and universal gripper, please refer to author's original paper here

Motivation and Audience

This tutorial's motivation is to demonstrate how to construct a granular gripper. Readers of this tutorial assumes the reader has the following background and interests:

* Know how to model with 3D design software and use 3D printer to manufacture the model
* Know how to work with Arduino and build a circuit on a prototype board
* Perhaps also know how to program with Arduino IDE
* Perhaps additional background needed may include understanding of pneumatic system

The rest of this tutorial is presented as follows:

Parts List and Sources

To complete this tutorial, you'll need the following items included in this BOM. Some common electrical components, such as prototype board, resistors, and diode that are common for circuit do not have vendors and price listed. To power the compact ejector, a 24 V power supply unit is required. In addition, access to 3D printer is required for this construction. Medium grind coffee grounds was used as the granular material during the construction. To attach the pneumatic fitting on the gripper assembly, a 1/4 in NPT Tap is required.

Here is the Gripper BOM


This section gives step-by-step instructions along with photos to build the granular gripper.

Step 1

Use 3D printer to manufacture the gripper assembly. The STL 3D models for the gripper assembly can be assessed here. For the gripper assembly to function properly, the component gripper_mount must be air tight. To achieve air tight print with 3D printer with PLA filament, you can follow this tutorial 3D Printing: Make Water Tight and Air Tight Containers, which requires printing the model at 100% fill. If there is leak in the 3D printed part, you can try repair the leak with epoxy resin coating or a seal spray like Flex Seal. The following pictures show the gripper assembly that need to be printed.

Step 2

Fill the inside of 24 inch balloon with medium coffee grounds. Suggest using a funnel to make the process easier. You may need to blow some air into the balloon for the coffee grounds to settle inside the balloon. Fill the balloon almost completely with coffee ground without stretching balloon's membrane.
Step 3

Cut a circular piece from the dust mask and glue it to the bottom opening in the gripper mount as shown. The dust mask will act as the filter to keep the coffee grounds inside the balloon during vacuuming.
Step 4

Use the 1/4 in NPT tap to create threads on 7/16 in hole on the side of the gripper mount. Wrap some pipe thread tape on the thread of 1/4 in NPT push-to-connect fitting and screw the fitting into the tapped hole.
Step 5

Cut the neck of the balloon to half. Thread the neck of the balloon through the opening in the gripper base. Stretch the entrance of the balloon before placing the bottom opening of gripper mount over the base to seal the balloon. Use screws to assemble the gripper base and mount together.
Step 6

Attach the G1/8 push-to-connect fittings to the compact ejector. Use the pipe thread tape to ensure that the system is airtight. The port #1 is the compressed air source and port #2 is the vacuum/blow off output.
Step 7

Attach the 1/4 in NPT push-to-connect fitting to the 1/4 in NPT quick connect female fitting. Attach the quick connect to the quick connect port on the air compressor.
Step 8

Use the 1/4 in pneumatic tubing to connect the air compressor to the compact ejector and the granular gripper to the compact ejector. On the air compressor, use the regulator to adjust the compressed air output to 4 bar.
Step 9

Connect the M12 5 pin cable to the compact ejector. The detail of the wiring and circuit is outlined in the next section.


The complete manual for the compact ejector can be found on Schalmz's website. The instruction on this site only offers rough guide, please refer to the manual for more details on how to properly wire and use the compact ejector.

The following diagram shows the function of each pin on compact ejector's M12 5 pin port and their corresponding wire colors when the cable is connected to the port. The following table shows the electrical parameter of the compact ejector. The expect voltage input is 24V. For the normally closed (NC), PNP ejector, the current consumption is 70 mA. The input signal voltage is 15 to 24V and current is 5 mA. The following figure shows the circuit diagram for the gripper system. The Arduino is used to receive command from a computer. The digital signal from Arduino is used as the base for transistors to switch on and off the 24 V input signal for vacuum and blow off. The following figure shows the actual circuit implemented with Arduino and a prototype board.


A link to the source code can be found Arduino Code

| Switch.ino
  String input; // for incoming serial data
  int command;
  bool vac = false; //Switch condition for vacuum
  bool blow = false; //Switch condition for blow off
  bool off = true; //Switch condition for off
void setup() {
  Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
  pinMode(8, OUTPUT); //Assign port 8 and 9 as digital output
  pinMode(9, OUTPUT);
  digitalWrite(9, HIGH);
  digitalWrite(8, HIGH);
void loop() {
  // send data only when you receive data:
  if (Serial.available() > 0) {
    // read the incoming string:
    input = Serial.readString();
    // read input data from the serial monitor
    command = input.toInt();
    // enter a command of 1 to turn on and off vac
      if (command == 1) {
        vac = !vac;
    // enter a command of 3 to turn on and off blow off
      if (command == 3) {
        blow = !blow;
      /*Serial.print("vac: ");
      Serial.print("blow: ");
      Serial.print("off: ");
    if (vac && blow || !vac && !blow) {
      vac = false;
      blow = false;
      // due to circuit design, a HIGH digital output corresponds to off for the ejector signal
      digitalWrite(9, HIGH);
      digitalWrite(8, HIGH);
    else if (blow) {
      Serial.println("blow on");
      // digital pin 8 is connected to blow off
      digitalWrite(8, LOW);
      digitalWrite(9, HIGH);
      digitalWrite(8, HIGH);
      blow = false;
      vac = false;
    else if (vac) {
      Serial.println("vacuum on");
      // digital pin 9 is connected to vacuum
      digitalWrite(9, LOW);
      digitalWrite(8, HIGH);

The command for the ejector controller is entered through Serial Monitor on the Arduino IDE accessed through the Tools menu on the top of IDE. Enter 1 in the command line to turn on vacuum. Enter 3 in the command line for a short blow off.

Final Words

This tutorial's objective was to demonstrate the process of building the granular gripper.

For questions, clarifications, etc, Email:

granular_gripper.txt · Last modified: 2019/07/29 16:22 by yuhanghe