Sunday, July 21, 2013

Twenty five mm diameter is possible

I was able to print the components for a 25 mm diameter planetary gearbox on my 3D printer.  The only question that remained was whether I would be able to scale down the monofilament reel from 42 mm diameter to 25.  

As it turns out, I could.  The bevel gear pair and reel spool sized down quite nicely.  I've never printed gear teeth that fine on a 3D printer before.  These are functional.

Friday, July 19, 2013

Since early June

Since early June I've pretty much off the grid with the Inmoov project.  That is, off the grid, but not inactive.

Back then, I was busily modifying JHack's 5 servo rack.  This brilliant little design had the servos spring loaded with small magnets and Hall effect sensors to give a measure of the force of the grip of each hand on a held object.

The further into this exercise I got the more I began to question what I was doing.  I think the turning point came when I looked at Gael's finger testing rig.  You can see what happens in this little vid of his.

You can see that Gael, like most makers of mechatronic hands uses a single servo to mimic the two tendons leading from the fingertip to the forearm.  The problem is that a human finger has not one, but two tendons on the palm side of the hand, not one.

This says that you need at least two servos to give the full range of motion for a finger, not one, not to mention the small muscles in the palm which allow humans to move individual fingers laterally.  In fact, the human hand is controlled by some thirty five muscles, eighteen in the palm and seventeen in the forearm which control hand movement via tendons which go through the wrist into the hand.

Looking back at the JHack illustration at the beginning of this post, you see five servos and don't see two others nearer the wrist.  Obviously, hand and wrist motion is only going to be an approximation of what a human can do.  You can get smaller servos, but then you run into a problem that they're not powerful enough to give you a useful grip.

Gael has recently been exploring thickening the palm with servos.  The approach has been successfully applied more than once, but still begs the problem of that extra tendon needed on the palm side of each finger.

My approach has been somewhat different.  It seems obvious to me that we need a more compact linear force system than hobby servos can supply.  The obvious answer is linear piezoelectric motors.  The cost of those which can be applied to our needs runs in the vicinity of $800-1,000, though, and controlling linear piezoelectrics is a whole different game.  Imagine buying thirty four of those for each hand.

I decided to give hobby servos a closer look.  They basically consist of a motor, a gearbox, a potentiometer and some electronics.  When you take one apart this is what you see.

These servos were designed to operate the control surfaces of radio-controlled model airplanes, not robots.   They are modular, which is useful, but greedy for volume.  My colleague and friend, Andreas Maryanto who lives in Borneo and works on a project he calls Dexhand, tells me that the Japanese have gone over to using simple gearmotors.

I found that if I look at just the parts in a servo, I could reduce the space requirements considerably by stripping out the electronics and relocating that in the thorax.  Once that's done, we have an awkward gearbox in our way.   It struck me that the gearbox should be no bigger in cross section than the motor.  For serious work the old planetary gear box would suit that closely. After several false starts, I found one that was fairly solidly designed, though far too large.

Planetary gearmotors are relatively abundant on the market, though a bit expensive.  You can get them from as small as 6 mm in diameter on up.

I finally purchased a pair of Tamiya planetary Gearbox sets.  While larger than I would have liked at 28 mm diameter the Tamiya gearmotor was both powerful and allowed you to choose your own gear ratio.

Ordinary muscles sense tension, not position, so I decided to measure that instead of using a potentiometer.  Using the Hall Effect sensor, magnet and spring scheme that JHack used, I designed a sensor to enclose a spring.

The spring had a fairly linear compression ratio from 0-3.5 kg.  Unfortunately, while the Hall Effect sensor was linear with regards to the magnetic field encountered, it was not linear with regards to the distance from the magnet.

I was eventually able to calibrate it, however.  That done I had to design a takeup reel for the "tendon" connecting the gearmotor to the finger.

The resulting ensemble was big and bulky but demonstrated the configuration.

That done, I began a second iteration of the design of this artificial muscle aimed at trimming the sizes of the components.  Currently, I am working on the planetary gear box., that being the most expensive item in the ensemble.  Arriving at a design which borrows both from the mcentric design on Thingiverse and the Tamiya gearbox, I have been able to produce a working 25 mm diameter gearbox which has a reduction ratio similar to the Tamiya gearbox.

