[sci.electronics] PowerGlove

pepke@gw.scri.fsu.edu (Eric Pepke) (10/04/90)

Here is a message I posted a couple of weeks ago to sci.virtual-worlds.  
Somebody who doesn't get that newsgroup was interested in it, so here it 
is.
--------------------

I bought a power glove, and last night I rented a Nintendo with which to
try it, ripped the glove apart, and did some in-circuit testing.

The glove system is made up of the glove itself, an L-shaped structure of
three ultrasonic recievers, perhaps half a meter on a side, that fits on
the TV, and a junction box connecting the two.  The glove has two boxes--a
knuckle box and a wrist box.  The knuckle box contains the two ultrasonic
transmitters, simple driver circuitry, connections to the finger flexion
sensors, and a piezoelectric beeper.  The writs box contains a
microprocessor with a 10 MHZ (!) crystal and a handful of support
components.  It also has quite a few conductive rubber buttons on the back.

The interface to the Nintendo is a game controller emulator.  There are
several built-in programs that can be changed at any time by pushing the
buttons on the back of the wrist box.  There is one where the joystick is
controlled by moving the hand right, left, up, or down, which is good for
X-Z games.  There is one where the joystick is controlled by moving the
hand right, left, forward, or back, which is good for X-Y games.  There
are some programs optimized for certain games.  For example, there is one
for Double Dragon.  Right, left, forward, back controls the joystick.
Thumb, index finger, and last three fingers control various motions, all
available ordinarily through combinations of presses on the controller.
Hand forward and clutch makes the character climb a ladder.  Twist of the
hand causes a head butt.

The glove also has the ability to recieve downloaded programs from a
cartridge; an example of this is Joust.  I have no details of what kinds
of programs can be downloaded.

I tried Double Dragon, Joust, and an X-Y/X-Z game (Teenage Mutant Ninja
Turtles).

The glove is operated by holding it within a sensing frustrum projected
from the structure of recievers.  Good readings can be obtained within
about 20 degrees divergence outside the structure.  I don't know how far
back you can get, as I ran out of living room first.  Most orientations of
the hand give good readings, except those where the meat of the hand is
between the transmitters and the receivers.  One can push the Center
button at any time, and the joystick emulation will occur around the
current position of the glove at the center.  I suspect the device has
quite a lot more resolution than they are putting to work.

The untrasonic transmitters are controlled by three driver transistors.  I
think that one recieves a constant square wave (an inductor smooths it
out), and the other two are used to gate the two transmitters on and off.
There are four finger flexion sensors, one each on the thumb, index
finger, middle finger, and ring finger.  They are resistive elements, and
resitance roughly doubles from full extension to full flexion.  Fully
extended resistance for my glove was 100K on three of the sensors and 50K
on one.  I have no idea if this is intentional or an artifact of the
manufacturing process, but in any event, it would be a good idea to
calibrate the glove every time it is used.  Resistance is not linearly
related to flexion; there is a threshold effect, but with delicate
movements of the fingers and a little practice, one can make quite small
adjustments to resistance.  The commons of the four sensors are connected
through diodes to a common high.  The whole mess is powered by a single 5V
negative ground supply.

I think the best idea would be to replace the entire wrist box with new
circuitry.  I am looking at Motorola's 68705S3 microcontroller.  It seems
perfect for the job.  It has four high-impedance A-D converters, serial
communications built in, an EPROM for the program, several timers, and
enough parallel I/O lines to get the job done.  It requires little
external support circuitry.  I don't think it has enough oomph to do the
trig, but it should be able to handle timing calculations fine.  Though
the three receivers are good enough for game stuff, ideally one would want
to have more to cover more orientations and positions.  Perhaps a room
with a receiver at each of the eight corners would work well.

Eric Pepke                                    INTERNET: pepke@gw.scri.fsu.edu
Supercomputer Computations Research Institute MFENET:   pepke@fsu
Florida State University                      SPAN:     scri::pepke
Tallahassee, FL 32306-4052                    BITNET:   pepke@fsu

Disclaimer: My employers seldom even LISTEN to my opinions.
Meta-disclaimer: Any society that needs disclaimers has too many lawyers.

pepke@gw.scri.fsu.edu (Eric Pepke) (10/06/90)

