Home Forums Software Development Fixation duration

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #1788
    Martin Boschman
    Participant

    The Developer’s Guide Tobii EyeX SDK for .NET mentions that the fixation data stream provides x,y position and start and end time properties. The API however does only provide x,y and Timestamp properties. Did I miss something, or is the manual not up-to-date anymore. In this case I assume that the Timestamp indicates the start time of the fixation. My question: how do I get the fixation duration from these data without neglecting the time intervals saccades take. Should I simply take the Timestamp of the next fixation as end time of the current fixation?

    #1797
    Anders
    Participant

    Hi Martin,
    what the manual fails to mention is that each data point also carries an event type. Fixations are detected in semi-real time and the data is reported like this:

    1. The user’s eyes fixate on something.
    2. The EyeX Engine detects that a fixation has started and sends the data packet (Begin, X, Y, Timestamp) to the client
    3. The fixation goes on for a while. The EyeX Engine sends data packets: (Data, X, Y, Timestamp). The gaze point will only move slightly since we’re in a fixation.
    4. The fixation ends. When the EyeX Engine detects the end of the fixation, it sends a data packet (End, 0, 0, Timestamp).

    So if all you want is the fixation duration: store the timestamp from the Begin packet and compute the duration when you get the next End packet.

    #1798
    Martin Boschman
    Participant

    Thanks Anders! That is clear to me now. Another related question is: Which time clock is used for the timestamps? It seems to me that it is related to the time since start of my windows7 machine (Environment.TickCount) Is that correct?

    Can you also tell me what the latency is between the real beginning of a fixation and the time the first event for that fixation is fired? In other words how many time does the system take to figure out that a new fixation is started? Is the e.Timestamp property corrected for this latency?

    #1799
    Manuel
    Participant

    I am interested in this, but I don’t exactly know how to code it.
    Could you provide a piece of code?

    Thanks in advance.

    #1815
    Robert [Tobii]
    Participant

    Hi Manuel,

    Here is the code that does what Anders explained, it is based on the MinimalGazeDataStream code sample in the EyeX SDK for .NET package.

    namespace MinimalFixationDataStream
    {
        using EyeXFramework;
        using System;
        using Tobii.EyeX.Framework;
    
        public static class Program
        {
            public static void Main(string[] args)
            {
                double lastFixationStartTime = 0;
    
                using (var eyeXHost = new EyeXHost())
                {
                    eyeXHost.Start();
    
                    // Create a data stream: lightly filtered gaze point data.
                    // Other choices of data streams include EyePositionDataStream and FixationDataStream.
                    using (var fixationGazeDataStream = eyeXHost.CreateFixationDataStream(FixationDataMode.Sensitive))
                    {
                        // Write the data to the console.
                        fixationGazeDataStream.Next += (s, e) =>
                        {
                            if (e.EventType == FixationDataEventType.Begin)
                            {
                                lastFixationStartTime = e.Timestamp;
                            }
                            if (e.EventType == FixationDataEventType.End)
                            {
                                var lastFixationDuration = e.Timestamp - lastFixationStartTime;
                                Console.WriteLine("Last fixation duration: {0:0} milliseconds", lastFixationDuration);
                            }                     
                        };
    
                        // Let it run until a key is pressed.
                        Console.WriteLine("Listening for fixation data, press any key to exit...");
                        Console.In.Read();
                    }
                }
            }
        }
    }
    #3620
    Umakshi
    Participant

    Hello!

    Could one also obtain the fixation duration information using Tobii Gaze SDK ?

    Thanks in advance.

    #3628
    Jenny [Tobii]
    Participant

    Hi Umakshi,

    No, the Tobii Gaze SDK only delivers raw data from the eye tracker. It does not have a concept of fixations, or offer any kind of filtering of the gaze data.

    #6259
    Peyman
    Participant

    Hi,

    Is there any way to stop the fixationdatastream and call it again later?

    #6263
    Grant [Tobii]
    Keymaster

    Hi @ptoreini, no I am afraid not other than stopping connection to the eye tracker, however perhaps there is a workaround for your needs.. could you explain kindly your intentions?

    #6274
    Peyman
    Participant

    Hi Grant,

    Thanks @grant-rogers for your reply.

    I would like to have fixation of the user whenever he/she look at specific panel in my windows form. Actually I mean I would like to ignore other fixations. Then I was thinking to start fixation whenever the OnGaze is active on the panel and stop it whenever Ongaze is False.

    Best,
    Peyman

    #6283
    Grant [Tobii]
    Keymaster

    Hi @ptoreini, indeed the fixations are determined by the Tobii engine itself and not something that is exposed for modification within the SDK, however as you pointed out there is certainly no problem in starting a timer event when OnGaze is active and stop the timer when leaving the panel. Let us know how you get on.

    #8368
    zhong
    Participant

    Hello!

    Could you tell me which type filter Tobii EyeX use to calculate fixation data? While I-VT filter,Tobii fixation filter,ClearView Fixation filter are available for tobii studio.

    Thanks in advance

    #8371
    Grant [Tobii]
    Keymaster

    Hi @iriszhong, thanks for your query. Within the Tobii core SDK which is designed to operate with the Tobii EyeX Tracker, you have two fixation modes:

    – Lightly filtered (i.e. the default) is an adaptive filter which is weighted based on the age of the gaze data points GazePointData and the velocity of the eye movements. This filter is designed to remove noise and at the same time being responsive to quick eye movements.

    – Unfiltered where no filtering is performed by the Interaction Engine (except for the removal of invalid data points and the averaging of the gaze points from both eyes)

    Accordingly, our Fixation Filters are custom built by Tobii and not applicable to a generic methodology such as IV-T, etc…

    I hope this answers your query, but please let us know if we can be of any further assistance.

    #8376
    zhong
    Participant

    Hi Grant,

    Thanks @grant-rogers for your reply.
    I wonder if there is any documentation about the fixation filtering algorithm of the two fixation modes you mentioned above.
    if so,is it convenient to provide a copy?Because I just got a Tobii EyeX SDK for C/C++ when I bought it.

    #8391
    Grant [Tobii]
    Keymaster

    Hi, @iriszhong, thanks for your patience, I can confirm that the fixation filter we use for the Tobii Core SDK is in fact a variant of IV-T but as it is developed internally, we do not have any extensive documentation available on the specifics with regard to variables values, etc… that being said, I will try find for you further details if you require them.

Viewing 15 posts - 1 through 15 (of 15 total)
  • You must be logged in to reply to this topic.