I am using small nails for the axles of the planetary gears.  The 4:1 reduction stages that you see in the picture are prototypes.  I will be reducing the length of those considerably as work continues.  Reducing the diameter of the gearbox will prove more difficult.

The current 25 mm diameter gearbox reduces the cross sectional area of the servos in the forearm by a bit more than half and presents a much less awkward cross section to work with than conventional servos.

The Hall Effect sensors cost about $1.50 retail and the magnets and spring about about $0.50 each.  Motors of the power required can be had surplus for about $0.50 each.  Except for the monfilament, wiring and electronics, the rest can be printed.

Tuesday, June 4, 2013

Modifying JHack's servobed and cover for easy mounting and removal: part 2

I was able to finish a rough draft of the new screwed down cover last night and printed it this morning.  Here is the print with support material.

Oddly, when I peeled support material off of it, one corner of the front screw-down tab was warped.  I'm not all sure why that happened.

I decided to make the guides an integral part of the cover so that there would not be a lot of gluing and messing about with the assembly.

Sunday, June 2, 2013

Modifying JHack's servobed and cover for easy mounting and removal: part 1

I did CAD work for the mounting block additions to the lower and upper halves of the loser side of the left hand forearm over the weekend.

I began by printing and gluing together the upper and lower halves of the left forearm.

I did a similar thing with Art of Illusion and Netfabb in CAD.  With both a real and virtual forearm bet I added JHack's servo bed.

With that model I was able to locate mounting blocks which snugly held the servo bed in place.

As I began to print test parts around 1100 on Sunday, however, my UPS system died, so I spent five hours getting a new one, which is also faulted but works for now.

I did a partial print of the lower half to see if the blocks holding the lower sides of the servo bed fit properly. Here you can see the blocks in place on the left.

On the right you can see the dummy block for the top of the servo bed in place in the glued lower half of the forearm.

Here I fitted the servo bed into the partial print.  The bed slides into place easily and the blocks are flush with the top of the bed.  

Wednesday, May 29, 2013

Printing the JHack simple servo bed

Jhack's derivative of the simple servo bed seems to be an improvement over the original simple servo bed that Gael posted recently.  It is certainly simpler to mount servos in it.  It is, however, fragile, in a few places and it isn't obvious how you attach it to the forearm shell save using glue. The same can be said for the cover over the servos that fits on top of the bed.  Once glued down, it would seem to me that you'd have to tear the while forearm apart if a servo failed.  I'm probably going to try to modify that while I'm waiting for the rest of my HK15298B servos to arrive.

The simple servo bed was a touch too big for my UP! Pro 3D printer so I had to tilt 45 degrees on the vertical to fit into my print volume.  Given the height of the resulting print, I had to use the stable support option which took a lot of filament to make the support and a lot of extra print time.  You can see the finished print here.

The extent of the support structure needed is quite clear.

You can get an idea of the nature of the paper-thin support structure in this pic of the support structure being removed.

While the removal of the support structure looks like a formidable task, as a practical matter it took less than ten minutes to clean it from the print.

The cover, not pictured, required a similar support structure.  It was considerably more fragile than the bed and required greater care in removal from the support structure.  I was able to do that successfully, however.

Friday, March 22, 2013

Seating the new, larger leadscrew in the bicep

Gael quite rightly suspected that the new, stronger lead screw I developed for the bicep would clash when it tried to seat in the recess in bottom of the RotGear.  Raising the hole that the thrust collar axis seats in by 11.5 mm sorted that problem out quite prettily.

Here you can see the revised HighArmSide part that supports the thrust collar.  I've overlaid the revised design over the old.  As you can see the new mounting hole has been moved upward a bit.  I simply plugged the old hole and cut a new one in the STL file.

Here is the forearm at full extension.

Contracting the forearm towards the bicep at the elbow.

Fully contracted, the lead screw slides into the recess in the bottom of the RotGear which allows the bicep to rotate in a perpendicular plane to its axis.

