August 08, 2005
How to build the robotic arm (wrist to shoulder)
This post is the step by step how-to instructions for building our first generation robotic arm (from the wrist to the shoulder). This entry includes zipped design files ready to be augmented or printed on a 3D printer, part pictures, assembly instructions and some general info on our progress...
In June we decided to take a new approach. Michelle is going to build a smaller, less expressive “michelle robot” and I am going to build a bigger and pretty expressive “james robot”. The james robot is going to be built around cheap available motors that can be augmented to provide for closed-loop control. Closed loop just means that our control system will have active feedback that will dynamically control the motor speed, acceleration, etc. When I say closed loop I don’t mean RC servo’s or DC servos with potentiometers. RC servos have a limited form of positional control but no user accessible feedback loop. And potentiometers aren’t very good positional feedback for our purposes as they are noisy, wear easily and are not reliably repeatable.
For the james robot, the first step was determining a size large enough to accommodate our motor assemblies, harnessing, etc., but small enough to remain very light and be considered miniature. So I shopped around for motors that would be cheap, small and enable closed loop control via encoders. At Honeybee we use Maxon and MicroMo motors. These are great motors and you can find them in small packages, but the cost was prohibitive for both our project and the low-cost DIY robot we want to make available.
So I decided I would try to find separate shaft encoders and motors and try to make an assembly (or a couple varieties of assemblies) that would couple them via gear pairs or pulleys or whatever. We tried out a number of different motors and finally decided we would use a few gearmotors from solarbotics. We chose the solarbotics motors because they had a range of reductions, sizes, shaft output orientation and were overall very light, very cheap and very available.
Check out solarbotics here
The GM3 224:1 gearmotor and the GM14 Sanyo 297.1:1 gearmotors have seen the most action so far in our arm assembly. The GM3 (and the GM2, GM8 and GM9) are all similar, use the RM3 DC brushed servo motor and have plastic gears and housing. They all also have an output D-through- shaft that can couple to an encoder shaft. The regular output shaft is also easy to couple to and the motor is pretty easy to mount with two built-in mounting through-holes. They are capable of 50 in*oz of torque, with a kludge clutch rated at 60 in*oz and a weight of 1.31ounces. They cost ~ $6.00 each.

The GM14 is smaller, lighter and has metal gears. This is a very small motor, small enough to universally make people say “cute” when they see it. It produces ~40 in*oz of torque and weighs .29 ounces. The output shaft has a flatted side, so it is easy to mount to, though there isn’t much shaft axially in general. Not particularly easy to mount but it does have some mounting holes and can be mounted by putting the whole motor in a rectangular recess. They cost ~ $25.00.

Both motors run on ~5VDC and draw current in the range of 100 ma to 600 ma.
I choose the U.S. Digital S4 miniature optical shaft encoder as the proprioceptive feedback device. This encoder is cheap, small, very accurate, comes in a number of resolutions, is easy to mount and can be purchased with a gear bearing shaft so the encoder can handle a substantial radial load. They cost ~ $45.00.

Check out U.S. Digital here.
So with these motors in mind I started trying to build an arm starting with the assembly for the elbow of the james robot. I picked the elbow for no particular reason, but it turns out biomedical engineers also use the elbow diameter as a figure of merit for human factors engineering. It looks like the smallest I can make the elbow joint is ~2" diameter. I could go smaller but it will actually cost more, as the gearmotors I would need are real cute and realy pricey. I decided to lock the size at ~52% scale to the 50 percentile man age 20-65 as documented by The Measurement of Man and Woman You can look at the overall arm dimensions in the Arm_Dimensions.xls in the Arm section of the DIY robot KIT.
The following design represents our first generation robotic arm. The current design has 3 DOF not including the wrist and up to the shoulder. This arm allows for motion approximating the motion of a human arm, including bending the elbow, forearm pronation/supination and gross supination/pronation.


The overall integration of the arm with its actuators can be accomplished in under ten minutes not counting soldering of leads, cabling and harnessing. The following numbered list describes and illustrates the basic assembly and integration of the arm.
1. Collect all 7 ABS parts, 3 S4 shaft encoders, 2 GM14 small metal gearmotors, 1 white plastic GM2 gearmotor, 3 plastic gears, 2 plastic hubs, 2 #2 socket head cap screws and nuts, and a heavy duty 6” rubber band.
2. Insert S4 encoder 1 shaft into the 0.372” hole in the upper arm motor/encoder mount (Part 1) until the encoder is flush. Lock it into place with the nut using a small wrench or pliers.

View larger image
3. Insert S4 encoder 2 shaft into 0.372” hole in the upper arm mounting substrate (Part 2). Then begin to attach the encoder/motor mount (Part 1) to upper arm mounting substrate (Part 2) by lining up the two 0.115” mounting holes by inserting 1-1/2” #2 socket head cap screws through the upper arm mounting substrate and the encoder/motor mount.

View larger image
4. Insert motor onto #2 screws until flush with encoder/motor mount. Tighten down nuts with socket set or wrench. Insert the hubs (Hub 1 & 2) onto the GM2 motor and the encoder shafts. Stretch the rubber band from hub to hub such that the movement of one shaft is mechanically coupled to the other. I am going replace this eventually with a v-shaped drive belt made of rubber.