The Spine-Chilling Saga of the Power Glove, Part 2

I got an MC68705S3 processor from Motorola.  I also got a board for 
programming it, which Motorola sends out for free.  It is designed to copy 
the program from an external EPROM to the processor's built-in EPROM using 
a bootstrap program in the processor.  It also has a connection for an IBM 
PC printer cable so that you can program it without going through the 
extra step of programming an EPROM.  Unfortunately, the sections of the 
documentation that refer to this process have statements like, "Do not 
use!  Does not work yet!" scrawled over them.  It's hard to imagine how 
the hardware connection could fail to work.  Maybe they mean the software. 
Further experiments will have to wait until I get the parts to make the 
programmer work and I replenish my stock of IC's for experimentation.

Meanwhile, I have been doing some thinking about the math involved.  The 
time for a signal to get to a receiver gives you a distance, which you can 
think of as the radius of a sphere.  Three receivers give you three 
spheres.  Two spheres intersect in a circle (if they intersect at all).  
An additional sphere usually intersects with a circle at two points.  The 
two points reflect each other in the plane determined by the centers of 
all the spheres.  If you know that the glove is in front of the sensors, 
you can choose the point in front of the sensors.

Now, in the general case, it takes a fair amount of trig to solve this 
problem.  Fortunately and unfortunately, with the power glove as it is 
normally used, this is quite simplified.  First of all, one deals with a 
fairly small delta around a predetermined center.  Knowledge of the three 
radii for the center can be introduced into the equations at an early 
stage to get an inexpensive simplification.  Second of all, the distance 
to the sensor array is large compared to the spacing between elements of 
the array, though not too large.  Effectively, this means that the hard 
3-D problem can be approximated by two easier 2-D problems.

This is fortunate, because it simplifies the amount of processing that the 
power glove has to do.  It is unfortunate, because it probably means that 
the designers of the software made those approximations, which may mean 
that figuring out how to program the internal processor won't help if you 
want to do something very sophisticated.

Of course, I have a vested interest in justifying the effort I am making 
in replacing the procesor for one of my own, which may affect my 
willingness to believe this.

Eric Pepke                                    INTERNET: pepke@gw.scri.fsu.edu
Supercomputer Computations Research Institute MFENET:   pepke@fsu
Florida State University                      SPAN:     scri::pepke
Tallahassee, FL 32306-4052                    BITNET:   pepke@fsu

Disclaimer: My employers seldom even LISTEN to my opinions.
Meta-disclaimer: Any society that needs disclaimers has too many lawyers.

jfreem@uncecs.edu (Joe Freeman) (02/05/91)

Here is some information I dug have found out about the PowerGlove's raw 
raw mode.  (or what appears to be the raw mode). I've been using the 
"Super Glove Ball" cartridge for some timing measurments.  The game allows
3 dimensional movement and pays attention to the rotation of the hands.

The PowerGlove is queried 60 times a second (16.67ms period).  It uses
a 3 wire interface, latch, clock, data, with a serial bit stream. 
In joystick mode it does the same things that the byte article describes.  

In the "Super Glove Ball" game however, it behaves quite different.  The
game machine boots up and waits a while, determines that it has a 
PowerGlove attached and puts it in the special mode.  The glove, on every
third sample, sends a 10 byte packet. 
	header
	4 bytes of motion information
	1 byte finger information , 2bits per finger
	1 byte button information, cursor pad, a, b, start, select
	2 bytes of ??? (nothing?)(couldn't get it to change)
	1 byte trailer.
The other 2 samples in the 3 sample set appear to be normal.

Now, the real question is how to get the glove into this mode.  The
Data line may be bi-directional.  There is 599msec between the first
latch pulse, off of reset, and the first big data packet.  This is enough
time for 36 normal samples.  Now, the question is is that an upload time?
Can the host send config info to the glove?  Yes it can.  Bad street
brawler is supposed to have the abillity to upload several different
modes to the gloves.  The glove retains that program for 30 sec before
reverting to one of the built ins.

That's all for now.



-- 
Joe Freeman	jfreem@uncecs.edu
The opinions espressed here are my own and are not shared by my employer  or
anyone else I know of.  Flames can be mailed to me or routed to /dev/null.