A closer view.

Removing RotGear you can see the lead screw seated where the recess in the bottom of the RotGear is.

A closer look.

Wednesday, March 20, 2013

Working on the Inmoov forearm/bicep actuator.

Gael Langevin's Inmoov robot uses a lead screw/thrust collar arrangement to move the forearm with respect to the bicep. He has noted that the lead screws are rather fragile and has, apparently, bought steel replacements.  I've priced lead screws and thrust collars and they are a substantial expense.  Given the goal of keeping the InMoov robot inexpensive it would seem that we should have another look at the notion of printing a lead screw.

While trying to get the servo for the elbow joint going I discovered that the 12.5 mm lead screw printed in ABS tended to suffer a shear failure in extension quite easily if you didn't have the potentiometer and servo settings just right.  After I'd broken three of them, I decided to take a crack at seeing if I could design a more robust lead screw with a larger cross section that would resist shear failures better.

I finally got a working model going this morning.  The cross sectional area of the screw is about 4.75 times larger than the 12.5 mm original. Basically, doubled the diameter of the lead screw and doubled the diameter.

Tuesday, March 12, 2013

Progress on the bicep gear box.

Well, I redesigned the lid on the bicep gear box and got all the pieces printed out.  I discovered that to print big footprint pieces you need to recalibrate the print table when you do a big print.  That doesn't take a long time and appears to be necessary if you intend to print pieces with dimensions over about 90-100 mm.

In any case, I spent a little time upgrading the lid to the gear box so that it take much less after print hand working than it did before.  The involute profile gear and the worm gear are, of course, opposite what one has in the shoulder.  For a 3D printer, that is not a big matter.

I did notice that the axis in the gearbox for the worm gear is about 0.5-1 degree off true.  That doesn't cause any real trouble, but I will remedy that later on.

I slapped on the same servo that I'd modified for the shoulder and, of course, the leads into the potentiometer were backwards to what they needed to be.  :-)

All the same, the HS-805BB servo turned the drive shaft barrel easily without lubrication.  

I got notice from the vendor for the spare gear sets for the HS805BB that they will arrive either this Friday or next Monday or at latest onTuesday.  Of course, they'd promised to deliver them by this Friday when I ordered them.  :-D

This weekend, I hope to have the time to get test the servos on the lead screws that position the forearm and the bicep away from the body.

Monday, March 11, 2013

Printing the gear box

This is just a minor note.  I am using an UP! printer to do the parts for the InMoov robot.  Fortunately, its 120x120x120 mm print volume had been sufficient to the task.  Lately, however, I've encountered a bit of a problem since beefing up the gear box design for the shoulder and bicep.

The UP! has an iron print base with heat applied in the center.  Of course, you get a thermal gradient with such a design and the edges are considerably cooler than the center.  The larger the footprint of a print the more likely you are to get lifting at one of the corners of the print.  The new gearbox has a footprint of 110x120 mm when printed on the large flat side.  It appears that that is about the limit for ABS printed on perf board.  Two prints of the gearbox got noticeable lift on one corner of the print.  These lifts were cosmetically annoying but did not compromise the functionality of the box.

All the same, my aesthetic sense was offended, so I reoriented the print to rest on the new box structure that encloses the servo.

This alteration reduced the footprint to 55x95 mm and does not cause corner curling on the UP!  It does, however, require 40 minutes additional print time and uses about 8 cubic centimeters extra for support material.

Here you can see the printed result.

The UP! leverages the same print preparation software used in Delta Micro Factory's larger, professional printers.  The sophistication of the support structures is readily apparent in the finished print.

Removal of the paper-thin supports is a very simply matter.

Thursday, March 7, 2013

Left Shoulder Progress

Sadly, my consultancy is in a parlous state thanks to a perfect storm of crazy circumstances, so my thoughts and time have been almost completely consumed in the past month in doing everything I can to make sure that my contributions are not part of the problems my clients are facing. Over the weekend and in the odd hour this week, however, I've turned back to my project to get the left shoulder, arm and hand of Gael Langevin's Inmoov working.