View larger image
5. Insert the shaft of the S4 encoder 2, while still mounted on the upper arm mounting substrate, into the 0.25 mounting hole on the gear feature at the bottom of the upper arm/shoulder rotational drum (Part 3).

View larger image
6. Next, insert the small, thin pinion gear (Gear 1) onto the D-shaft of the GM14 motor 1. Insert the motor into the motor cavity in the upper arm substrate (Part 2). You will need to help rotate the upper arm/shoulder rotational drum so the teeth of the pinion and gear will mesh.

View larger image
7. To finish the upper arm mate the other half of the upper arm substrate, the upper arm mating substrate (Part 4) to the upper arm mounting substrate. Use the motor and motor cavity as the alignment feature. I am going to add a latch to these parts very soon but for now fasten the two halves of the upper arm substrate together with rope, wire ties or rubber bands.

View image
8. Next grab the forearm mounting substrate (Part 5) and place the large pinion gear (Gear 2) vertically in the slot on the mounting substrate so that it is parallel and co-linearly aligned with the 0.372” hole on the mounting substrate. Insert S4 encoder 3 into the 0.372” hole on the mounting substrate and the 0.25” hole on the large gear. Use needle nose pliers to tighten the nut on the encoder.

View larger image
9. Insert the double flatted shaft of the GM2 motor 1 into the double flatted feature on the forearm mounting substrate.

View larger image
10. Insert the GM14 motor 2 D-shaft into the small, thick pinion gear (Gear 3). Insert motor 2 into the motor cavity on the forearm mounting substrate so the gear and pinion are aligned. You may need to help rotate the large gear so the gear and pinion teeth can mesh.

View larger image
11. Lay the Forearm rotational drum (Part 7) shaft and gear features so that the gear meshes with the thick pinion gear (Gear 3) and the shaft aligns and fits into the forearm mounting substrate shaft recess feature such that the forearm drum is secured in the X and Y planes.

View larger image
12. Finally, mate the forearm mating substrate (Part 6) with the forearm mounting substrate using the motor and motor cavity and the shaft recess as alignment features. As before, I am going to make a latch for this so use rope, wire ties and rubber bands to secure these two forearm substrates.

View larger image
In the next section I will illustrate and describe how to create and run the wiring harness for the arm, create service loops to accommodate rotational joints and how to properly solder the motor and encoder leads.

View larger image
All the arm design files can be found in the arm design zip files in the Arm section of the DIY robot KIT. The zips include STLs for printing at service bureaus on FDM machines or ABS 3D printers, IGES part files, Autodesk Inventor part and assembly files, part DWF files and DXF files. All zip files are named according to file type and revision. Download the latest revision as we will be constantly upgrading. For more information on the design, fabrication and/or assembly of the 1ST generation arm please send me an email. The files are licensed under the creative capital non-commercial, attribution, share-alike contract. If you use or modify the design we would love to hear about it and we will be glad to host your new designs (and sing your praises) on the Lab Blog.
Posted by powderly at 02:20 AM
| Comments (1)
April 25, 2005
Arm R&D (Lablog4-25-05)
The arm and body R&D has been a learning experience. 13 days went by fast. We have been doing research since March so we had some idea what size characters we wanted. Michelle leans toward the miniature and I keep thinking bigger is likely easier up to a point, as mini- and micro options for actuators are limited and expensive.
But I planned on baselining shape memory alloy (SMA) actuators and stepper motors into the research as they both had desirable qualities and I am already pretty familiar with servo and hobby servo motor performance and control.
SMA was desirable from the standpoint of cost, quiet operation, compact size, strength and similarity to the human muscle actuation. Basically, you apply a current across muscle wire, a brand name pre-shaped SMA, and you get a small thermally-triggered contraction in the wire at about 70C or 90C depending on the type. Once the circuit is opened, the wire cools and begins to return to its normal length with some hysteresis depending on the mechanical loading and thermal environment on the wire.
An almost comic link on SMAs:
http://www.robotstore.com/shapememoryalloys.asp?afid=home
I set up two experiments using muscle wire from the robot store (see our current baseline document for ordering information). I built a 5 degree-of-freedom (DOF) arm from Fimo clay and wire. Michelle had already built me two previous arms in Fimo in order to determine the ideal DOFs we thought we would need to make a generally expressive arm with a range of motion visually similar to a human arm. I saw two potential areas where SMAs might be useful on the arm: the full contraction of the deltoid muscle and the forearm pronation/supination via the pronator teres muscle.
The Deltoid

The Pronator Teres

The Supinator

The muscle wire was to provide a single degree of freedom, e.g. lifting the arm to the horizontal plane at the shoulder or forearm pronation respectively, while a spring was to enable the arm or forearm to return to a loaded home position.

View larger image
After multiple tests with poor results in terms of both desired motion and two fried slivers of large diameter, high-temp muscle wire, I simplified the test set-up to just experiment with muscle wire control and sensitivity:

