Jump to content


Verified Members
  • Posts

  • Joined

  • Last visited

Posts posted by gazeBehavior

  1. The SMI eye tracker was far below this latency before Apple took it off the market, but what can we do about that?  It also cost a LOT more when it was available. 


    To say that the Pro Eye eye tracker is unsuitable for research is too strong.

      I agree.  I wrote that when I was led to believe (by an HTC dev's comment) that this latency was actually the result of a dynamic filter.  It wasn't until I turned the filter off that I settled on the interpretation that the latency was due to core algorithms, and not a dynamic filter.


    ...eye data can be recorded and corrected after-the-fact

    I also agree that, if it the latency is stable within a session and across sessions, we might be able to adjust for post-hoc, offline data analysis.  However, we do not yet know how stable the latency is across a single session, and across multiple sessions. One could also measure latency using the VOR trick - it is fairly quick to record.  


    With a latency of 83ms relative to head tracking, the Pro Eye eye tracker is on the cusp of tolerable (50-70ms) although not optimal (20-40ms) latency for foveated rendering (https://dl.acm.org/citation.cfm?id=3127589).

    I'll add that it's possible that the 80 ms I saw on my machine could be brought down on a very new machine (mine was great when I bought it, but is now 3 years old).  I'm abroad, but can post the specs when I get back into the USA.  

    @Daniel_Y @Cory_HTC @Jad


    Here are the latency measurements taken by one of our students.  Images reflect the azimuthal component of the head and eye during vestibulo-ocular reflex (while fixating a stable object and rotating one's head about the vertical axis).  The first figure shows the original signals - deg/s over time.  The second shows the results of the cross correlation, and the third shows a zoomed in look at the signals before/after adjustment for the measured latency.  

    The two signals were maximally correlated with 83 ms of shift, meaning that there was 83 ms of latency in the eye tracker relative to the head tracker. Vive head tracking is typically 22-33 ms absolute latency, so that puts the ET above 100 ms of absolute latency.  
    We have only measured this once.  Really, we should measure a few more times, with different people.  We could also learn more by testing for possible effects of rotational velocity, and GPU load on the amount of latency.  
    An effect of the former (head velocity) would indicate that this latency results form a dynamic filter.  This seems unlikely, because if it were, they would just have us turn it off.  
    It's more likely attributed to the core functions of the eye tracking pipeline, such as pupil segmentation in the 2D imagery, or gaze mapping (which converts from 2D pupil centroids to 3D gaze vectors). If so, I would expect the latency to increase with GPU load.
    Something to test, anyhow. Or, HTC could jump in and say a bit more...

    image (1).png

    image (2).png


    • Like 1
  3. "desti hosting" seems to be a spam account of some sort. To recap:  using SetEyeParameter() to change the sensitivity does not address the issue, which seems to be high eye tracker latency.  As @performlabrit pointed out, this issue was previously raised in the attached reddit forum post.  The videos I posted above demonstrate what the post was referencing. 

    Can anyone at HTC suggest ways to lower the latency?  It's clearly too high to do anything related to foveated rendering.  



  4. I agree that it is likely latency - a lot of it..  It's a bit of a guess, but I have enough experience in this area to estimate +100 ms of latency.  This is surprising given that you guys market this for foveated rendering.  This is farrrrr too slow for foveated rendering.

    Are there any other filters to worry about or turn off?

  5. Ok, I've created two movies that show 1) I have sucessfully changed the sensitivity, and 2)  this does not resolve the original problem described by PerformLabRIT in the first post of this thread. I've attached the videos and shared via youtube.

    That's a 1 meter wide board, and at a distance of 3 meters half the angular subtense is atan(0.5/3)*(180/pi) = 9.5 degrees (the radius of the target).  So, the full angular subtense is 19 degrees.

    Notice that the gaze sphere oscillates almost the full radius of the target - 9.5 degrees during the head movement.  Also notice that the change in sensitivity does not affect this.

    This makes me think that something is *seriously* wrong with the Tobii/HTC tracking algorithm.





  6. Ok, I've made some progress in changing the parameter, but see no change in the behavior of the eye tracker.


    Inside SR_anipal_Eye_Framework.cs, at the end of StartFrameWork(), I've added the folowing code that I lifted from SRanipal_EyeSettingSample.cs, with the intention of setting the parameter.gaze_ray_parameter.sensitive_factor to 1.:

    EyeParameter parameter = new EyeParameter
    gaze_ray_parameter = new GazeRayParameter(),
    Error error = SRanipal_Eye.GetEyeParameter(ref parameter);
    Debug.Log("GetEyeParameter: " + error + "\n" +
    "sensitive_factor: " + parameter.gaze_ray_parameter.sensitive_factor);
    // This is the only change I've made to the code lifted from the SRanipal_eyeSettingSample.cs
    //parameter.gaze_ray_parameter.sensitive_factor = parameter.gaze_ray_parameter.sensitive_factor == 1 ? 0.015f : 1;
    parameter.gaze_ray_parameter.sensitive_factor = parameter.gaze_ray_parameter.sensitive_factor = 1;
    error = SRanipal_Eye.SetEyeParameter(parameter);
    Debug.Log("SetEyeParameter: " + error + "\n" +
    "sensitive_factor: " + parameter.gaze_ray_parameter.sensitive_factor);


    I've attached the file here, in case that helps.

    Any feedback?  @Daniel_Y@Cory_HTC?

    Thanks in advance.


  • Create New...