SimpleGripper - Open-source 2DOF Parallel Gripper

by Alexander Pedersen in Circuits > Robots

804 Views, 14 Favorites, 0 Comments

SimpleGripper - Open-source 2DOF Parallel Gripper

SimpleGripper - an Open-source Parallel Gripper With Articulating Wrist
SimpleGripper_2024-Aug-24.png
PXL_20240824_160651443.MP.jpg
SimpleGripper v4.png
PXL_20240819_170445806.MP.jpg
Claw Render portait .PNG

SimpleGripper is an open-source, 3D-printed robotic gripper that I designed to be an affordable, easy-to-build end effector for any robot arm. This design incorporates a parallel gripping mechanism with approximately 90 degrees of wrist rotation to provide enhanced functionality for various robotic applications. Drawing inspiration from Chris Annin's AR4 servo gripper, I developed SimpleGripper to offer a compact 2 DOF design, making it accessible to anyone looking to build high-performance robotic systems without the complexity or high costs typically associated with such components.

Supplies

Tools

  1. Screw Driver
  2. Hack Saw (to cut stainless rod)
  3. Drill (to make slight adjustments in 3D printed holes)
  4. 3d Printer

Electronic Parts

  1. 25kg Servo Gripper – DS3225 (x2)

General Parts

  1. 3mm stainless rod cut to length of 25mm
  2. 8x22x7mm Bearings
  3. #6 x 3/8" Phillips Pan Head Self Tapping Screw (x14)
  4. White Lithium Grease (Lubricant)
  5. M3x8mm Machine bolt ( For wrist drive gear)
  6. M3x6mm Machine bolt ( For Clamp Motor gear)
  7. M3x8mm Nut ( For wrist drive gear)
  8. M3x16mm Machine bolt (x4) (for wrist outside gear to wrist mount)
  9. Super Glue

3D Print the Parts

PXL_20240824_153709534.MP.jpg
PXL_20240824_192025915.MP.jpg

Start by printing all 11 parts:

  1. Bearing Cap
  2. Clamp Key
  3. Wrist Mount
  4. Rack and Clamps
  5. Clamp Housing
  6. Motor Housing
  7. Clamp Housing Bottom
  8. Wrist Outside Gear
  9. Clamp Drive Gear
  10. Wrist Drive Gear
  11. Clamp Motor Gear

I printed all of these using an Elegoo Saturn 3 ultra and Elegoo ABS like resin.

Assemble Base

dillings.png
Screenshot_20240824-135255.png
Screenshot_20240824-135116.png
Screenshot_20240824-140044.png
Screenshot_20240824-140129.png

My 3D printer isn’t perfectly calibrated, so I had to drill out the holes slightly. This step may not be necessary if your printer is well-tuned.

  1. Attach the servo motors to the Motor Housing using #6 x 3/8" Phillips Pan Head Self-Tapping Screws.
  2. Super glue a 3mm x 25mm stainless rod into the designated hole in the Motor Housing.
  3. Slide the Clamp Drive Gear onto the stainless rod.
  4. Attach the Clamp Motor Gear to the servo using an M3 x 6mm bolt.
  5. Secure the Clamp Housing Bottom to the Motor Housing using six #6 x 3/8" Phillips Pan Head Self-Tapping Screws.

If you are using your own code, be sure to test the servo before adding the clamps to avoid damaging the gripper by over-rotating. If you use the code I provide, this has already been accounted for.

Assemble Clamp

Screenshot_20240824-140252.png
Screenshot_20240824-141415.png
Screenshot_20240824-141245.png
Screenshot_20240824-141452.png
  1. Place the left and right clamps into the Clamp Housing.
  2. Flip the clamps and Clamp Housing, then insert them onto the Clamp Drive Gear. (Ensure the clamps are as open as possible. This step may require some finesse to properly align the gears.)
  3. Slide the Clamp Key through the clamps and secure it to the Clamp Housing using two #6 x 3/8" Phillips Pan Head Self-Tapping Screws.
  4. Attach the Clamp Housing Bottom to the Clamp Housing using six #6 x 3/8" Phillips Pan Head Self-Tapping Screws.
  5. Apply white lithium grease or another suitable lubricant to the gears and any parts that may rub together.

Assemble Wrist

Screenshot_20240824-141623.png
Screenshot_20240824-141652.png
Screenshot_20240824-141725.png
Screenshot_20240824-141352.png
Screenshot_20240824-141344.png
PXL_20240824_160651443.MP.jpg
  1. Insert the bearing into the Wrist Mount.
  2. Attach the Wrist Mount to the Wrist Outside Gear using four M3 x 16mm machine bolts.
  3. Attach the Motor Housing to the Wrist Mount using one M3 x 8mm machine bolt.

Teensy 4.1 Code

// This is a sample code that I isolated from a larger code base for my robot arm.
// You will need to edit it depending on what inputs you choose to control the SimpleGripper // (e.g., buttons, joystick).
// One important characteristic is the range for the claw part of the gripper. If this range // is changed or the claw was not fully opened during construction, the claw can attempt to
// open or close too much, potentially damaging the gripper.

#include <Servo.h>

// Servo control pins
const int servoPin1 = 9; // Wrist Servo
const int servoPin2 = 10; // Claw Servo

// Servo objects
Servo myservo1;
Servo myservo2;
int servoPos1 = 0; // Initial position of the wrist servo
int servoPos2 = 0; // Initial position of the claw servo

// Remote control channels (example values, replace with actual input channels)
int ch5 = 0; // Channel for controlling the claw
int ch7 = 0; // Channel for controlling the wrist

void setup() {
Serial.begin(9600); // Set the baud rate to 9600

// Attach the servo on pin 9 (Wrist Servo)
myservo1.attach(servoPin1);
myservo1.write(servoPos1); // Set initial position

// Attach the servo on pin 10 (Claw Servo)
myservo2.attach(servoPin2);
myservo2.write(servoPos2); // Set initial position
}

void loop() {
// Servo control using ch7 (Wrist)
if (ch7 == 180) {
servoPos1 += 10;
if (servoPos1 > 180) servoPos1 = 180;
myservo1.write(servoPos1);
Serial.print("Wrist Servo moving to position: ");
Serial.println(servoPos1);
} else if (ch7 == 0) {
servoPos1 -= 10;
if (servoPos1 < 0) servoPos1 = 0;
myservo1.write(servoPos1);
Serial.print("Wrist Servo moving to position: ");
Serial.println(servoPos1);
}

// Servo control using ch5 (Claw). servoPos2 = 63 is the limit of how much the claw can close so that it doesn't break.
if (ch5 == 180) {
servoPos2 += 4;
if (servoPos2 > 63) servoPos2 = 63;
myservo2.write(servoPos2);
Serial.print("Claw Servo moving to position: ");
Serial.println(servoPos2);
} else if (ch5 == 0) {
servoPos2 -= 4;
if (servoPos2 < 0) servoPos2 = 0;
myservo2.write(servoPos2);
Serial.print("Claw Servo moving to position: ");
Serial.println(servoPos2);
}
}

Circuit

Untitled design - 2024-08-24T150708.936.png

I am using a battery with a voltage step-down converter to power the system, but you can use any method that provides the necessary voltage and current, such as the power supply shown. I’m using a Teensy 4.1 microcontroller, but you could use an Arduino or another microcontroller depending on your project’s requirements.