Robotics · Mechanical designBuilt + end-effector tested

3-DOF 3D Printed Robot Arm

Project summary

A built, servo-driven 3D printed arm for removing prints from the bed. Gripper and scraper tests informed the tool choice, while torque analysis and Python kinematics guided linkage sizing and movement.

Why I built it

To remove completed prints from a printer bed and connect mechanical design, robot modeling, and task-specific tooling in one system.

Orange three-joint printed robot arm CAD assembly with black servo motors and a circular base
Live kinematic model
J1J2J3X / Y / Z geometry · millimeters
Tool XYZ -59.9 / 24.3 / 333.9 mmJ2 / J3 holding torque 0.032 / 0.083 N·mModeled payload capacity 469 g50% holding limit 0.54 N·m
Browser adaptation of the supplied Python rigid-body model. Capacity excludes adhesion, backlash, bending, and dynamic loads.

From torque sizing to vision-guided removal

Scroll to explore →
01
Design and development

Use a torque model

Calculate joint loads and payload margin to establish a reach and tool-mass budget.

6 V · full reach · gripper0.329 N·mShoulder self-load / 0.54 N·m budget72 gModeled payload margin
02
Design and development

Design the linkages

Choose the 100 mm upper link and 95 mm forearm to balance reach with shoulder torque.

Full robot arm linkage CAD
03
Design and development

Design and test end effectors

Test both tools. Select the scraper because it separates part-to-plate adhesion more effectively.

Geared parallel-jaw gripper CAD
04
Design and development

Model movement in Python

Create the Python kinematic model to meet the selected scraper’s higher positioning-accuracy requirement.

Live kinematic model
J1J2J3X / Y / Z geometry · millimeters
Tool XYZ -59.9 / 24.3 / 333.9 mmJ2 / J3 holding torque 0.032 / 0.083 N·mModeled payload capacity 469 g50% holding limit 0.54 N·m
Browser adaptation of the supplied Python rigid-body model. Capacity excludes adhesion, backlash, bending, and dynamic loads.
05
Movement integration

Use the model to drive the real arm

Connect modeled joint movement to the built arm and compare the predicted tool path with physical motion.

Robot arm posed with scraper at the bed
06
Pending

Implement computer vision

Pending: identify the print and bed, then supply a target to the movement model.

From torque limits to a print-removal tool

01
D1 / Torque and linkage sizing

Enough reach. Enough lifting torque.

What I chose

100 mm upper link + 95 mm forearm

Why

Reach the print bed while leaving enough shoulder torque to lift a released print.

The tradeoff

Longer links increase reach but reduce lifting capacity. The selected 195 mm linkage balances both.

195 mmTotal linkage length

Reach increases with length, but so does the shoulder’s load.

299 mmFull-reach gripper payload lever

The tool extends beyond the links and must be included in sizing.

72 gModeled gripper payload at full reach

Reserve torque to lift the print after release.

τ = g Σ mᵢrᵢ
τallow = 0.50 × 1.08 = 0.54 N·m
τremaining = 0.54 − 0.329 = 0.211 N·m
mmax = 0.211 / (9.81 × 0.299)
≈ 72 g

6 V, horizontal arm, gripper attached. The 50% limit is a design margin, not a rated continuous torque.

The reach tradeoff

LinkageSelf-loadPayload
155 mm0.265 N·m108 g
195 mm0.329 N·m72 g
235 mm0.396 N·m43 g
275 mm0.465 N·m20 g

Insight: 80 mm more linkage cuts modeled payload from 72 g to 20 g. Keep the selected 195 mm geometry and reduce tool mass before extending reach.

Task constraint: lifting capacity does not include bed adhesion. Release force and positioning accuracy need separate tests.

02
D2 / End-effector choice

Accuracy versus strength.

What I chose

Scraper selected after comparing both tools

Why

The scraper was better able to separate part-to-plate adhesion. The gripper lacked enough strength.

The tradeoff

The scraper required more accurate positioning and approach angle, creating the need for a kinematic model.

01 / Test

Gripper strength limited release.

The gripper did not have enough strength to overcome the print’s adhesion to the plate reliably.

Insight: holding the part and breaking bed adhesion are different force requirements.

Tested parallel-jaw gripper
02 / Select

The scraper separated adhesion better.

The scraper was selected after testing because it was better able to separate the print from the plate.

25.1 g tool · 159 g modeled full-reach payload

Full arm with the selected scraper
03 / Tradeoff

Release performance came with an accuracy requirement.

The blade needed accurate edge placement and approach angle to separate adhesion without approaching the plate incorrectly.

Design requirement: control scraper position and orientation through the arm’s joint movement.

Scraper approach geometry at the print bed
04 / Model

The accuracy tradeoff drove the Python model.

I created the kinematic model to predict scraper position from the built arm’s joint angles and make its movement inspectable.

Joint angles → tool pose → controlled approach

Live kinematic model
J1J2J3X / Y / Z geometry · millimeters
Tool XYZ -59.9 / 24.3 / 333.9 mmJ2 / J3 holding torque 0.032 / 0.083 N·mModeled payload capacity 469 g50% holding limit 0.54 N·m
Browser adaptation of the supplied Python rigid-body model. Capacity excludes adhesion, backlash, bending, and dynamic loads.
03
D3 / Python movement model

One geometric model for movement and loading.

What I chose

Python kinematics to control scraper placement

Why

The selected scraper demanded more accurate placement. A CAD-based model connects joint angles to the tool pose needed for that approach.

The tradeoff

Predicted movement still depends on calibrated servo commands, stiffness, and backlash in the built arm.

3 joint anglesq = [θ₁, θ₂, θ₃]

Base yaw, shoulder pitch, elbow pitch.

1 tool poseT(q) = eˢ¹θ¹ eˢ²θ² eˢ³θ³ M

Predict scraper position from the built arm’s joint geometry.

3 checksFK · Jacobian · virtual work

Test geometry and torque consistency before physical control.

ModelJoint angles → tool position + gravity torque
Built armModel joint movement → compare predicted and physical tool paths
Pending: CVLocate print + bed → supply a movement target

Insight: a consistent model makes motion inspectable. Calibration must still account for backlash, stiffness, and real servo behavior.

Built arm. Selected scraper. Kinematic model for accurate placement.

The built arm was tested with a gripper and scraper. The scraper separated part-to-plate adhesion more effectively, but demanded greater positioning accuracy. That tradeoff motivated the Python kinematic model. Computer vision remains pending.

← All projects