Monday, August 30, 2010

Rethinking the hand

I'm very slow at times. I became enamored of the Meka robotics hand a few months ago and tended to make my own hand project very like it in many ways. As I was completing my first finger/hand segment design, however, the way that both Andreas Maryanto's hand project and Meka's began to trouble me. I had indentified the situation I was calling the "stiff hand" without being able to work out the implications.

This morning, I waked up at about 0300 knowing full well what a stiff hand implied. If you will look at the Meka hand clip you can see what I am talking about.

Notice how the thumb can only engage the forefinger.

Here is a nice photo of the effect as well.

Looking at the the Meka hand design one could extend the range of the thumb and touch all of the fingers.  Even so, and this is the part that I kept missing, you couldn't wrap either Andreas' hand or the Meka hand around a ball and throw it.  You can grip things with a handle, like a hammer, but not a ball.

People interested in prosthetics kept telling me to locate the servos driving the fingers in the forearm like happens in a human hand.  I wanted the hand to be autonomous because of the complexity of routing the tendons contracting the fingers through the wrist joint.

I've now spent several hours trying to evolve my existing design into something that could curl the palm around a ball.  I've concluded that routing tendons through a wrist joint is perhaps not as complicated as making the palm of an autonomous hand curl around a ball ...  or a doorknob.

For inspiration, I began looking at the anatomy of the human hand.  It appears that the ability to curl the palm around an object is controlled by the thenar {attached to the thumb} and the hypothenar {attached to the little finger} muscles.

So it looks like I have at least

  • five servos for finger and thumb contraction
  • one to contract the tendon analog of the thenar and hypothenar muscles
  • one to control the lateral distance between the thumb and the palm
  • one to control the movement of the palm from side to side
  • one to control the side to side movement of the palm.
That makes a minimum of nine servos.  That's definitely going to fill up the forearm.

I wonder how you get the wrist to rotate?

Sunday, August 22, 2010

Getting to grips with the telepresence finger design

Having worked my way through a number of bugs in the Slice and Dice software I managed to get a workable design for the takeup reel of the telepresence hand finger/hand segment assembly. Space constraints reduced the reel diameter to 6 mm.

Last night I did a quick lashup to test the assembly.

I hadn't worked out what effect that small diameter reel would have on the force levels that the gearmotor. When the gearmotor pulled the unglued assembly apart I began to get an inkling of the implications of my design constraints.  Doing after-the-fact calculations I discovered that the gearmotor was applying a maximum of about 4.75 kg to the finger tendons.  That is an almost crushing force.

This feedback had immediate effect on a number of design decisions I had previously taken.  I had been using nylon twine for the tendons.  That was not so much a problem save that I had undertaken to use a simple knot in the twine for securing the tendon to the reel.  It seems fairly clear that that isn't going to work.

I'm currently thinking that lead or steel crimp beads of the sort used in sash cords for venetian blinds may be more appropriate.

Friday, August 20, 2010

Counting on your fingers in binary

I printed up a second finger/hand segment assembly so that I can see how things ought to fit together to make a hand.

I've also bought some of these narrow profile gearmotors from Solarbotics.

If they work out I should be able to create a much more compact telepresence hand.  The dimensions on this puppy are 13x19x53 mm.

Thursday, August 19, 2010

Making segments of the hand

After some drama with my Slice and Dice app, I was able to print a first a segment of the hand into which the telepresence finger fits.

I want to have all the gear that runs the hand within the body of the hand itself rather than cabled into the forearm.  It will take quite a few design cycles to achieve that, I think.

Thursday, August 12, 2010

More about flex sensors

It appears that the sensor fully extended has a resistance of a bit over 17K ohms. That drops about 10K ohms when the sensor is bent 180 degrees.

Flex sensors arrived...

Jameco may not have the selection of a Mouser or a Digikey, but if I order at the beginning to middle of the week, I can get 1-2 day delivery via FedEx as the cheapest delivery option. :-)

Ordered the flex sensors Tuesday afternoon and they arrived about an hour ago. :-D

