Adding a position encoder to a robot arm

I recently purchased an OWI robotic arm, and intend to wire it to an Arduino. The arm doesn't come with any rotational encoders on the various motorised joints, and I wonder if anyone has experimented with adding encoders to robotic arms like this.

I'm looking at resistive feedback and optical encoders. Any suggestions or links to projects already done would be appreciated.

You might be able to put pots at each of the joints to provide position indication.

If you mean the OWI-535 - then yes, people have done this - but it isn't easy, mainly due to the small area you have to work in. Here's a couple different ones showing how to use opto-interrupters to detect the rotation of the motors:

http://www.zen21667.zen.co.uk/

Note that these don't directly provide positional feedback, but merely a "pulse" to say the motor is turning; if you rotated a joint in one direction, detecting the pulses, then when it stopped pulsing, you would know you were at one end of travel. Start to rotate the joint in the other direction, and count the pulses until the count no longer increased (note the number), then rotate the opposite direction, counting down until the pulses stop. Subtract that value from your "max value" and call that the "pulses of travel". You can then position the joint where you wanted it by turning on the motor, and keeping track of the pulses. Note that this method won't account for slippage, or external forces moving the joints, etc - but it can work.

To be able to tell "absolute" position optically, you would need (funnily enough) something known as an "absolute encoder". These don't tend to be cheap, nor small.

I have heard of people mounting potentiometers on the outside of the arm, and via a linkage to the joints monitoring the motion that way. You might (BIG "if" there) be able to replace the "opposite" side of the joints (the non-powered side) with a very small trimmer potentiometer...