I have been working on the Kinect motion capture part of the project in recent weeks while my broken UP! 3D printer was properly diagnosed by Brian Quan at X-objects and the warranty replacement parts dispatched.  On Tuesday, a full extruder head assembly arrived which enabled me to put the printer back into service.

Just before the UP! failure last month, I decided to redesign the worm gear box that is used so extensively in the shoulder.  My main objective was to create a smoother running gearbox that required less modifications after coming out of the printer to work.  Initially, I was going to do a radical redesign of the gearbox.  Eventually, however, sanity returned and I decided to make as few mods to Gael's gearbox design as I could so that other people building Inmoov could, if they wanted, use my modified box as well.

Aside from some minor mods to let the box work more smoothly with the involute profile gear and matching worm gear which I published in Thingiverse, the major problem that I wanted to address was the difficulty in assembling the box and especially in mating the worm gear to the servo.

Gael screwed the worm gear onto the servo's nylon turntable.  When I tried that, the screw heads clashed with the gearbox.  I found that when I put the screws in from the nylon turntable side, however, I had ample clearance without disturbing the basic gearbox configuration.

In this configuration it became a simple matter just to plug the servo into the back of the nylon turntable.

Placing the screw heads on the backside of the turntable did, however, create one minor clashing problem.

I had to place the screws on the next line of holes in on the turntable instead of the outside ring as Gael did.  Originally, the gearbox had a rather angular opening to accommodate the servo drive shaft.  I had to open that up a bit to let the screw heads pass properly.  This was no big matter.

Here you can see the nylon turntable and screw heads in the actual modified gearbox.

In a brief correspondence with Gael he mentioned that the weight of the arm was going to be critical to its successful operation.  That got me to worrying that we would eventually have to increase the torque to the gearboxes.  A search revealed several other servos which had much higher torque ratings available at prices either near or not too far from what the Hitech HS-805BB cost me.

I noticed that the original gearbox design depended heavily for stability on the strength of the servo box attached with screws to the gear box.  To lessen that dependence I strengthened the frame containing the gearbox so that more powerful servos could be used.

Finally, I did a little paring on the gearbox to give better clearance to the involute profile gear and the connector between the worm gear and the servo turntable.

The top to the gearbox will require some superficial modifications as well.  I used a Dremel tool with a sander to make them for this exercise and will apply the mods to the STL of the top later on.

Overall, the modified gearbox is no great departure from Gael's original conception.  I checked and it is not substantially bigger than the original and does not clash, as best as I can determine, with the bicep/shoulder assembly.

At that point I was ready to mate the servo into the gearbox and test the ensemble.  Unfortunately, I missed trimming the gear stop from the main drive gear, something that Gael very specifically showed me how to do in this pic in his assembly instructions.

That little omission cost me two stripped gears in the servo when I fired it up.  Fortunately, replacement gear sets for the HS-805BB cost about $10, so it was no big tragedy.  I cannibalized replacement gears from one of the other servos.  At that point, I discovered that what Gael thought was left and what I thought was left were two very different things.  Once I swapped the leads on the potentiometer, the gearbox behaved brilliantly!

Note that the gearbox runs smoothly without grease.  Mind, I intend to grease it when I put it in service, but for now, it doesn't need lubrication.

Monday, February 25, 2013

Sorting out the Kinect skeleton feature

The Kinect has some very clever software and firmware which enables it to capture the skeleton patterns of up to two people at the same time.  I have been tracking the progress of the Kinect since it's introduction and bought a commercial, as opposed to an Xbox release, when it became available in 2012.  With the rapid completion of the Inmoov robot print here and the successful testing of the Mini Maestro 24 servo controller with the Hitech HS-805BB servos used to move the arms and shoulders, I began to delve into the Kinect SDK.

The Kinect can capture skeleton patterns in two modes; full body...

...and upper body {seated}

Extracting the Cartesian coordinates of the bones in three dimensions is straightforward.  Being a naturally suspicious sort, however, I decided to check to see how consistent the length of the individual bones actually was.  As I suspected, they vary.  This shouldn't be surprising considering the wickedness of trying to figure out the position of bones buried in flesh and muscle starting only with surface measurements of the body and on top of that making the calculations at a rate of thirty frames per second.

