apellisscot 0 Posted February 1 Share Posted February 1 Hi everyone, I'm struggling with reaching the specified sampling rate of 120 Hz (8.33 ms) on a VIVE Pro Eye HMD. We use the SRanipal eye callback: SRanipal_Eye_v2.WrapperRegisterEyeDataCallback() in a script, derived from MonoBehaviour. The registered callback is only called every 14~16 ms, which leads to approx. 62 Hz. Way below the targeted 120 Hz. I think the PC specs are quite decent and should allow for 120 Hz sampling: Windows 10Pro Intel i7-10750H (specs can be found here) 32GB Ram GeForce RTX 2070 with Max-Q Design Following tool versions are used: SRanipal SDK & Runtime 1.3.1.1 Unity 2019.4.18f1 Pleas note that I am aware of these threads and articles, but did not find a explanation/solution that fits for me:Getting VerboseData at the fastest rate possible. - Vive Eye Tracking SDK - Community ForumAssessing Saccadic Eye Movements With Head-Mounted Display Virtual Reality Technology (nih.gov) Already many thanks, Scot Link to post Share on other sites
Corvus 36 Posted February 1 Share Posted February 1 @apellisscot Can you please share a code snippet? Link to post Share on other sites
apellisscot 0 Posted February 3 Author Share Posted February 3 Thanks for the answer @Corvus. Here's a code snippet, really basic. Note that I also checked without writing to the csv file in the callback method. Instead, I simply increased a counter in the callback method and logged the time at every 120th call. using System.Collections; using System.Runtime.InteropServices; using UnityEngine; using UnityEngine.Rendering.HighDefinition; using UnityEngine.XR; using System; using System.IO; using ViveSR.anipal.Eye; using ViveSR.anipal; using ViveSR; using Helpers; public class TestTracker : MonoBehaviour { private static EyeMeasureDataWriter _eyeMeasureDataWriter; private static string _eyeMeasureDataFilename; /// <summary> /// Scene start: called once scene is loaded /// </summary> void Start() { // create the necessary stream writer instances for measure data & meta data _eyeMeasureDataFilename = DateTime.Now.ToString("yyyyMMdd_HHmm") + _suffixMeasureData + ".csv"; _eyeMeasureDataWriter = new EyeMeasureDataWriter(_eyeMeasureDataFilename); SRanipal_Eye_v2.WrapperRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye_v2.CallbackBasic)eyeCallback)); } /// <summary> /// Cleanup data writer and SRanipal. /// </summary> void OnApplicationQuit() { _eyeMeasureDataWriter.Close(); _eyeMetaDataWriter.Close(); SRanipal_Eye_v2.WrapperUnRegisterEyeDataCallback(Marshal.GetFunctionPointerForDelegate((SRanipal_Eye_v2.CallbackBasic)eyeCallback)); } /// <summary> /// Callback for SRanipal eye tracking data /// </summary> /// <param name="eyeData">The SRanipal eye tracking data</param> private static void eyeCallback(ref EyeData_v2 eyeData) { EyeParameter eyeParameter = new EyeParameter(); SRanipal_Eye_API.GetEyeParameter(ref eyeParameter); // append the new data to the csv file _eyeMeasureDataWriter.AppendRow(DateTime.Now, TargetDot, TargetEye, eyeData, eyeParameter); } } Link to post Share on other sites
Recommended Posts
Please sign in to comment
You need to be a member in order to leave a comment
Sign in
Already have an account? Sign in here.
Sign In Now