View larger image
I have concluded that given the time we have SMA will be a pain in my ass for three major reasons:
1. They contract almost enough to achieve the desired motion but not quite. 3-5% of the total wire length is the suggested contraction in order to get the millions of cycles promised. You can achieve as much as 8% contraction but the lifetime of the actuator will be diminished.
2. They are hard to mechanically connect to the worksite due to their small diameter and operational temperature. They operate at 70C + and ABS plastic is only spec’ed to 60C. This could be remedied by thermally isolating the wire from the plastic mounting and connection features. With the Fimo arm, I used a barrel crimp and crimped a thin-gauge wire (26 AWG) in one side of the barrel with a doubled-up piece of muscle wire. I crimped a bent staple in the other end of the barrel. The staple connected to the eyelet features on the arm. This was clugey no doubt and broke many times during the research. A better solution would be to use a potting compound or epoxy to mechanically fix the wires, SMA and mechanical connections, but this would make it hard to impossible to replace burnt out wires.
3. SMAs are hard to control. One guiding principle in this effort has been to afford each actuator a method of keeping the control closed-loop. This means each actuator should have sufficient position feedback to implement a PID or other control algorithm. This is the minimum needed to make smooth, controllable and expressive motions. With the SMA, I would have to implement feedback via a strain-gauge or flex-sensor and it would need to be very responsive in order to keep contraction within the 3-5% range. And these guys are really sensitive in general to mechanical and electrical damage.
So no muscle wire.
This menas the overall minimum arm diameter and length need to be larger than we had previously thought. The motor and motor assembly diameter will be the primary discriminator in terms of arm diameter.
Now, we have three types of motors to work with: steppers, servos and hobby servos.
Steppers are desirable from the perspective of control and size. Even without feedback, you can construct a type of closed-loop control so you can adjust your step rate to create a movement envelope that is aesthetically pleasant. If you loose your place though, position error would build up fast and it would be hard to correct unless you just routinely returned to a home position identified via limit switch. Steppers are also commonly flat and compact. I found and purchased two Seiko 10mm, 20 steps per revolution stepper motors. These guys are “ahh cute” tiny and worked very well when tested. I used a stepper motor controller chip that Mike Passaretti, a CE colleague of mine at Honeybee, suggested. He let me use the chip evaluation board to test the performance of the motor.
http://allegromicro.com/sf/3967/
http://allegromicro.com/demo/apek3967slb-01.htm
The board worked great. The motor performed pretty well too. It could half-, quarter- and eighth-step and moved up to 1k hz across the full stepping range at under 3 Volts. Here are the problems with the stepper for me:
(I'll insert an image of board and test set-up here tomorrow)
1. They are really coggy when they rotate at the speed at which we would need them to move. Cogging means you can see or feel the rotational movement in discrete intervals corresponding to the internal magnet positions vs. continuous rotational movement. 20 steps per rev is good for such a small motor and even while eight-stepping, it looked jumpy and mechanical. Realism isnt necessary, but it didn’t look believable.
2. These motors have really bad documentation and some really undesirable minimum purchase amounts. I got these 10mm motors at a surplus store. They cant really be relied upon for future use. They don’t have any documentation in terms of torque, operation power, etc. I have found other similar size motors but they can only be ordered in 10,000 + units. The next size up in available stepper motors jumps to 1” + diameter sizes and twice the mass.
While steppers presented an attractive potential in terms of simple control with internal feedback, they also could be difficult to correct in terms of position error caused by slippage and the available steppers were not as compact as I had hoped.
So we arrive where we began. I have used servos with precision encoder feedback, both custom made and COTS, and hobby servos for actuation of less sensitive DOFs. This is an approach used pretty commonly by hobbyists and research scientists alike. Kismet uses maxon motors with optical encoder feedback for the sensitive DOFs, like the eyes, mouth and neck, but relegates the eyebrows, ears and lips to Futabo RC servos.
I know the range of sizes for RC servos:
http://www.aeromicro.com/Catalog/servos_108602_products.htm
I am going to continue investigating servo motors, particularly those with thru shafts, and add-on encoders like these:
http://www.usdigital.com/products/optical-encoders.shtml
In terms of the other arm DOFs and a general summary of the arm R&D:
1. The arm will have 5 DOF:
A. The equivalent to the Deltoid in order to raise the arm out from the body to the horizontal plane
B. The equivalent to the Coracobrachialis for raising the arm out in front of and perpendicular to the body also to the horizontal plane.
C. The equivalent to the Biceps brachii in order to enable pronation and supination of the upper arm
D. The equivalent to the Tricep and Brachialis for flexion and extension of the arm at the elbow.
E. And the equivalent to the Supinator and Pronator Teres for supination and pronation of the forearm.
The wrist will likely also have a single DOF (likely a pulley type assembly) that attempts to simulate to a limited extent the muscles controlling wrist extension/flexion and the fingers (Flexor digitorum sublimis, Flexor carpi ulnaris, Palmaris longus, Flexor carpi radialis)
The wrist and hand DOF and DOF D will require a right-angle conversion, likely a beveled gear and pinion assembly.
Posted by powderly at 03:48 PM
| Comments (0)
|