Hello, I am a new user, and i have a quick question
I have created an acount on both the pupil labs interface and the cloud interface, how can i move the videos from the smartphone to the labtop and open the cloud from my labtop?
Hi @user-2501a8 π ! Great to have you on board! Once you're logged into the Companion App on your phone and have Cloud uploads enabled, your recordings will automatically upload to your workspace as soon as the phone is online. To view them on your laptop, just head over to Pupil Cloud and log in with the same account you used on the phone.
If you're not seeing your recordings there, itβs worth checking two things: - Is the phone connected to the internet? - Are Cloud uploads turned on in the app settings?
Let me know how it goes or if anythingβs unclear
Hi, I have a question about the enrichment analysis. Assume I run the face mapper and the marker mapper enrichment on the same recording. Given that one person cannot physically look at both a face and an object (marker mapper) at the same time, then am I right in thinking that the enrichment data should NOT show any overlap (in timeseries) in 'true' fixations between face and marker_mapper?
Hi @user-f4b730 π Thanks for flagging this! Could you try opening the recording with the latest Neon Player Beta and see if the same issue occurs?
If the gaze visualisation still disappears, have a look at the Worn stream. Itβs possible the worn detector was triggered and temporarily suppressed the gaze overlay.
If everything looks normal there, feel free to share the recording with us at [email removed] or open a ticket at π troubleshooting and weβll take a closer look.
Hello @user-d407c1 , worn detection using 5.0.5 is all good. cannot install the beta version immediately as this laptop is a Uni Laptop. can I open a ticket instead?
Hi @user-7413e1 π ! You're right that in most cases, a person canβt fixate on both a face and a marker at the same time, so you'd expect no overlap in the β¨trueβ© fixations across enrichment sources.
That said, there are edge cases, for example, if a face appears on a screen that also has markers (like in the attached image), and both the face and marker regions are detected, you might see overlaps in the enrichment output. This doesn't mean the gaze is split, but rather that both mappers are tagging the same fixation as relevant based on their criteria.
Or, if there is some occlusion, a person stays in front of a surface and both are detected.
Let me know if you're seeing unexpected overlaps and want help digging into it!
Hi Miguel, thanks for the reply. Yes I understand your point, but I don't think this is the case for my dataset. I have marker mapper on a computer screen that shows various objects (not faces) and then a face of a real person on the side - the wearer must turn their head (and gaze) to look at them. So I do not expect any overlap at all, especially not in the range of seconds (which is what I am seeing). I would really appreciate some help digging into what could be the cause of this.
Sure, feel free to open a ticket and if you are able to share the recording we can have a look
Would you be able to share the recording where it happens along with the timestamps, and relevant files (CSVs) at [email removed] or create a ticket π troubleshooting so we can have a look?
I've opened a ticket
Hi Pupil Labs. Quick question: is there anywhere I can look for the calculation for correcting the head-movement (e.g. rotational matrices, perspective) when using marker mapper?
Hi @user-660f48 π ! We recently open-source the latest implementation of marker mapper, you can find it here. May I ask what is your aim, such that I can direct you to more specific?
Hi @user-d407c1 Thanks for your quick reply. This is what I was looking for. We currently use areas with green chroma as markers for extracting the coordinates of the AOI (instead of the QR code system) and we would like to implement your perspective correction calculations to this system.
Hi! We found this paper using relative pupil size compared to the iris size. It seems like they have only used a Pupil Labs device. However, we were not able to find the data of the iris size when we did our measurements with our Neon Module. Is this something we overlooked or does the data not provide this information (do you think this research used a second camera or something)? Thanks in advance!
Hi @user-c833f8 π ! It looks like they used π core. That said, neither Pupil Core nor Neon provide iris size as a native metric. If iris size is reported, they likely computed it themselves.
One possible approach is similar to whatβs described here: https://3dvar.com/Fuhl2022Pistol.pdf.
However, since this isnβt detailed in the paper, the best next step would be to ask the authors directly.
Hi PL members! We have a few recordings where we forgot to turn on compute eye states, and thus they lack the blinks even on the cloud. Could you trigger blink processing on Pupil Cloud for these recordings? The recording IDs are: c17cd630-764e-4e61-87ee-95be3d6b8181 16841adb-da58-4c42-be02-f052c3c43db3 Thanks a lot in advance!
Hi @user-a55486 , could you open a Support Ticket about this in π troubleshooting ? Thanks
Hello PL members, I've got the following pupil Lab glasses model and I'm looking forward to get its 3D geomtry online (stl or obj file). I'd need this to help me draw and build a 3D-printed add-on but I can't find this model as of now. Thanks in advance for your help !
Let us know if you need anything else.
Sure thing. Thanks a lot!
@user-c833f8 , one additional point:
Computing a pupil-to-iris percentage isnβt typically necessary for Pupil Core or Neon. We donβt report apparent pupil size in pixels but instead, we already provide physiological pupil size in millimetres, accounting for gaze angle and corneal angle.
I have a question, How can I export the eye tracking data to an excel sheet, including the fixation coordinates and time?
Hi @user-2501a8 , are you using Neon Player or Pupil Cloud? May I also ask if your group had its free 30-minute Onboarding call?
I am using pupil cloud at the moment, but no, I haven't had the 30 minutes Onboarding call, is it available?
is this frame flexible plastic?
Yes, the frame is flexible and can fit underneath tight-fitting helmets. You can read more about this, and Neon's other frames, in this guide on our blog!
Hello Team, What is the storage size of the S25 included in the Neon bundle? The Neon specifications state storage is 25+ hours, but I'm wondering if I can increase recording capacity by purchasing an S25 with a different storage capacity myself.
Hello, I am using Neon with Neon PLayer 5.0.5 In one recording the player shuts down. I attach the screenshot of the cmd window. It indicates that there is a mismatch between arrays. can this be sorted out manually? or the whole recording cannot be used?
Hi @user-f4b730 , this can be sorted manually. Could you open a Support Ticket in π troubleshooting about this?
Hi @user-52e548 , the S25 we ship comes with 128GB. You could obtain a S25 that has more internal storage space if that is necessary.
Just for completeness, please note that the S25 does not have an SD card slot and SD cards would regardless not be advised. SD card storage on phones is not fast enough for Neon's data streams.
Thank you!
Hi @user-52e548 , just to clarify, with 128GB storage, this translates to ~16h of storage, since the Samsung OS occupies part of the 128 GB. The 25+ h refers to the standard Moto 40 Edge Pro storage. In other words, it is roughly 5GB/hr.
I got it. Thanks for the info!
Hi there,
Does anyone know safe operating temperatures for the neon? Iβm looking to use these during heat stress exercise. Around 33 to 38 degrees. I couldnβt find this online, sorry!
Hi @user-7f089f , yes, it will work at those temperatures. We have designed Neon to be robustly used in various outdoor situations, such as outside in bright sunlight at the peak of summer. Just note that the module can warm up to roughly 10 C warmer than the ambient temperature. If you try it out and find this to be unpleasant, then you can write us at info@pupil-labs.com to ask about foam pads that can be used to line the inside of the frame.
Thank you very much, will be in contact if in need! π
Hi all, what is the (Working) Temperature ? Can the device work under -10 degree ?
Hi @user-af95e6 , we have not tested Pupil Core at such temperatures. It might work, but we cannot provide a definitive answer. May I ask what the experimental context is?
We want to use the eyetracking device in the frozen environment warehouse activity. The companion device could be keep under the unifrom with the heat protection case, but we are a bit worry if the camera can work actually in frozen environment or not
Since you mention Companion Device, are you using Neon, Pupil Invisible, or Pupil Core?
Its a Neon
Ok, then in the future, it would be easier to post in the π neon channel, as this channel is reserved for Pupil Core, I will move the posts there and we can continue discussion in that channel.
Hi @user-af95e6 , so we have taken Neon snowboarding and skiing, where it worked great, but I think that was not below -10 C. I will check with the team to see if we have any info about how low Neon can go.
Our visualization figure is stuck in a circle and we would like to change it to crosshair. Can this be fixed
Hi @user-86f5cb , thanks for re-posting. Could you try the following?
Does that resolve it?
No, sorry, this bug have been going on for a couple of months. But i just tried the hard refresh and every morning im logging in and it still only shows a circle
Hi @user-86f5cb , thanks. I left a message in the ticket. This has been corrected.
Thanks. Could you then open a Support Ticket in π troubleshooting ? We can continue there.
Dear team, I am really not satisfied with the exposure of Neon. Take a look at the recording while walking today. It is unusable! The exposure is at 145 and still the scenery cannot be seen. The sun was NOT shining against the camera. Please find some solution, because Pupil Invisible are working perfect under these conditions. It is not possible that the new Neon are behaving worse. I have to say, that Balanced is even worse. There is something else: when driving on the highway and the light conditions change, it is very dangerous to change the exposure MANUALLY while driving, in order to be able to see the scenery and the QR markers. How can we work with these glasses that way? Invisible are way better, but I bought Neon in order to use them.
Hi @user-3c26e4 , could you share the full recording with data@pupil-labs.com or at least a 35-40 second screen recording around this time point, including the 20 seconds after this time point? Properly evaluating exposure for video is not really possible with a single image.
With respect to driving, have you tried our egocentric gaze mapping tool?
Hi @user-f43a29 , sure I will share you the walk, the drive on the highway yesterday and the city street drive the day before...everyday the same problem!
I sent you an email!
Hi @user-3c26e4!
Thank you for sharing the recordings. They are very helpful.
I have reviewed them and can see they were made with exposure set to manual mode. Manual exposure is best used when lighting conditions are stable. When lighting changes, such as when walking outdoors or driving, manual exposure can result in under or over-exposed images like those you are seeing, unless the exposure can be manually adjusted on the fly.
For situations where illumination changes, auto-exposure is the recommended and safer option. This avoids the need to adjust settings manually.
Here's my guidance on the available auto-exposure modes):
Balanced This is best for walking outside. The exposure automatically reduces when facing bright light and increases when you turn away from it or enter shaded areas.
Highlights This is best for driving in daylight, particularly when bright light enters through the windscreen. It prioritises visibility outside the car, although contrast inside the vehicle may be reduced.
Shadows This is best for driving at night. It adjusts to darker environments and increases exposure accordingly.
Hi- I recorded a video today however I do not see the recording in the list of recordings in the companion application. It says the recording saved. I tried doing some more test recordings and the same is happening, it says recording is saved but they do not populate in the app. I tried restarting the app and continued to have the same issue. Is there a way to recover these recordings?
Hi @user-f89b02 , could you open a Support Ticket in π troubleshooting about this?
We do not use pupil cloud because of the type of data we are working with
Yes, every purchase comes with a free 30-minute Onboarding. Simply write an email to info@pupil-labs.com to schedule it. We can cover many of these questions for you.
In the meantime, to get fixations in a CSV format that is compatible with Excel, simply right-click the recording, go to Download, and choose Timeseries CSV.
Hi can I run experiment with psychopy without wifi or internet connections?
Hi @user-c6f796 , yes. You can use an Ethernet connection via USB hub to the PsychoPy computer, either connecting them both to the same router or directly connecting the phone via Ethernet to the computer. If you use a router, it does not need Internet access.
If you choose this method and have any trouble, just let us know, since the instructions depend on Operating System.
Hello, Do I need to create the reference image and validate it before I collect data? I have static images but they will be presented in a random order. My thought is that I should create events for each participant that correspond to each image they see. But that would be after data are collected. Also, how do I link the data files with the reference image mapper to analyze data?
Hi @user-fe873c , if Neon and/or the Reference Image Mapper are new in your data analysis pipeline, then it would be advised to run a pilot/validation first to be sure everything is working as expected for you.
With regards to presenting images on a screen, you do not necessarily need a separate Reference Image for every stimulus, but having a start & end Event for each trial is advised. You can see a tutorial of how we do that in Python here.
To clarify, you can do the following:
If you want the gaze data in normalized monitor coordinates, then you might find the Marker Mapper Enrichment simpler for that purpose.
And, may I ask for more clarification of what you mean by "linking the data files"? The exported data from the Reference Image Mapper (known as the Enriched Data) most likely already contains most of what you need.
Lastly, has your group yet had your free 30-minute Onboarding call? We can efficiently answer such questions and demonstrate solutions for you that way. Just send an email to info@pupil-labs.com with your original Order ID
Thank you for your quick response! I'm not clear on how the reference image AOIs are merged with the gaze data for each participant. We have the reference images and scans. I don't see a way to apply them to data as it is being recorded. I understand that I can export the data from the Mapper afterwards.
Regarding onboarding, we are using equipment from a collaborator's lab. She has had an onboarding call but she is using the equipment for a different purpose than our work.
Do I understand correctly that you want the data processed in real-time?
No, we can process it later. That's what I'm trying to figure out - how do I apply the reference image AOIs to already collected data? Or do I need to have the reference image AOIs defined ahead of time and somehow pre-loaded before starting a recording for a participant?
If you have the data and the Reference Image, then you simply do the following:
You can set the AOIs before running the Enrichment or also make and edit them afterwards.
You can also make them after all the data collection has completed. They are not used during the actual recording process when running the experiment. In other words, the Pupil Cloud Enrichments do not require the AOIs to be defined ahead of time.
The Enrichments automatically batch process all recordings in a Project, and the enriched data will be aggregated, as well as parcelled out per participant, so that you can look at it both ways. The Visualizations show the aggregated data by default, but you can make a Visualization per recording, if you wish.
Ah, this is exactly what I needed to know. Thank you!
You are welcome. Let us know if you have any other questions.
One other quick question - if static images are shown in a random order, do we create Events and label them with the image in order to analyze all images the same? For example, if my recording has images in order 1, 2, 3 and yours 2, 3, 1, is Events the way to label them for analysis later?
Yes.
As long as each stimulus is always marked with the same Event start & end name, regardless of presentation order and regardless of participant, then Pupil Cloud can use them as Enrichment Sections. It can then narrow down its analysis to just that stimulus when running a given Enrichment.
I saw earlier that you mentioned making participant name part of the Event name. That would not work with using Events to analyze all images of a given stimulus the same. Rather, you can use Templates and Wearer Profiles to give each recording a name specific to the participant. Even if you don't use Templates, we recommend making a separate Wearer Profile for every participant.
Yes, that makes sense. I didn't mean participant name. We are using the wearer profiles. Thank you!
Quick question. Does changing the gaze offset post-hoc (in pupil cloud) have any effect on subsequent downloads of the 3d_eye_states.csv file? I assume the eye states are "upstream" from gaze calculation but just wanted to make sure
Hi @user-429d6a , the Gaze Offset Correction is a linear offset applied to the gaze data. It does not influence the eye state data. Rather, setting the Inter-eye Distance can enhance the accuracy of eye state, which is also calibration-free and reliable "out of the box".
Hi Pupil, one of our researchers encountered an issue after having recorded a session, there was no gaze data recorded: " I realized that when I processed one of the eye-tracking recordings in the Neon player, I did not get any entries in the gaze positions file. I tried exporting the recordings from the phone app and processing them in the Neon player again, but it was the same. " Is there any way to find out if the gaze data exists, and how this can be analyzed?
Hi @user-23177e , could you open a Support Ticket about this in π troubleshooting ?
Hi everyone, is there a way to upload a downloaded recording (in native recording format) back to pupil cloud? or alternatively, is there a way to export pupil diameter time series of the same recording via Neon Player?
Hi @user-0f82bc , may I ask if you enabled the Eyestate timeline plugin in Neon Player before exporting the data? That is necessary in order to export pupil diameter.
Regarding re-uploading to Pupil Cloud from a PC, that is not a supported workflow. It is also not possible to re-upload recordings to Pupil Cloud, after importing them into the Neon Companion app.
Hi Rob! Thanks a lot for quick reply and clarifications on the cloud usage. The issue is resolved for the pupil diameter, it turns out my previous export was interrupted due to my pc, now its working fine with pupil diameter alongside other time series csv files!
Is there an advantage to the I can track clearly vs standard neon? A colleague wants to do some driving studies and I said the neons should suffice.
Hi @user-5e1c18 , both are actually using Neon.
To clarify, Neon is the eyetracking module that sits in the frame and which can be swapped between frames.
There are two differences between I can track clearly now and Just act natural:
If you can clarify what kind of studies and what their needs and equipment are, then we can provide better feedback. For instance, will it be in a simulator or in cars outside?
I believe cars outside
Thanks for the quick response BTW
You are welcome. Do they have a Motion Capture use case? As the main advantage of I can track clearly now are the Motion Capture markers. If not and they want different prescription lenses, then I can see clearly now is sufficient.
Hello @user-f43a29 , @user-d407c1 , et al. I have a question about surface tracking in Neon Player v6.0.0b3. My recordings have markers but when I add a surface and edit the surface while the video is paused, the changes do not stick and the surface reverts to the markers detected when the video is played or I uncheck the "edit" box. I would like to draw an AOI and export gaze. Thanks for your help, please let me know if I can clarify further. -Eric
hey Eric, it doesn't seem this issue is resolved, as I'm encountering the same problem. did they indicate any command you have to do to save the AOI configuration?
Hi @user-e3fdf5 , thanks for sharing this. Could you post this as an issue on the Github repository? The relevant team member will be able to look into it when they are back next week.
Hi everyone, apologies in advance if this is not the right place. I am new to this community and have recently discovered the interesting potential of Pupil Labs products. I am an Italian PhD student working in the field of deep learning, computer vision, biometrics and human analysis, and I am looking for glasses capable of eye tracking and gaze tracking for academic, scientific and research purposes. I've explored the website but found conflicting information about who to contact (via email or video call) for further information about the products until I found the reference to this Discord server. Can you help me, please? In short, I would like to contact a specialist to ask some questions about the products to see if there is a solution suitable for my field of research. Thank you very much for your help!
Hi @user-b2c31b , welcome! You can simply use the link on the main page to schedule a call with a Product Specialist. Here it is for convenience.
Thank you very much: I found two versions of that calendar, one maybe dedicated for after-purchase support so I was a little bit confused. Thank you
You are welcome. I assume you found the link for Support Packages/Consultancies.
I love all of the frames! I wanted to run a simulation to test the durability of the read-set-go frames, is there a CAD model available for these? I apologize if I am asking the question in the wrong place!
Hello, I recently acquired data on a subject and found considerable differences in pupil sizes between their two eyes. It is possible this is a real result, however, I want to exhaust all possibilities. Is there a way to validate the 3d eye model in Neon? I saw a thread in the "core" channel that contained an image of the pupil fit to the camera image of the eye. Does something similar exist for Neon? Thanks!
Hi @user-5cab7c , the CAD files for the Ready set go frame are not publicly available. Rather, we have open-sourced the CAD files for the Just act natural frame.
What kind of simulation would you be running? In what situations do you plan to use Neon?
I was going to use it in an aitsoft application so I wanted to do some simulation regarding impact for the frames specifically
Hi @user-429d6a , would you be able to share the recording with [email removed] Then, we can take a closer look.
Sure. I just sent the email. Thank you in advance!
Ah, do you mean Airsoft? In that situation, you could also consider the following frames:
If you prefer Ready set go because of the headstrap, we also offer a headstrap for the Safety on.
Yes sorry for the spelling! And the all clear are too bulky and id run the same simulation on the Safety Ons
I can ask the team about impact ratings for the frames specifically.
Ok, I will update you when I have a response from the team.
Thank you!
Thank you!
Hello. I am interested in purchasing an academic license for pupil labs cloud storage. What is the best way to do that?
Hi @user-72e42a π. The easiest way is to use our Plan Configurator. You can choose number of devices x years you want to include in the plan, add to cart, and follow the instructions there. Alternatively, our sales team can generate a quote for you - just reach out to [email removed] with your request π.
Hello @user-f43a29 , @user-d407c1 , I am using the Neon API to save session data to my local PC. There is consistently a ~4β5 s (not ms!) latency (the local data files are a couple of seconds shorter than the data saved to the S9 tablet). Is there a way to address this? Also, the data saved to the tablet are UUID-named, and when translated to local time, they also have timestamp offsets relative to the folders with script-generated timestamps when the API controls the Neon App to start recording. The timestamp offsets range from a couple of seconds to +60 s (I have checked the scene camera and confirmed that they refer to the same session). Is there a way to systematically align the data saved to the tablet with the ones on the local PC? Thank you!
Hi @user-d4c059 , no need to worry about tagging us, as we will see your message.
First, may I ask your use case? To clarify, the S9 tablet is still an experimental device.
Next, may I ask why you are saving the streamed data rather than running a standard recoding in the app? The recorded data will be higher fidelity and will be in a format that is compatible with the tools in our ecosystem.
Once that is clarified, we can proceed to the timestamp offset question.
Thank you getting back promptly! I apologize for the lack of context. I'm a Mechanical Engineering PhD student in U.S. and I am using Neon as part of my multimodal experiment design for the research purpose of training VLA models. We are running extended experiment sessions and worry smartphones will run out of battery before an experiment session wraps up. Secondly, the hypothesis that inspired our research is time-sensitive. I am using scripts to make sure all modalities of data start/stop recording at the same time, but I am happy to use data saved to tablet locally as long as I will be able to name/extract/read them knowing which sessions they correspond to.
@user-d4c059 , you are welcome and nothing to apologize about.
How long are your sessions? You can record for 4 hours on a single charge of the phone. If that is not enough, you can use a USB hub to simultaneously charge the phone.
Note that it is not possible to start/stop Neon's sensors at the same time, nor in synchrony with another device, even when scripting. Neon's sensors all have non-deterministic start times and run in parallel. It is instead recommended to use Events and follow our Time Sync guide or use the Lab Streaming Layer integration.
If you are only working with data from the phone, then make sure to use the Export button in the three button menu next to each recording in the Recording List of the app. Then, it will not have a UUID, but rather the date and time at which the recording was made. You can then rename the folder after copying it to your computer's harddrive. You could even automate this with the adb tool.
Thank you for the instructions. I will try these tricks!
Hello all, I'm working with a separate developer to use data recorded in the Neon Companion App from the Neon Module for features in a Unity project. He did not use the Unity XR Package and instead wrote his own system. Data Transfer was working just fine for weeks now but out of nowhere, specifically tracking data was no longer being transferred. We can still access the camera data but nothing is being received in terms of pupil tracking. I've already restarted both the computer and phone as well as ensuring they are on the same wifi network. The Neon App also displays that there is one device connected when I have Unity running so I know that it is able to transfer some data to Unity. There should also be nothing blocking this data transfer in the computer's firewall settings. Is there a solution to this? I know the tracking is working in-app so I think the issue is in the app not the hardware.
Dear Pupil, in the .csv tables there is only Recording ID, but the names of the subjects are in Sections.csv. Is it possible to download for axemple aoi_metrics with both Recording ID and Wearer Names in colomns?
Hi @user-3c26e4 ! Feel free to suggest it on the π‘ features-requests channel. In the meantime, you can add You can append the wearer's name to any CSV file with recording id using this snippet. https://gist.github.com/mikelgg93/487abeb80fd26ff90a101189250b1357 Lemme know if you have any trouble using it.
I sent an email with requests.
Hi @user-f43a29 We had in our last project some issues with detection of blinks. Our Companion Device in combination with the actual neon monitor sometimes does not detect blinks correctly (we are obliged to use the system locally and we are not allowed to use cloud-storage). If I would use the asyncAPI (python) receive_eye_events_data method will it be computed seperately out of raw data from the NEON device or does the method rely on the data precomputed by the companion device?
Hi @user-a5d1a8 , no need to worry about pinging. We will see the message.
May I ask what the problem was back then and what version of the Neon Companion app you are using?
The Async API does not compute anything differently from the Simple API. Under the hood, the Simple API actually is the Async API, just a simplification layer for common use cases. All real-time streamed data are pre-computed by the Companion Device.
Hi, could you please confirm whether this method for calculating the horizontal eye position (in degrees) using the optical axis is correct?
Hi @user-2b5d07 , it would probably be best to reference the standard equations for switching between Cartesian and spherical coordinates. Just note that Neon's scene camera coordinate system has some differences from the standard mathematical spherical coordinate definitions:
df["azimuth_left_deg"] = np.rad2deg( np.arctan2(df["optical axis left x"], df["optical axis left z"]) )
df["azimuth_right_deg"] = np.rad2deg( np.arctan2(df["optical axis right x"], df["optical axis right z"]) )
Hi @user-f43a29 and @user-d407c1 , We've been using neon successfully with python and are trying to deploy it with some code written in MATLAB (R2023b running on Ubuntu). We've followed the directions vis a vis the support matrix (Python 3.10, appropriate library versions etc.) and configured the MATLAB variables (pyenv etc.) carefully and correctly (as best as we can tell) to enable matlab to talk to the glasses via python. However, we're unable to discover the device via MATLAB, i.e., run device=Device(); successfully, even as we continue to be able to talk to it via python) After some debugging, we've narrowed down toDevice.m's obj.py_device.receive_matched_scene_video_frame_and_gaze(); on line 60 upon execution of which MATLAB hangs (stuck on busy state) and remains unresponsive. Although this seems to suggest an inability to communicate with the device (network issues), we are able to exercise it fully via existing python code for a different experiment. We also were able to retrieve device IP etc. Do you have any advice or suggestions you could offer us on where we could start looking for root causes for this issue?
Note: I'd initially written with a different set of detailed symptoms which I was able to resolve and hit the specific problem mentioned above. If you read that earlier, please excuse the edit. Thank you for your help with this.
Hi everyone, I am interested in using the Every Move You Make version of the Neon Glasses to get the absolute position of the pupils and gaze. Is the tracking of the marker already integrated into the software, or do I need something else for that? Are there cameras recommended for tracking the markers? Thank you π
Hi @user-dbcfec π ! The Every Move You Make frame includes passive reflective markers, allowing you to track the frameβs position with compatible motion capture systems such as Qualisys, Vicon, or OptiTrack.
Weβll be releasing an Alpha Lab tutorial soon that walks through the full workflow. In the meantime, you can check the repository below, which includes the code needed to transform data from Neon into your motion capture coordinate system: https://github.com/pupil-labs/neon_mocap_localization
Let us know if you have specific questions about your setup.
I am not fully sure what you mean by pupil absolute positions, could you clarify?
Hi @user-27f0ef @user-97c46e π ! You may want to check the latest update in π― announcements , including the compatibility notes.
@user-27f0ef since you're using a custom solution rather than NeonXR, you can remain on the previous app version until your software is updated to support the changes.
@user-97c46e you may simply need to update the underlying Python realtime library to restore compatibility.
Let us know if anything remains unclear after checking.
Thanks you for your response. Could you say a bit more about what you mean by restore compatibility? I am able to use the device via Python already, without any issues. The compatibility requirements for MATLAB interop (https://github.com/pupil-labs/pl-neon-matlab) are also met. Is there a interop matrix between MATLAB/OS and the python library version that I'm missing based on which you believe updating the python real time library is the missing piece?
Thanks for following up. Could you kindly open a ticket at π troubleshooting and share some details about your setup? E.g. which version of the Companion App, Realtime API , Matlab and OS are you, along with any details you might find relevant
Thank you for the quick reply. By "absolute position," I meant: For a project, I need to know the exact location of the driver's eyes and pupils in 3D space. I just started working on this and am not sure if there is a simpler solution or better wording π .
Alright then, that frame (EMYM) would help you achieve the absolute position of the frame and scene camera (provided you have a Motion Capture system in place).
From there, Neon already offers the eyeball center position relative to the scene camera in mm.
We do not offer pupil's plane position out of the box but you can make some assumptions about the geometry of the eyeball to shift it from the eye ball's center.
Do you have a recommendation for a motion capture system that works well with python or would it be possible to have a scene camera that is fixed to the car?
Good question! This depends heavily on your environment and what exactly you want to capture.
I canβt provide a specific recommendation on motion capture systems, but I can share some general considerations.
Marker-based optical systems typically operate in controlled indoor lab environments as they typically use IR illumination.
Systems like Qualisys, Vicon, and OptiTrack are widely used, offer high precision, and provide SDKs or data streaming options that can be accessed from Python (either directly or via network protocols). However, they require a calibrated multi-camera setup and a stable environment.
If your setup is inside a car, traditional optical MoCap systems might be impractical unless the vehicle is stationary in a lab setting.
For many driving studies, mounting a fixed scene camera inside the car is often a simpler and more robust solution than implementing a full motion capture system.
But this falls outside my area of expertise, I would recommend you asking the specialists.
We own the one+ 10 Pro, (NE2213) with oxigenOS 13.1, neon companion 2.9.8-prod. The problem was: some of our recordings did not detect blinks correctly. Our workflow was: after a day or so of recordings (in traffic simlator, ~3h of driving) we exported the raw files to a disk and deleted the raw files to avoid storage issues on the device (70 persons, ~1h recordings per person). But we saw afterwards, that some of the recordings seems to lack the blinks. the final solution was: pupillabs was so kind to recalculate the blinks after uploading the files to the cloud. This was OK for the moment as the iris and other data out of the video were sufficient pseudonymized. The scene camera does not catch persons, nor real scenes. If the pre-computing is on the device, then programming will not change the game. to avoid this: Can we connect i.e. a windows / unix machine instead of the companion device? According to my idea, more calculating power = more accurate detection blinks offline, am I right?
Hi @user-a5d1a8 this is Miguel stepping in for @user-f43a29 .
Has the data already been collected, or are you planning to collect new data?
If youβre collecting new data, Iβd recommend updating to the latest version of the app. It includes more robust blink detection, you should not face that issue, as well as eyelid aperture estimation (when βcompute eye stateβ is enabled).
With eyelid aperture available, even if a blink is partially missed (e.g., a half blink), you can apply your own threshold post hoc based on the aperture signal, completely offline.
@user-d407c1 Hi Miguel, Do you have any information on whether it is possible to identify microsaccades with pupil neon glasses?
Hi @user-7cb636 π ! We havenβt specifically validated micro-saccade detection with Neon, but weβd be very interested to hear about your findings if you explore this.
One potential limitation is the 200 Hz eye image sampling rate, as micro-saccade detection can benefit from higher temporal resolution.
That said, whether this becomes a practical constraint depends on your specific analysis approach and thresholds (e.g. broader event frequency rather than precise trajectory modeling). See also https://www.mdpi.com/1995-8692/4/2/7 or https://pmc.ncbi.nlm.nih.gov/articles/PMC11217914/table/t02/
Hi @user-d407c1 , We are planning to collect new data. but they should be comparable to the 'old' ones regarding fixations / saccades and - of course blinks. I will update the app.
one question still not answered. is it possible to use a unix/win-machine as companion device? As we are most of the time in door at a driving simulator it could be more comfortable?
Sorry! I miss that question π No, NeonNet has been tailored to the architecture of the Companion Device, so it can't run on a different machine under normal terms.
More calculating power = more accurate detection blinks , that's not exactly like that.
The reason why your blinks may not have been detected could be that you did not have a compute eye state enabled on your Companion App.
It is true that older companion devices can struggle to sustain 200Hz with eye state and fixations in realtime (see the note on https://docs.pupil-labs.com/neon/data-collection/data-streams/#eye-openness) but the S25 has no issues.
Hi, I have a question regarding recordings. I wanna do recordings locally and display pupil data on the experiment screen in real time. Is it possible?
Hi @user-c6f796! What do you mean by "doing recordings locally"? Note that Neon needs to connect to the Companion Device that runs the Neon Companion App.
However, if you want to stream the data to a laptop/PC and control the data in real time (i.e., plotting pupil diameter timeseries overlayed on your experiment screen) this is possible using our Real-Time API.
Are you using any specific software for stimulus presentation, like PsychoPy? If you can share a few more details about your setup, I'll be able to provide more tailored feedback.
Thank you! Could you point me to resources on how to integrate a fixed scene camera, or suggest someone I could contact? I really appreciate the good support, and I'm looking forward to using the glasses!
Unfortunately, this is out of my area and there's no much insights I can offer
Thank you for your answer. We own as a companion device the (maybe early) one+ 10 Pro, (NE2213). Is it known to the one+ to struggle in 200Hz-detection? In short: If we would like to integrate (=get the data of NEON and the simulator synchronous in one file) data , we shold use the WLAN-extension of the sim-network and use the async API, knowing that 200Hz is sometimes 'too much' for the One+. We usually conduct/sync the simulation by 120 Hz.
Hi @user-a5d1a8 , I'm hopping back in for @user-d407c1 . As Miguel mentioned, the real-time data rate of the OnePlus 10 Pro can slow down if you have both Compute Eyestate and Fixations enabled. You can simply experiment with having both options enabled, one option, or neither, to see which fits your usecase best.
Also, using the Async API does not exactly provide more performance. It is rather for more flexibility when you intermix IO-bound and CPU-bound processes. Some guides on asynchronous programming in Python should help clarify that, if it is an unfamiliar concept.
Hi! We are moving our analysis away from the cloud and using Neon player, but I'm now experiencing problems with loading in the data. I have exported from the phone and have the folder, and I can see video/audio/gaze in Neon Player fine. But when I try to detect fixations using the plugin it takes a while, percentage ticks up and then it detects zero fixations
Hey @user-53a8e1! Would you mind opening a ticket in our π troubleshooting channel? We can assist you there!
I feel like this worked the last time I tried it. Maybe I'm a bit confused about when/where fixation detection happens or if there is some setting on the phone that I need to change
Good morning/afternoon, I am trying to download the "native recording data" from pupil cloud Neon recordings so I can process them in Neon Player. I have noticed that some sessions, despite working fine in the cloud, whenever I download them, my macbook throws an error 79 "inappropriate file type of format".
I'm wondering if this is just a mac problem? I noticed that I also couldn't install Neon player on my macbook but I was able to run it on my windows laptop. I was only trying to fetch the recordings and copy them over to an external hard drive but the error had me worried there's something wrong with the recording data.
Hi @user-5f9f8f , could you try opening them with 7-zip? It is available through Homebrew.
With respect to installing Neon Player, did you receive a security warning on MacOS?
[email removed] Byron , could you try opening
Yep I am using psychopy and I wanna do things as you mentioned
Hi @user-c6f796, since you're using PsychoPy for your stimulus presentation, keep in mind that we offer a dedicated PsychoPy-Neon plugin that allows you to synchronize Neon with your PsychoPy experiment and obtain/visualize gaze and pupil diameter data in real time as the participant performs the task.
Did you have a chance to look through this section of our documentation? https://docs.pupil-labs.com/neon/data-collection/psychopy/ - we offer an example psyexp file showing you how to run a gaze contingent task on PsychoPy's Builder using Neon, as well as a code snippet showcasing a simple example experiment using Psychopy's Coder