Introduction: Motion Controlled Robotic Arm

*This instructable is not complete, I will post code soon

The Arm:


This instructable shows the process of building a robotic arm using servos, Arduino microprocessor, a gyroscope and multiple bend sensors.

The user wears a glove containing the gyroscope and bend sensors which translate the movement of the users hand into motion of the  servos , in turn rotating the wrist and hand of the robotic arm. 

The forearm has full motion of a human wrist namely: rotation, radial deviation (movement towards the thumb) ,ulnar deviation (movement towards the little finger) ,flexion (tilting towards the palm) and extension (tilting towards the back of the hand).

The Hand also has movement of the fingers, this is limited as a result of the brittle material used.

All movement is provided by the Servos attached to an extension wire or piano wire. Each having different torque depending on its position.

The fingers contain touch sensitive resistors which provide haptic feedback and allow the user to know when the fingers have grasped an object.

Step 1: Design

Attached are pictures of the design using 'google sketchup'.

I found this design of the finger on the net which allows a single servo to provide full motion of curl of a human finger.The design works best when Aluminium is used for the cut outs of the fingers, but as I had perspex available I went with the weaker option which resulted in brittle fingers. 

All the fingers are the same design but a variation of measurements, except for the thumb.  they can be found below:

The designs below are the ones I sent through to a laser cutter here in Johannesburg for about R350 for all cuts and material.
they required the files to be sent in 2d DXF format, so if you alter the design in sketchup, make sure you export it in the correct format.

The rest of the cut outs are made up of wrist and palm sections.
index finger, middle finger, ring finger is roughly the same size.

pinky is slightly smaller than other fingers.

Thumb has different dimentions

Step 2: Materials

- Arduino Mega (or an Arduino with enough Analogue input pins to support all the sensors)

- 20kg-cm torque Servos for wrist movement x3

- 2kg-cm torque Servos for fingers x5

- Atleast 40kg-cm torque servo for elbow and shoulder x1 or x3 

- 3 axis gyro breakout board (I used a L3G4200D, any will do).

- Force/Touch sensors x5

- Gloves x2

- Bend sensors/Resistors x5 (or 6 if you wish to build an elbow).

- Some small aluminium Plates.

- Length of flat pc wire.

- Connector pins.

- BreadBoard.

- Piano Wire 30cm pieces x4

Tools:

- Glue Gun

- saw to cut aluminium/Perspex

- Wire cutters

- nuts and bolts

Step 3: Hand

The best way to attach the finger joint together is with grommets, this allows for movement of the joints.
I used small bolts and a glue gun which provided too much friction and the joints wouldn't work as intended. Any pressure applied resulted in the perspex fracturing. I decided to remove the joints and have the finger move as one unit.

- Attach the fingers into the slots of the palm cut out. Img[2]
- Attach the servo arm to the smallest disk and bolt  the arm to the servo.
- Glue the palm onto the smallest disk to provide the wrist section, add supports for strength.
- Glue the servo to the larger disk with the rectangle cut out , this separates the hand from the lower wrist and allows for 180 degree rotation. Img[3]

Step 4: Wrist Joint

The wrist joint needs to act as a ball joint, with radial and ulnar deviation ,flexion and extension. This requires 2 Servo brackets which I made from aluminium. One within the other, rotating about a bolt , providing 2 degrees of freedom. Attaching the rotation servo to the upper bracket with a plastic bracket mimics the movement of a human wrist.

I used Rod bolts as the forearm structure to act as the radius and ulnar. Attach these rods to the wrist joint by drilling two holes in the lower aluminium bracket and tightening them with nuts on either side.

cable tie the leads of the servo to one of the rods.

Step 5: Lower Forearm

Attach the larger perspex disk to a side panel as in Img[2] and bolt the two rods of the forearm to this disk. Make sure you use washers so that you do not crack the perspex when tightening the nuts.

See pictures below to get an idea of the final product:

Step 6: Attaching the Servos

The arm of the wrist servo needed to extend beyond the sides of the wrist. I attached 2 smaller arms to a central larger one which turned out to be quite rigid. The holes also provide a nice attachment area for the piano wire. Img[2]

The other side of the piano wire attaches to the sides of the wrist disk so that when the servo twists, it tilts the wrist in that direction.

- Solder Pin connectors to the ends of the flat cable wires, each servo has 3 leads, and there are 3 servos in the wrist and 5 in the hand, that's a total of  24 individual wires. if you are using the touch sensors, its an additional 10 wires that need to reach the hand, so strap the wire up neatly so that its easy to troubleshoot.



Step 7: The Hand

-Slot the micro servos into the rectangle cutouts of the palm, they will provide the push pull for the fingers (either by piano wire or a flexible wire , the finger is then pulled closed by elastic.) make sure the arm of the servos is facing outwards, except for the thumb servo, this one faces inwards.

- I glued the reverse side of the pressure sensors to the tips of the fingers, then soldered extended wires to their leads.(this is for the feedback. Img[7-11]

-Connect the finger servos the the extension leads that you soldered pins onto earlier.

Step 8: The Glove

I bought a pair of cloth gloves for this part:

- On the outer side of the fingers of the glove , glue a bend sensor with the glue gun.
- connect extended leads to the 3 axis gyro pins and label each wire.
- Glue the gyro to the centre of the back of the hand.
- Extend all the bend resistor wires.
- put the glove on, and slip the other glove over , this helps keep everything in place and also looks a lot neater.
- Glue the rim of the gloves together.

This completes the control glove.

On the other side of the extension wire, about 1.5 of a metre down, strip the wires and attach connector pins.

Step 9: The Stand

I wasn't sure how to mount the arm as I initially wanted to build an elbow joint and shoulder joint, but as the servos for this weren't in stock at the time,I decided to stick with the forearm on its own.

- I found an old stand from a Samsung screen and glued the arm to the slot in the base. this worked better than expected.

- Glue a breadboard power strip to the base or lower arm. this will be plugged into the power supply, and provide power to all servos and Arduino.

Step 10: Resources

Code below:

- Wrist code  Rotation, side to side, up and down using the gyro.

- Finger Control

- Complete Code with filtering

Hurricane Lasers Contest

Runner Up in the
Hurricane Lasers Contest