Just eyeballing the captured data it appeared that the bone lengths were varying wildly.  When I took a mean and standard deviation for each bone, however, I discovered that the calculation was remarkably consistent. I made a test data set using myself as the subject.  The measurements are in meters.

Mean SD
Left 0.217 0.017
Right 0.218 0.013
Left 0.242 0.025
Right 0.241 0.026
Left 0.235 0.024
Right 0.235 0.026
Left 0.089 0.034
Right 0.086 0.029

The numbers are not too bad.  The wrist/palm measurements are the worst.  I have extra code which I hope will give better results for the hands and fingers.

The next step will be to see if I can transform the coordinates into something more useful with the Inmoov by fixing the bone lengths to calibrated means.

Saturday, February 23, 2013

Kinect Progress 13-02-23

This morning, I got a note from the UP 3D printer people that they wanted to do a Skype video session to put my printer right.  I thought they meant right then, but was wrong, apparently.  While the new extruder heater block helped matters it didn't fix my UP.

In the meantime, I worked on the Kinect motion capture task.  I have it capturing the upper torso, head and arms and transferring it to a disk file.  My programme is very crude.  I simply identify the joints and put the coordinates in a list box.  Surprisingly, my PC and Visual Basic 2010 is able to keep up with the 30 frames/second that the Kinect does that process at with no effort whatsoever.  After I record a session, I simply save the XML formatted information to a file.

My next task is to restrict the saved output to the left upper torso, shoulder and arm and to covert the cartesian coordinates to joint specific coordinate systems which match the kinematics that Gael has designed into the Inmoov arm.

Wednesday, February 20, 2013

Digging into the Kinect

I've been avoiding getting into .NET for years, but now I am having to get on with learning it.  The first thing I've encountered is a whole new set of controls called WPF {Windows Presentation Foundation} controls.  So far, so good.

Starting with the Skeleton tracking routine written in VB.NET 2010, I dug around in the data structure and managed to locate the Cartesian coordinates of the major body joints that Kinect is so adept at locating.  They are generated at 30 times/second and fill up a listbox rather quickly.

Watching the graphics display, it appears that adding a simple motion smoothing routine would be very useful.  I'm surprised that something of the sort wasn't included in the firmware.

The scale of the coordinates appears to be meters.

Monday, February 18, 2013

Kinect is active

I was able to get Kinect going and run it through most of its paces.  It can capture a 3D radar image out to about 4-5 meters as you can see with this colour coded screen grab.

This perspective projection gives you, perhaps, a better feel for the depth of the space.

Oddly, it flips the data from left to right.  I don't know what that is about yet.

It does face tracking down to about a meter away from the Kinect and skeleton tracking down to about 2 meters.  I was unable to capture that with the very primitive Visual Studio apps that I have so far.  I thought it showed the orientation of the palm, but with what I have I apparently don't have that possibility.

I was also able to videotape the skeleton tracking option.  Here is the full body tracking.

I understand that Microsoft used quite a large farm of servers to develop the parameters for this feature.  Notice that you have trouble when a foot leaves the visual field of the Kinect.  Also notice the problem when you accidentally get one leg behind the other or behind an obstacle, in this case a stool.

Here we restrict tracking to the upper body, viz, "seated mode".

Notice that when the hands leave the visual field of the Kinect the same thing happens that happened when the feet left the visual field in full body mode.  Also note what happens when I placed one and the both hands on my head.I was able to locate some open source finger tracking software for the Kinect that was written in Spain.  I will be trying that next.

An alternative to hobby servos?

The University of Tokyo is going at creating animatronic muscles in an entirely different, yet simple to implement way.  They basically use a block and tackle arrangement to multiply the torque of a coreless 
motor instead of gears.

A robot, activated with this approach reminds me of nothing so much as an antique sailing ship.

I am not much impressed with their robot's walking, but other movements are quite natural.

It apparently achieves a much better kw/kg ratio than more conventional robots.