home


Site Map
Email Us
support top nav  
products home events support contact us
Software

The following software components are included wth the base EyeLink 1000 system.

Host PC Tracker Application
Drives the EyeLink 1000 system, performs image analysis and eye event segmentation, and saves the data for future analysis.

C Developers Kit - API
Provides a C interface to the EyeLink for tracker control ,real-time data access, and timestamped experiment event messaging into the EyeLink data files.

Python Package (Pylink)
The Pylink module is a Python library that provides the same functionality as the C API, but within the Python programming language.


Host PC Tracker Application

The EyeLink 1000 Tracker Application runs on the Host PC in a ROMDOS 7.1 operating environment (included with the base system). The Tracker application is tightly integrated with the EyeLink 1000 High Speed Eye Tracker hardware, and serves several high level functions:

Performs image analysis, eye event parsing, and data recording functions. Facilitates for the selection of 5 different calibration types (3pt - 13pt).
Allows the system operator to view real-time gaze position overlaid on a static display representation while data recording is being performed. Allows preference selection, camera setup, calibration, and recording functions when the tracker is not being used with a Windows / MacOS / Linux, or DOS Display PC.
Controls setup of the optional Scene Camera, Analog Output Board and Gaze Video Overlay System.    


Head Supported setup screen head supported record screen

If the Display PC is using the EyeLink Developers kit, many of the preference and setup functions available on the Host PC Tracker Application can be controlled programmatically from the Display PC itself.

Back To Top

C Developers Kit - API

microsoft logo mac logo linux logo

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 1000 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 1000 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 1000.

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.


EyelinkII data to select visual control buttons

Back To Top

Python Package (Pylink)

The Python EyeLink (Pylink) module provides Python programmers all the same functionality as our C API , but within the Python object oriented scripting environment. Pylink allows for tracker control, real-time data access, and external synchronization with eye data via custom messaging.

Pylink can also be used in combination with the excellent third party open source VisionEgg software; providing a combined visual presentation and eye tracking scripting package.



The Pylink package includes a sample experiment that uses pygame for graphics presentation as well as a modified VisionEgg example demonstrating gaze contingent control of a moving gradient.

Download the Python Package from our resource center.


Back To Top



 

Copyright © SR Research Ltd. 2001-2008. All Rights Reserved.
EyeLink II, EyeLink 1000, and EyeLink 2K are intended for research purposes only and should not be used in the treatment or diagnosis of any medical condition.
EyeLink is a registered trademark of SR Research Ltd., Mississauga, Ontario, Canada
Last Modified on April 7th, 2008. Email Site Admin.View Legal Notice