C Developers Kit - API
The EyeLink Development Kit provides a 'C' interface to the
EyeLink for tracker control ,real-time data access, and timestamped
experiment event messaging into the EyeLink data files. EyeLink®'s
ease of use and high end specifications make it perfect for a vast
range of applications, and the supplied Application Programming Interface
(API) makes it easy for C programmers to get started and take full
advantage of the power of the EyeLink II system! The C Developers
kit is supported on Windows (98/2000/XP Professional Service Pack 1), Mac OSX and Linux platforms
Eye Tracker Control
Programmers have the ability to control EyeLink settings and state
from the the C API. This functionality makes the EyeLink a truly intelligent
tracking system. Tracker control features include:
Starting
the calibration procedure, including image access on the Display PC
during headband setup
Performing drift correction at anytime during an experiment (pre or
post trial).
Setting
any tracker preference
Setting
the graphics to Display on the Host PC Record screen
Real-Time Data Access
The C API provides access to both eye sample and eye event data in
the form of C structures. Data is sent from the Host PC to the Display
PC via a dedicated Ethernet connection between the two computers.
Both samples and events are placed in a data queue on the Display
PC so no data is lost. Sample data includes:
| Field |
Contents |
| time: |
Timestamp when camera imaged
eye (in milliseconds since EyeLink tracker was activated) |
| flags: |
Bits indicating what types of data are present,
and for which eye(s) |
| px, py: |
Camera X, Y of pupil center |
| hx, hy: |
HEADREF angular gaze coordinates |
| pa: |
Pupil size (arbitrary units, area or diameter
as selected) |
| gx, gy: |
Display gaze position, in pixel coordinates set
by the screen_pixel_coords command |
| rx, ry: |
Angular resolution at current gaze position, in
screen pixels per visual degree |
| status: |
Error and status flags (reports CR status and
tracking error) |
| input: |
Data from input port(s) |
| buttons: |
Button input data |
Samples are available as
quickly as 3ms from when the camera image was taken.
See the technical specifications
section on the details of how link filtering and sampling rate effect
sample delay.
Event data (Fixations, Saccades, Blinks, Messages)
is also available as a C structure.
Eye Events are available 20 - 30 ms after the event actually occurred.
The event structure includes:
| Field |
Contents |
| time |
Timestamp of sample causing event (when camera
imaged eye, in milliseconds since EyeLink tracker was activated) |
| type |
Type of event (Saccade, Fixation, Blink) |
| eye |
Eye for which event was produced |
gstx, gsty
genx, geny
gavx, gavy |
Display gaze position, in pixel coordinates set
by the
screen_pixel_coords command. Positions at start, end, and
average during saccade, fixation or FIXUPDATE period are reported. |
hstx, hsty
henx, heny
havx, havy |
HEADREF gaze position at start, end, and average
during saccade,
fixation or FIXUPDATE period. |
| svel, evel, avel,pvel |
Gaze velocity in visual degrees per second. The
velocity at the start
and end of a saccade or fixation, and average and peak values
of
velocity magnitude (absolute value) are reported. |
supd_x, supd_y
eupd_x, eupd_y |
Angular resolution at start and end of saccade
or fixation, in screen
pixels per visual degree. The average of start and end values
may be
used to compute magnitude of saccades. |
Custom Messaging
The EyeLink C API allows the programmer
to insert custom messages into the EyeLink data file as the experiment
is underway. These messages are timestamped in line with the rest
of the eye data being recorded and can be used for calculating reaction
times and other statistics at a later time. Examples of custom messages
include:
indicating
a stimulus onset or offset
indicating trial conditions
writing commands for the
optional EyeLink Data Viewer to interpret
providing target positioning
for smooth pursuit paradigms
The custom messages can be any string up
to 255 characters and messages can be sent as rapidly as every 2-4
ms.
Sample Experiments
The EyeLink II Windows Developer's Kit and API includes several
sample programs with full source code that serve as tutorials in
programming EyeLinkII experiments using Visual C. These include
simple experiments that present stimuli such as text and pictures,
as well as several dynamic stimulus display examples that use real-time
gaze position data from the EyeLink II.
Gaze Contingent Display Paradigm
In addition to providing important data that can be analyzed off
line, real time monitoring of gaze position permits the introduction
of display changes that are contingent on the spatial or temporal
characteristics of eye movements. Such methodology is referred to
as a gaze contingent display paradigm.
For example, in the moving
window paradigm, degraded stimulus display is presented outside
the boundaries of a region of normal display centered on the point
of gaze (i.e., the window). As gaze position changes so does the
location of the window. Two screen shots from the gaze contingent
display tutorial are shown above. The first displays a window of
clear text at the subject's point of gaze (at the center of the
display in these pictures) with all letters replaced by "XXX"
outside of this window. The second image shows a gaze-contingent
display using a photograph. Here a small window of clear picture
follows the subject's gaze, while the rest of the image is heavily
blurred.
Gaze contingent displays are one of the most exciting and popular
applications of EyeLink technology and the Windows API. With EyelinkII
the delay in window movement has been measured (using a light sensor
on the monitor and an electronic artificial pupil) to be as low
as 6 milliseconds (at 500 Hz data rate and a monitor refresh rate
of 160 Hz), using the simple source code in the tutorial.
Gaze Control Paradigm
An application that is of interest to many researchers is the control
of computers by gaze. That is, gaze is used as a human-computer
interface modality. The screen shot below is from a tutorial program
that shows how to use EyeLinkII data to select visual control buttons-in
this case, a grid of letters. All that would be required to implement
a "typing by eye" application would be to add a text window
and backspace and "enter" control buttons.
Back To Top
|