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.