This website has moved to:

http://solbergweb.com/james/engineer/old_class_files/fist/fist.htm

 


 
 

FIST OF FURY

introduction   |  system specifications   |   design
 

James Solberg
Jayson Valluzzi
Mike Withrow

May 8th, 1999
 


Introduction
The Fist of Fury is a five degree-of-freedom android hand that is externally controlled by an instrumented user glove or a Visual Basic GUI.  Each of the five fingers is independently controlled by five servomotors that provide tension to the “tendons” that pull the fingers open or closed.  A map calibrating the instrumented glove to the Fist of Fury will be established.  So, only open loop control of the Fist of Fury is needed, and there is no need to instrument feedback sensors on the Fist of Fury.

The Fist of Fury was fabricated from stock aluminum.  Each finger was composed of four links and three joints.  The base link was rigidly fastened to the palm. Although each finger has three joints and four links, due to the use of a single tendon to move each finger, each finger only has one degree of freedom.  The servomotors will be attached to the forearm of the Fist of Fury.

The user interface instrumented glove consists of a bend sensor attached to each of the five fingers.  When placed in series with a fixed resister and subjected to a constant voltage source, the voltage across the bend sensor will change with the bending of the finger.  These voltages can then be interpreted to control the position of the corresponding servomotor on the Fist of Fury.  Once the glove is placed on the user’s hand, the Fist of Fury will mimic the finger motions of the user.

The Fist of Fury has the option of being controlled by Visual Basic.  Once again the control need only be open loop.  The VB interface will be capable of controlling the individual fingers or the entire Fist.  VB will also be used to calibrate the Fist of Fury in case the Fist of Fury is in suspicion of losing calibration.

TOP OF PAGE   |   BACK to engineering credentials   |   BACK to engineering projects   |   JAMES' HOME


System Specifications
The following is a list of specifications that our system was designed to meet.

  1. The Fist of Fury is modeled after the dynamics and structure an average adult male hand.
  2. Each finger can move independently (exactly one degree-of-freedom per finger).
  3. All active control in open loop.
  4. The Fist of Fury’s bandwidth must be comparable to that of the human hand.
  5. Fist of Fury is made durable to withstand extreme loads, fatigue, and environments.
  6. The Fist of Fury can mimic the movements of an instrumented user glove.
  7. Each of the fingers of the Fist of Fury can be manually controlled from a slider in Visual Basic GUI.
  8. Another slider in VB will move all five of the fingers simultaneously.
  9. A “CRUSH” button in VB will cause all five fingers to rapidly close.
  10. An Emergency Stop button in VB will first cause all fingers to release (fully open), then quit the program.
  11. The Fist of Fury is able to grip and hold objects of various geometries and weighing in excess of two pounds.
  12. The Fist of Fury will crush fragile objects.
  13. Whenever possible, signal lines are shielded or at least twisted with its corresponding ground wire to minimize the affects of electromagnetic noise.
  14. To further negate the affects of Gaussian noise input signals are subjected to a low pass filter.  Although this technique imposes a phase lag to the system, the sampling rate of the sensor (1,000 Hz) is more than an order of magnitude faster than the dynamics of the Fist of Fury.
  15. An external and highly stable power supply is used to power our sensitive glove.  Using the same power supply as that used by the servos creates erratic outputs.
  16. The VB GUI will display the type of control currently being used (Glove, VB slider, etc…).
  17. VB will calibrate the glove every time it is used.
  18. The VB GUI is made user friendly (easy to operate and aesthetically pleasing).
  19. Tasks demanding excessive CPU time are optimized to ensure the PC is not overloaded.
  20. The control signal to the servos must be a pulse sent every 20 ms, and the duration of the pulse high (called the duty cycle) sets the position of the servo.
  21. The Fist of Fury is safe to use and fun for the whole family, although the Fist of Fury’s engineering staff is not responsible for any bodily harm directly or indirectly caused by the Fist of Fury.
  22. The Fist of Fury will never go unstable.
  23. Buttons and other event creating devices on VB will only be enabled if that event is appropriate.
  24. The words “FIST OF FURY” on VB’s GUI will indicate the user’s current level of safety.  Green is OK.  Yellow means caution.  And Red means the user may be in serious danger.
  25. An additional VB GUI debug form is also available.  This form explicitly displays important control state variables such as glove readings, current state, and servo set point.
  26. If a VB GUI button is blue, the user must perform specified action while clicking that button.
  27. A green light next to a button means that button describes the current state, while a red light means that the user may change to that state.
  28. Servos must be constrained to move the fingers only between the fully open and fully closed positions.
  29. The user glove is ergonomically designed to accommodate 95% of the population.  The glove is not designed for the demographic population having the 3% biggest hands or the 2% smallest hands.


TOP OF PAGE   |   BACK to engineering credentials   |   BACK to engineering projects   |   JAMES' HOME


