esdalmaijer / PyGaze

an open-source, cross-platform toolbox for minimal-effort programming of eye tracking experiments
www.pygaze.org
GNU General Public License v3.0
671 stars 211 forks source link

GP3 support #63

Closed horvatha closed 6 years ago

horvatha commented 8 years ago

I would be happy if Gazepoint GP3 would be supported by PyGaze/OpenSesame.

Our story

I have written a mail to the psychologist colleague of mine about PyGaze. He was were very enthusiastic. He bring the GP3 device to our university from his work place and we started to experimenting with the device with the vendor's software. But we have a limited support for the analysis software of GP3. OGAMA was recommended by someone, but I like Python very much and I prefer Python to C# and I do not want to use Windows for the analysis.

Can I help you?

I would happily give PyGaze a try, but as I have read on forum, it does not support it. I would be hard to get it work with PyGaze/OpenSesame? If it is not hard, perhaps I would help you. (I have written some Python programs as you can see on Github, I am not a beginner.) But I need help:

esdalmaijer commented 7 years ago

Thanks for offering your help! To answer your questions:

Background

PyGaze's design is very modular. There is a generic EyeTracker class that morphs into a class that is dedicated to a specific brand/type of eye trackers.

These dedicated classes can be found in the _eyetracker module, and work in the same way: They inherit the BaseEyeTracker class, and redefine the basic functions (see below) to work with a specific API.

GP3 Specifics

Unfortunately, I'm completely unfamiliar with the device, and do not have access to one. You mention the API is TCP/IP based, which is not unlike other existing implementations. For example, the EyeTribeTracker class offers support through a socket connection with a local server. The SMItracker class does something similar, but regulated via a (propriety) DLL from SensoMotoric Instruments that handles communications with a server (this can be local, but also on a different PC).

On the other side, there are the libeyelink and the TobiiTracker classes that are built on top of highly specific APIs (provided by SR Research and Tobii, respectively).

I would highly recommend to have a look at the implementation for EyeTribe and SMI trackers. If you have any specific questions, for example on what each method is expected to do, I'd be happy to help!

Basic functions

These are the functions you probably want to define, considering they form the basic functionality for using an eye tracker. For documentation on each, see the BaseEyeTracker class. For an example on how to implement them, see the EyeTribeTracker class.

esdalmaijer commented 6 years ago

We've implemented this ourselves, so closing this issue.