NEXT UP PREVIOUS
Next: Application
Up: Empty-handed Gesture Analysis
Previous: Implementation
At the lowest level we have defined two Unix character device drivers:
- serial interfaces peripheral devices that communicate using one of
the SGI's serial ports
- client allows for communication between Max and other processes using
TCP sockets.
We are using the client object to communicate data to an OpenInventor
3-D graphics server to display the acquired hand shape, hand position and hand
orientation data as a graphic hand. Next, we have defined two sensor
interfaces, i.e. peripheral (character) device interfaces that implement a
specific protocol:
- cyberglove interfaces the Virtual Technologies Cyberglove
- polhemus interfaces the Polhemus Fastrak
The following level of
abstraction defines new datatypes position (x, y and z as floats in one
data structure) and orientation (a rotation matrix) to facilitate geometric
and kinematic computation such as distances between points, orientations of
planes etc. and their derivatives. We aim to expand this level with datatypes
for points, lines, planes, volumes etc. Currently it consists of the following
objects:
- +P and -P add and subtract a position (i.e. translate)
-
multplies each of x, y and z of a position by a constant
- dotP computes the dot-product of two positions
-
and normP compute the magnitude and the norm of a
vector represented by a position
- Pxyz and xyzP (un)packs a position as three floats
(x, y and z)
-
multiplies an orientation with a position (i.e. re-orients
a vector)
- TO transposes an orientation (i.e. changes the frame of
reference of a rotation matrix)
-
multiplies an orientation with another orientation
- EtoO computes an orientation from Euler angles
- OtoAA and AAtoO compute an angle axis representation from an
orientation and vice versa
The next level of abstraction addresses the fact that the computations now
involve ordered and linked lists of positions representing for instance human
anatomical structures. A new datatype hand is used to represent a human
hand:
- packP and unpackP (un)pack a number of positions into (from) a list
of positions.
- packH and unpackH (un)pack a number of positions into (from)
one hand, the data structure representing a hand.
- avgP computes the center of mass of a list of positions
- plane computes the plane normal vector from a list of
positions (figure 2).
- geoHand computes an ordered list of positions, packed as a
hand that are relative to the Polhemus transmitter from Cyberglove joint
data and Polhemus receiver position and orientation data.
Features such as the
distance between thumb and index fingertips, distance between left and right
hand palm, palm orientation are easily calculated using the above position
and orientation objects in a patcher. We intend to make other objects for the
computation of features such as finger and hand curvature using a curve
fitting algorithm, estimated grip force using a grasping taxonomy etc..
Figure 2: Typical example of geometric computing using the new Max/FTS
position and orientation objects. This Max patcher takes a list of
positions, projects these on the plane that best fits them, then rotates
the plane (with projected positions) and eliminates z. This patcher
enables subsequent fitting of 2-D parametric curves to the x-y coordinates (e.g.
the x-y coordinates computed from the positions marking the thumb and
index fingers).
NEXT UP PREVIOUS
Next: Application
Up: Empty-handed Gesture Analysis
Previous: Implementation
Axel Mulder
Mon Aug 4 17:33:42 JST 1997