Design
Once the system specifications were laid out, a design was formulated that met all of the set specifications.

Fingers, Palm, and Forearm
The first and most time-consuming part of the process was the fabrication of the fingers and forearm.  The fingers are constructed from ½” by ½” stock aluminum.  Each finger consists of three joints and four links with one of the links rigidly attached to the palm.  Each joint used a journal bearing where the journal is, or course, made of aluminum, and the bearing is a stainless steel pin.  It is not recommended to have two sliding surfaces made of aluminum and stainless steel.  But, the loads imposed on the bearings are very small, and such a configuration is acceptable.  For similar reasons it was decided not to lubricate the joints.

Each link has at least two 1/16” holes drilled through.  These holes will house a wire loop that will act as a guide for the tendons.  The base link of each finger is rigidly anchored by a ¼” bolt that snugly fastens to the threaded wrist.  Each joint is designed not to rotate to 180o.  This is because if the finger links ever line up straight, then the link system would be in an unstable point of equilibrium with respect to the tension in the tendon.  From a controls perspective this is not good, because now when tension is applied to the string, the movement of the links is unpredictable.  At this point the links could just as easy rotate in the wrong direction.

The palm and forearm were machined from the same piece of 3/16” thick aluminum plate.  The machined piece is 16” long and gets as wide as 6”.  Ten 3/8” slots were milled on the forearm.  Each pair of slots corresponded to a servo.  One slot was to fasten the servo to the aluminum base, while the other allowed the wheel to rotate in a manner that provided tension to the fingers while opening and closing.

Movement
Once the metal was crafted, a scheme needed to be devised that would enable the fingers to mimic the motions of a human hand.  Human fingers use tendons to transmit the tension provided by muscle.  In this design the tendons are high-tension woven nylon, and the muscle is the servomotors.  The nylon runs through a series of loops that keep the tendon close to the finger.  The tendons run both underneath and on top of the finger which allow the servomotors to provide tension for both opening and closing of the Fist of Fury.

 Each of the five servomotors is driven by an external Zilog chip.  An external chip is used to control the servos because using software on the host PC’s processor could completely exhaust the CPU.  The signal pulse is sent every 20 ms, and the duration of the pulse high (called the duty cycle) sets the position of the servo.  So, as the servo moves, it provides tension to the appropriate line that shortens its length and forces the finger to bend in order to comply with the shortening of the line (remember, the tendons are kept close to the finger links).

 The Fist of Fury was modeled after the dynamics of the human hand.  In many ways the Fist of Fury exhibits responses at least as good as its carbon-based companion.  For iterative movement involving feedback ( movement requiring closed-loop control ) the human hand is obviously better ( Fist of Fury has no internal feedback mechanism ).  But for rapid-traverse open-loop positioning, the Fist of Fury wins hands down ( excuse the pun ).  The quickest human reaction time is never faster than 150 msec, and that is just to initiate the movement.  The Fist of Fury’s time to initiate its move is virtually instantaneous compared to the human hand.

Software Overview
The software for the Fist of Fury consists of two distinct parts.  A lower level C program directly deals with hardware interrupts and rtss communication.  The Visual Basic software is responsible for the user interface.

The tasks of the C program are conceptually simple.  First, it reads the five analog channels that correspond to the five fingers on the user interface glove.  These are read once every millisecond and sent to Visual Basic.  Assuming the glove is controlling the Fist of Fury, Visual Basic will determine how to move the servos on the Fist of Fury.  The C program will get these numbers (corresponding to servo positions) from VB.  Then, every 20 milliseconds C will send a signal to the Zilog chip telling it how long the control pulse needs to be on.

From the standpoint of the C program the dynamics of the glove readings are much faster than the dynamics of sending the command signal to the servos (by a factor of 20).  This fact was exploited in attempt to reduce the pseudo-Gaussian electromagnetic noise experienced by the inputs from the glove.  A custom low-pass filter was implemented for the inputs from the glove.  Because the phase lag imposed by this filter was insignificant, the dynamics of the system were not affected.  This filter proved to be very successful at reducing the noise.

The tasks demanded by Visual Basic were much more numerous.  The main task of VB is to interface between the user and the control signal to C.  The VB program operates in five states:

  1. Idle: waiting to choose different state
  2. Glove control
  3. Fist slider control
  4. Multiple slider control
  5. Crush
Two interfaces are available.  The Debug form is used to explicitly see all relevant state variables used by VB.  Fancy Form operates at the highest level of any of the software in the system.  Fancy Form displays only the information directly relevant to the user in a convenient and user-friendly environment.  During the course of this discussion, this form will be the form being described unless explicitly stated.