Wednesday, August 11, 2010

Servos and firmware

I had a while last evening to work on a bit of driver firmware for the servo for my the telepresence finger.

I had just got it working properly when what appears to be a on-chip fault developed in my 18F4550 MCU that disabled USB comms with the controller board.  I was, however, able to work with the RC Servo long enough to grow not all that impressed with it.

Basically, a RC servo consists of a small gearmotor which is coupled to a potentiometer which acts as a feedback mechanism on position.  A small bit of electronics controls the feedback dynamic and converts repeating incoming analog signal into positioning instructions.  These things were made to be controlled by radio control sets for model airplanes and boats.

In my application, I use a MCU to create the analog signal.  While I was debugging the firmware the little epiphany came to me that there were far too many unnecessary parts in the overall system.  As well, the range of motion of the servo is kind of limited and they are a bit expensive.  I have gearmotors which are smaller and far more powerful than the servo and my MCU can control them.  For feedback for my telepresence finger, a flex sensor...

...makes far better sense than a potentiometer and why have extra electronics when you can dedicate an MCU that controls a gearmotor according to feedback from the flex sensor for about $1?

My friend, Josh Hall, is building a robot starting from the shoulder and working down while I am going in the other direction.  The high torque gearmotors that he is using cost about $500 each.  You can buy hugely powerful gearmotors mass produced for the automotive industry surplus for about $10 and out of the catalog for $30-50.

I think I am going to buy some flex sensors and use this small and very efficient gearmotor directly with my MCU...

...and see where I can go.

Monday, August 9, 2010

Reading more closely...

I was setting up to do the firmware to control the HS-322HD Servo for my telepresence finger and went back to do a little due diligence on the performance documentation. When I ordered it the catalog listed it as having a 120 degree range of motion.

When I actually got into the specifications, I discovered this little gem...

It turns out that the 120 degree range of motion was determined by the RC transmitters, not by the servo itself, which could do 180 degrees.  The microcontroller board doesn't have limitations on signal duration, so I can run the fool thing at a full 180 degrees with no problems at all.

That's nice, except that I designed the servo reel for 120 degrees  movement which meant a 38 mm diameter reel.  Having 180 degrees movement means that I only need a 25 mm reel. That means that the servo is going to give me 60% more pull and the size of the hand containing it shrinks dramatically.

That is super good news except that I am going to have to redesign the servo reel.

Oh well, that shouldn't take too long.  I just have to change some dimensions. {famous last words...}

Servo reel done

I finished designing and printing the reel for the servo that drives the finger.

Next steps are to design a mounting harness for the finger and servo and program a boilerplate firmware app to run the servo.

Monday, August 2, 2010

The telepresence finger: Take 2

I redesigned the prototype finger over the weekend. The controlling tendons are now inside the finger structure out of the way instead of hanging loose. I have a single tendon across the top side of the finger as you can see here.

Dual tendons run across the bottom of the finger and are exposed now only at the joints.

For scale, the prototype finger measures 100 mm from knuckle to fingertip, the length of my own index finger.  It is slightly wider than my finger at this point.  There is nothing to stop me from narrowing it down, now that I have the design issues pretty much addressed.

I reduced the joint shaft diameter slightly to reduce the need to clean the part after printing.  As well, I've adjusted the joint resistance to increase with each joint from the first to the third (knuckle).  This enables the finger to contract beginning at the fingertip and curling down in a natural manner as the inside tendons are pulled.

Full contraction or extension requires roughly 38 mm extension of the affected tendons.  Given that I am initially using a 120 degree servo motor I will be requiring a servo rotor of about 18 mm diameter to effect the full range of motion for the finger.

My decision to use standard plastic model airplane cement (butyl acetate) seems to be a great success.  The joints are permanent with ABS and I avoid the whole drama and expense of sourcing #4-40 (equivalent to M3) nuts and bolts.  Unlike epoxy, butyl acetate joints set within a minute and are ready for use within an hour.