Assembling the Arm3 palletizing robot

Marginally Clever has made a lot of different robots, including the Arm3 palletizing robot. Robot arms hold great fascination here. We’d love to build a really great low cost robot arm. One of our early prototypes was even available online for sale, and as an open source model. Here now are the assembly instructions for that arm prototype. You can still get all the Arm3 parts on Thingiverse. Please give back by sharing your creation, mods, etc in the forums.

Assembling the Arm3 robot

This kit currently contains 166 individual parts and 45 types of parts.

See the Arm3 on Thingiverse and get the parts.

The arm has five major components: the finger, the forearm, the bicep, the shoulder, and the base.

In the overview picture each part has an “Item number”. These numbers are copied onto the laser cut parts you will receive from Marginally Clever.
This way you can tell which piece goes where.

Note: The part numbers for laser cut pieces are etched directly onto the pieces. It’s almost paint by number!

arm3 overview

On arrival your parts will look a lot like this.

arm3 laser cut parts

Peel off the tape. There is a number written on every part. The numbers match what you will read and see in the descriptions that follow.

The base

The base is a ball and socket. The ball goes in the socket and attaches to the shoulder.




The #1 bearing sits in the top center.



The screws (#2) pass through the ball and into the shoulder plate assembly.

All of these wooden parts can be glued together but I don’t find it necessaryarm3v1ball.




This motor will turn the shoulder on top of the base.

From this angle you are looking at the bottom of #16. The bottom should rest on top of the Ball and Socket. #41 should be on the top side of #16. #41 prevents the Ball nuts from coming loose. I put this on last when I’m assembling the ball/socket/base. I glue #41 to #16 after the nuts are attached. This will keep the nuts tight and avoid accidentally gluing #41 in the wrong spot. Try to avoid getting glue on the nuts or screws, you never know if you want to undo things in the future.



gear #2 should be at the correct height to mesh with the gear on the base. Switch #3 should be at the correct height to hit the bump when the shoulder turns to the correct angle.

Caution!  It’s easy to assemble this part backwards, which might mess things up later when the software assumes everything is the right way around.


Bicep A

This motor will turn the shoulder. Pieces #5 and #4 are held together with one zip tie in each switch.


Bicep B

This motor will turn the elbow.arm3v1shoulder-b

The biggest step

Note: The large gears here are the same as the one used in the base. The small holes in the gears here are not needed.
I like to put a 608 bearing in the centers of parts to hold them in place while the glue dries.

1. Glue #13 and #19 together.

2. Glue #42, #13, and #42 together, making sure the holes line up.

3. #10/#19/#10 can be held together with zip ties or glue. Zip ties will be easier if you have to take things apart in future.

4. Assemble the parts as indicated. Start with the #15 bolt in #7, facing up, then stack everything on top and finish by securing the nut so that it is barely finger tight.

Edit: We include one extra bicep spacer that should go between #8 and the #19 on the right of this picture.


parts #42/#13/#42 will connect with a tendon to push/pull the elbow. When I connect the tendon it is to the right. That means the order is nut, #42, #13, #42, tendon.









The point marked T is where a tendon is attached. The same tendon attaches to the tendon connector on the bicep.




The top screw will attach to a tendon attached to the elbow attached to a tendon attached to Bicep A. This series of connections keeps the finger parallel to the floor at all times.


RUMBA Control board


All mechanical parts together

1. Put the ball (8) inside the socket (1).

2. Lower the shoulder plate (14) onto the socket (8) and affix with nuts (2).

3. Hook the front of the bicep onto the shoulder plate, then lower the back into place. Attach with zip ties on the front and back.

4. Hook the RUMBA control board onto the back of the bicep. Slot the board onto the hooks, then slide down. It is a snug fit!

5. Turn the arm so the RUMBA board is facing you and the arm is pointing away. The (10) tendon is attached on the outside left of the two gears.

Some people have reported that the (6) screw can hit the bicep when it is moving toward the home switch. The simplest workaround is to cut a groove in the edge of the bicep. I pushed the bicep down until it touched the screw, marked the spot with a pencil, and then sanded away with a dremel.



solder the wires on the switches


Switches to RUMBA


Just above the pins are three symbols: +, -, and S. The red should go to +, the black to -, and the blue to S.

Bicep A has two switches.

The switch furthest from the shoulder joint should connect to X+. This switch detects when the bicep is in home position.

The switch closest to the shoulder should connect to X+. This switch detects when the forearm is in home position.

The switch on the shoulder plate should connect to Y-. This switch detects when the shoulder is in home position.

Attach the female plug to the RUMBA



I strongly recommend using a zip tie to secure the plug end against spacer 3 (in the above assembly drawing). In testing I found that plugging and unplugging a loose connector causes the wire to eventually disconnect where it screws into the board.

Attach the steppers to the RUMBA


The wires from RUMBA label X (left) go to the motor on bicep A that bends the shoulder.

The wires from RUMBA label Y (middle) go to the motor on bicep B that bend the elbow.

The wires from RUMBA label Z (right) go the motor on the base that turns the entire arm.

The wire colors should be Red, Green, Blue, Yellow from left to right for all motors.

Programming the Arm3 robot

The RUMBA board comes pre-programmed as a 3D printer. We will upload new instructions with the Arduino software.

The free Arduino app will compile the code instructions into machine binary instructions and then upload the instructions to the RUMBA board.

Download the Arm3 firmware code.

* Click “download in desktop” if you have the Git program.
* Click “download zip” if you don’t.

If you want to modify the code and contribute improvements to the project, consider getting Github Desktop.

If this is your first time using a RUMBA in Windows you may need to install the RUMBA Windows driver.

Run the Arduino software.

Choose Tools > Board > Mega 2560. example

Choose Tools > Serial Port > your port

* ”’On Windows”’ it will probably be the last COM port.
* ”’On OSX”’ it will be something like /dev/tty.usbmodem1131.

Choose File > Open and choose ./firmware/firmware_rumba/firmware_rumba.ino from the code you downloaded.

Click the “upload” button, which should be the second button from the left.

If you get an ”’upload error”’ try another port.”

After uploading the code, open the Arduino Serial Monitor (last button on the right).

Change the baud rate to 57600.

You should see a message beginning with “Arm3:”. This means the code has uploaded successfully.

Type “M114” This asks the machine for it’s current position. It should start with


The machine believes that the tool in the end effector is 0cm long.

Type “G54 Z-2” Now the machine thinks that tool tip is 2cm below the end effector. Type “M114″ again and it should say


because the tool tip has moved, even though the end effector didn’t. When you drive the robot all you have to do is tell it where you want to tip of your tool to go and it will use Inverse Kinematics to figure out the rest.

Connect 12v power to your robot. Put one hand on the power connector so if movement looks wrong you can pull the plug immediately. This is your Emergency stop. Better yet, have a friend ready or have a power bar with a breaker switch.

”Note for Windows users:” If you disconnect power to any arduino device while connected to your PC no harm will come to either machine BUT Windows won’t be able to find the COM port again until you reboot.

Type “G28;” This tells the machine to find home by touching each limit switch one at a time.

Driving the Arm3 robot

Robot Overlord is a PC app that will run the Arm3. Download the release off our website and run the JAVA app. Add one Arm3 to your empty scene, click on the robot, and then connect. Once you are connected, click the buttons to move the robot. It understands both forward and inverse kinematics.

Final thoughts

This robot has been a labor of love. A lot of time and energy went into it’s design and we give it to you for free. If you find it useful or interesting then please return the favor: share it with your friends and tell us about your experience with it in the forums.