State 1: No control.  This is the initial state that VB starts at.  While in this state, the user cannot manipulate the Fist of Fury, and can only choose another state.  The user must first click “Select New Control Method”.  Then a red light will illuminate next to each of the buttons that correspond to candidates for the next state.  The color of the safety indicator will always show green.  The color of the letters of “FIST OF FURY” that are located at the top of the form indicate the safety of the user.  If the color is green, then the user is in minimal danger.  If the color becomes yellow, then only proceed under extreme caution.  Once the indicator turns red, do not proceed under any circumstances unless under the strict supervision of an experienced Fist of Fury operator.  The current state is explicitly stated directly beneath the safety indicator.  For state 1 “No Control” is illuminated.

State 2: Glove control.  Once the user clicks “Glove Control”, a green light illuminates next to the button, VB displays “Glove Control, and the user is now in state 2.  The button “Calibrate Glove” is illuminated blue.  This indicates to the user that the button needs to be addressed.  The glove must be calibrated every time it is used.  Everyone’s fingers as sensed by the glove will be different from the next person’s.  So every user must calibrate the glove so that the glove’s sensors can be interpreted correctly.  Next, VB asks you to make a tight fist while you click the blue button.  Finally, the user is asked to fully open the glove while clicking the blue button.  If a different user uses the glove, or a poor calibration is suspected, the user can re-calibrate the glove at anytime.  Once the glove is calibrated, the Fist of Fury will mimic the movements of the user glove.  The sliders on VB indicate the position of the fingers.  The user should note that at anytime a prevalent sense of danger is present, the user should press the Emergency Stop button.  This will open the fingers of the Fist of Fury, and will terminate the program so that the Fist of Fury cannot cause anymore harm.

State 3: Single Slider - Fist Control.  Once the user clicks on “Fist Slider”, its corresponding light illuminates green, VB displays "Fist Slider Control", and the user is in state 3.  During this state only the fist slider is enabled.  The position of this slider corresponds to all of the finger positions on the Fist of Fury.  When the slider is up, all of the fingers are open.  When the slider is down, all of the fingers are closed.  At anytime while in state 3 the user can press the “Crush” button or the “Emergency Stop” button, but please do not confuse them.  The “Crush” button will rapidly close all of the fingers.

State 4:  Multiple Slider - Finger Control. Once the user clicks on “Finger Slider”, its corresponding light illuminates green, VB displays "Finger Slider Control", and the user is in state 4.  During this state all of the five finger sliders are enabled.  Each of the five fingers is controlled individually.  When the slider is down, that corresponding finger is closed.  When the slider is up, that corresponding finger is open. At anytime while in state 4 the user can press the “Crush” button or the “Emergency Stop” button, but please do not confuse them.  The “Crush” button will rapidly close all of the fingers.

State 5:  CRUSH.  This state can be entered directly by any other state by clicking the “Crush” button at any time.  When this is clicked, all five fingers rapidly close.  To exit this state click “Select New Control Method”, “Quit”, or “Emergency Stop”.

Electronic Hardware Overview
 Most of electronic hardware needed to operate the Fist of Fury is available on six different stations in the Mechatronics Lab in the Transportation Building.  The RTI-815 has sixteen analog input and two analog output channels, each with 12-bit resolution.  Both ADC and DAC are accessed by the computer software through several I/O ports (registers), similar to the binary I/O.  The Fist of Fury will use five analog input channels (one for each sensor on the glove) and no analog output channels.

To command the servomotors at each station, the CIO-INT32 board that is installed in the PC will be used.  The CIO-INT32 is a very versatile digital interface board.  The heart of the CIO-INT32 is a pair of Zilog Z8536 programmable digital I/O chips.  Each chip is equipped with 20 bits of Digital I/O that can be independently set for input/output and 3 counter/timers that can be set up independently or chained together internally.  The C program will output appropriate signal to the Zilog chip to control the servomotors.

Each servo has 3 lines.  The signal line receives a setpoint via a pulse.  Two other lines are used for power.  The signal is sent every 20 ms, and the duration of the pulse high sets the position of the servo.  A pulse of approximately 2 ms moves the servo full counterclockwise (about 90 degrees), and a pulse of approximately 1 ms moves the servo full clockwise (about -90 degrees).

A bend sensor is a device that changes resistance when bent.  Similar to a standard resistor, the bend sensor has two leads for connection.  As the sensor is bent from a straight position to a curved position, the resistance between the two leads changes.  Nominally, the resistance of the sensor when straight is 10 KW.  When flexed to 90°, the resistance increases to about 30-40 KW.

Bend sensors are used to sense the bending of the fingers of the user interface glove.  Each sensor is placed in series with a fixed resistor of similar resistance.  A fixed voltage is placed across the two components so that the bend sensor acts as a voltage divider.  If the voltage is taken from the point in between the two components, the voltage at that point is proportional to the resistance of the bend sensor.  These voltages are taken from each of the five fingers and fed into the ADC to be read.
 

TOP OF PAGE   |   BACK to engineering credentials   |   BACK to engineering projects   |   JAMES' HOME

last modified 1 august 2000