[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference bulova::decw_jan-89_to_nov-90

Title:DECWINDOWS 26-JAN-89 to 29-NOV-90
Notice:See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit
Moderator:STAR::VATNE
Created:Mon Oct 30 1989
Last Modified:Mon Dec 31 1990
Last Successful Update:Fri Jun 06 1997
Number of topics:3726
Total number of notes:19516

1448.0. "DataGlove interface to DECwindows?" by BAVIKI::GOOD (Michael Good) Fri Sep 15 1989 13:16

    What would be involved to make a DataGlove work with DECwindows
    systems?

    I've got a DataGlove system running now on one of our Macintosh systems
    in Spit Brook.  The DataGlove is an input device that the user wears on
    his or her hand.  The glove sends the computer data on the gesture,
    position, and orientation of the hand.  One use of the glove is for
    programs where the user reaches into a 3-D space and moves objects
    around, but it can also be used for more general-purpose applications. 
    The vendor, VPL Research, supplies a couple of demo programs which run
    on the Mac, along with the C source code to the simplest of the demos.

    The glove communicates with the host over a 19.2K serial line
    (typically 26 bytes updated 60 times a second), and comes with RS232
    and RS422 interfaces.  The host sends some commands to the glove to set
    up which data to report.  The glove typically reports the amount of
    flex in the lower 2 joints of each finger, and the position (x, y, z)
    and orientation (roll, pitch, and yaw) of the hand.  The position and
    orientation values come from a Polhemus Isotrak magnetic sensor
    integrated with the glove.

    What would be involved to:

    1) port the simple Mac demo program, which just displays the flex
       and Polhemus values on the screen as it receives them?

    2) make the DataGlove into a mouse substitute, using the x and y
       values as mouse x and y values, and using the flex values to
       determine events like button clicks?

    I have the C source code for the demo program on-line, and can make 
    available the relevant parts of the DataGlove programming
    documentation.

    Please contact me at CLT::GOOD if you're interested in seeing the
    demos, or in learning more about the Presence - Multi-Sensory I/O
    project of which this is a part.

T.RTitleUserPersonal
Name
DateLines
1448.1Something is not too hard everything is a fair amount of workSTAR::BMATTHEWSFri Sep 15 1989 13:5343
    The glove communicates with the host over a 19.2K serial line
    (typically 26 bytes updated 60 times a second), and comes with RS232
    and RS422 interfaces.  The host sends some commands to the glove to set
    up which data to report.  The glove typically reports the amount of
    flex in the lower 2 joints of each finger, and the position (x, y, z)
    and orientation (roll, pitch, and yaw) of the hand.  The position and
    orientation values come from a Polhemus Isotrak magnetic sensor
    integrated with the glove.

    What would be involved to:

    1) port the simple Mac demo program, which just displays the flex
       and Polhemus values on the screen as it receives them?

> Easiest way on VMS is some QIOs to the terminal port to which the glove
> is attached to read the data.

    2) make the DataGlove into a mouse substitute, using the x and y
       values as mouse x and y values, and using the flex values to
       determine events like button clicks?

> Again on VMS the easiest is to issue a QIO to the DECWindows driver
> to pass an x event packet of your making to the server. More efficient
> but a little harder is to write a input class driver ala our mouse
> driver. The class driver hooks up to the terminal port driver on one end
> and calls DECWindows common driver routines to pass events to the server
> on the other end.


> For the full support of the data glove thru X you need an input extension
> to be able to pass all of the glove data to x clients.
>
    I have the C source code for the demo program on-line, and can make 
    available the relevant parts of the DataGlove programming
    documentation.

    Please contact me at CLT::GOOD if you're interested in seeing the
    demos, or in learning more about the Presence - Multi-Sensory I/O
    project of which this is a part.

> Bill

1448.2One approachENUF::LEWISFri Sep 15 1989 14:1020
    A qucik and dirty approach might be to simply use the rs-232 (or
    dec-423) port on a workstation as the source of input for the device
    connector.  A program could easily be written to accept input data from
    the glove, convert it to something meaningful for use by the existing demo
    program, then use this program as the source of input from the glove.
    
    Using the glove for a mouse substitute would be a bit more complicated. 
    You would need to write an interface to the device driver which
    currently supports that port, essentially reproducing the functionality
    described above using the rs-232 or dec-423 port.  This should be
    "do-able" but the programming required would undoubtedly be more
    subtle.
    
    Then of course, you just implement the functionality (port?) of the
    demo program under DECwindows.  Having the demo cource code should make
    it that much easier.
    
    john
    

1448.3redundant solutionENUF::LEWISFri Sep 15 1989 14:146
    Sorry for what appears to be redundant solutions in .1 and .2, but Bill
    must have hit his 'Return' key before I hit mine...
    
    john
    

1448.4PDVAX::P_DAVISPeter DavisFri Sep 15 1989 15:3919
    Of course, using the data glove as a mouse substitute will probably
    become tiresome pretty quickly, since the glove itself is uncomfortable
    to wear, and you have to hold your arm in the air for prolonged
    periods.
    
    It's almost not worth it, unless you get to take advantage of the
    richness of input variety that the glove is capable of.  The only way I
    can imagine to do this would be to extend X to support glove events
    which report position (x, y, and z), orientation, curvature of each
    finger, etc.
    
    Actually, I'd be really interested in just getting X/DECwindows to
    support pressure-sensitive tablets.  I don't know if it's possible to
    add a datum (pressure) to the MotionNotify structure.  It might also be
    useful to define an event for a change in stylus pressure, but that's
    probably of secondary importance.
    
    -pd

1448.5Thanks - that's what I was looking forBAVIKI::GOODMichael GoodFri Sep 15 1989 16:0519
Thanks for the quick help!

I'm glad to hear of the quick and dirty way for VMS.  Is there an
equivalent for Ultrix?  We would like to have the flexibility to
work with both operating systems.

As Peter indicates, I don't think a DataGlove used as a mouse
substitute is a great idea for most applications.  But the technique
that is used to interface the DataGlove could also be used to interface
the EyePhone head-mounted display, and the combination of those two
devices (and other technology, such as voice input, tactile feedback,
and audio output) could be very powerful.  But we want to take small
steps at a time.

By the way, we currently have a req open in our group which may 
involve building these types of prototypes.  Send me mail if you
want more information.


1448.6Use the equivalent kernal routines?IO::MCCARTNEYJames T. McCartney III - DTN 381-2244 ZK02-2/N24Sun Sep 17 1989 07:464
    
    Instead of doing a $QIO call, on Ultrix you call read(3) and write(3).
    

1448.7PortabilityKASINO::TALLETTJust one more bug to fix...Thu Sep 21 1989 06:1811
    
    	By using XSendEvent() as implied in .-3, to send simulated mouse
    	events to the XServer, your prog should be portable as far as
    	X is concerned. Your "read character from terminal port" routine
    	may have to be different on both systems, but the rest of the code
    	should be portable I guess.
    
    Regards,
    Paul Tallett,
    CEC Karlsruhe