🕶 invisible


user-00fa16 03 September, 2020, 03:01:12

I want to connect pupil lab with psychopy using IPC backbone, so I copy and paste the code in the network API documentation, but the program keeps loading after a bunch of results appear and cannot exit

papr 03 September, 2020, 13:23:22

Hi @user-00fa16, just copy-and-pasting the example will probably not work. It is important to understand the code structure of the Psychopy-generated experiment and inserting the parts from the experiment at the right places. You can read more about the example parts and their meaning in our network API documentation https://docs.pupil-labs.com/developer/core/network-api/. If this does not work it sounds like you might need more dedicated help. I would recommend reaching our to info@pupil-labs.com for that.

user-00fa16 04 September, 2020, 03:39:23

Would you tell me why the script keep going on like this and fail to respond?

Chat image

user-00fa16 04 September, 2020, 03:46:50

the script is about 'reading from IPC Backbone'

user-abbed5 04 September, 2020, 08:01:19

Hi, the video image of our eyetracker suddenly turned black and white. The color information seems to get lost. Maybe you have an idea what could have caused the problem? The image is black and white in the preview of the app, as well as when we record the data. In addition, the connection to the eyetracker was interrupted in two cases when we used it in an experiment. There was no error, but no data was recorded (once after a few seconds and the other time after ~15 minutes). We suspect a problem with the cable between the eyetracker and the phone?

papr 04 September, 2020, 08:12:49

@user-abbed5 please contact info@pupil-labs.com in this regard

user-4648c3 07 September, 2020, 09:23:02

Hi @papr , sorry for maybe a bit naive question. What are the reasons for having an accelerometer and gyroscope in the Invisible? Do you use it for calibration purposes? Thanks, Stijn

marc 07 September, 2020, 09:41:27

Hey @user-4648c3! The IMU data is not utilized by the gaze estimation piepeline. It is just another sensor available in the device that essentially allows you to measure changes in head-pose, which can be interesting in different applications.

user-c6717a 08 September, 2020, 22:18:27

We are having issues with Pupil Player (2.3.0) crashing when we try to load some newly collected data from a Pupil Invisible (no crash screen to share). It says it's updating the format and then crashes with the icon in the toolbar disappearing. Any ideas of what to look at?

user-c6717a 08 September, 2020, 22:31:37

Actually looking into this further, it looks like the world video did not get captured on the Pupil Invisible. It's just a gray screen when we look at it on Pupil Cloud and in Pupil Player 2.1. The world.mp4 seems to show no data (zero bytes). Any idea why this might have happened? I double checked the video feed and calibration right before running the experiment, so it seems like it should have recorded. Thanks!

user-c6717a 09 September, 2020, 01:06:59

Turns out we had a conflicting app on the phone. Not sure what the conflict is (we have a secondary app capturing the phone audio and a time drift measure for synchronization with other wearables), but have isolated it to that. Will let you know if we find anything interesting.

papr 09 September, 2020, 06:59:04

@user-c6717a We are aware of the issue with opening Pupil Invisible recordings in Player v2.3 that do not have any valid scene video files. Our upcoming v2.4 release will include a fix for this issue.

papr 09 September, 2020, 07:00:42

we have a secondary app @user-c6717a Could you be more specific to which app this is? Is this app available publicly or is it a self-developed app?

user-fb5b59 09 September, 2020, 12:09:16

Hey, great work with your Pupil Invisible white paper! Nice analysis and it is easy to follow your different steps. Thank you very much! One question regarding the recorded ground truth (and the corresponding marker): are you just placing specific marker (e.g., AruCo Tags) somewhere in the room and calculate the ground truth gaze ray based on the marker detection in the scene camera?

wrp 10 September, 2020, 08:55:38

@user-92dca7 can you respond to @user-fb5b59 ☝️ ?

user-92dca7 10 September, 2020, 09:12:28

Hi @user-fb5b59, thanks for your positive feedback! We are happy to hear that you enjoyed reading the white paper. You are right, ground-truth gaze direction is determined based on an analysis of marker tags in the scene camera video.

user-bf7a13 16 September, 2020, 12:09:23

Hey, I have a question regarding external triggers in Pupil invisible recordings. How can I access the information when and what triggers were sent. I send triggers through a python script running on a laptop on the same local network.

papr 16 September, 2020, 12:10:27

@user-bf7a13 Triggers sent during a recording are stored to the events.txt/.time files https://docs.google.com/spreadsheets/d/1e1Xc1FoQiyf_ZHkSUnVdkVjdIanOdzP0dgJdJgt0QZg/edit#gid=254480793

user-bf7a13 16 September, 2020, 12:12:33

@papr thank you for the quick reply. I already found the documentation but when sending triggers in my recording I only see one string in the event.txt file e.g. "marker" and can't open the event.time file

papr 16 September, 2020, 12:15:37

@user-bf7a13 Then you might not be sending the events correctly. Events sent to the phone will be echoed via the network api event sensor. You can use it to receive a confirmation that everything worked correctly. https://docs.pupil-labs.com/developer/invisible/#network-api Simply change the GAZE_TYPE from gaze to event

Also, how are you attempting to open the event.time file?

Edit: corrected link

user-bf7a13 16 September, 2020, 12:52:13

@papr we try to open the event.time file with a normal text editor (Notepad)

papr 16 September, 2020, 12:53:13

@user-bf7a13 The .time files are binary files. Checkout the "timestamps" sheet/tab of the recording format link above for details

user-bf7a13 16 September, 2020, 13:46:12

@papr thank you we manage to retrieve the timestamp information with a python script

user-bf7a13 16 September, 2020, 15:44:24

I am now trying import ndsi after sucessfully installing it. unfortunately i get a dll load error

user-bf7a13 16 September, 2020, 15:44:29

Chat image

papr 16 September, 2020, 15:44:53

@user-bf7a13 How did you install it?

papr 16 September, 2020, 15:45:23

Did you install it via the wheel? https://github.com/pupil-labs/pyndsi/releases/download/v1.3/ndsi-1.3-cp36-cp36m-win_amd64.whl

user-bf7a13 16 September, 2020, 15:46:41

I followed the following instructions: https://github.com/pupil-labs/pyndsi

papr 16 September, 2020, 15:47:06

@user-bf7a13 Please give the wheel a try. Download it and run pip install <path to wheel>

user-bf7a13 16 September, 2020, 15:53:33

unfortunately i get the following error:

Chat image

papr 16 September, 2020, 15:54:04

@user-bf7a13 Ah, this wheel is specifically for Python 3.6

user-bf7a13 16 September, 2020, 15:54:24

i have python 3.7.9

papr 16 September, 2020, 15:55:23

@user-bf7a13 in this case, it might make sense to proceed with running from source. Make sure to include the location of the libturbojpeg and ffmpeg dlls files in you system path. That step might not as explicitly mentioned in the docs as it should

user-bf7a13 16 September, 2020, 15:56:49

i'll try python 3.6 first

user-bf7a13 17 September, 2020, 11:29:21

adding the file to the system path made the difference. Thank you very much for your help!

user-bf7a13 17 September, 2020, 14:35:07

and after successfully installing ndsi I can send marker to my android device! Great support!

user-fb5b59 21 September, 2020, 07:21:24

One question regarding synchronization: when is the camera world frame und corresponding gaze frame timestamp generated? Is it generated on the time the image is taken or when the data frame is actually streamed?

Edit: Or is it taken when the recorded image is recevied by the mobile device?

user-fb5b59 22 September, 2020, 07:24:55

One more question: is it possible to remove for example the lower part of each eye glasses. It might be nice (for other face algorithms) to have as less as possible occlusion in the face.

papr 22 September, 2020, 12:09:45

@user-fb5b59 Currently, it is not possible to remove the lower part of the glasses' frame. I will look into the timestamp question and come back to you.

papr 22 September, 2020, 12:31:17

@user-fb5b59 It is the last one, when the frame is received on the device.

user-fb5b59 22 September, 2020, 14:02:33

@papr Thank you very much! Reason why I'm asking: I would need a synchronization between a camera running on the computer and the simultanously running PupilInvisible.

papr 22 September, 2020, 14:06:29

@user-fb5b59 The timestamps are measured as nanoseconds in Unix epoch. When using Python, you can use https://docs.python.org/3/library/time.html#time.time_ns to get a synchronized clock (assumes that your computer is synced via NTP).

user-e6124a 23 September, 2020, 18:55:21

has anyone experimented with running a Pupil Invisible data receiver on iOS? i found a Zyre library for iOS, but i haven't had much luck yet implementing the NDSI protocol by hand.

user-16f325 24 September, 2020, 14:22:04

Hi! We are trying to extent the OnePlus recording time by using an additional power bank. However the problem is that either power or data transfer works when using an external adaptor (we've tried different types). Are there any software restrictions that prevent simultaneous power and data transfer? Does anybody have experience with a similar setup. I know that the recommended way to extend recording time is to use multiple mobile phones, but unfortunately this is not a solution in our use case scenario.

user-9a1bb2 24 September, 2020, 15:06:48

Hi, I have a question regarding gaze calibrations. Yesterday, we made some recordings of the gaze behaviour of basketball players using Pupil Invisible. Before we started the recording, we used the live screen in the app to correct for the offset. However, while playing the recordings in Pupil Player, I found out that the detected gaze is still a bit off from the markers we used. Is it possible to correct for this offset afterwards? And if so, how can I do that?

user-e6124a 25 September, 2020, 22:47:24

are there any non-python reference implementations of NDSI? interested in C/C++ in particular

user-1391e7 28 September, 2020, 10:46:12

Hello!

user-1391e7 28 September, 2020, 10:46:32

I tried building pupil monitor from source and ran into a problem afterwards

user-1391e7 28 September, 2020, 10:47:12

I working on a wondows 10 machine, installed python 3.6 and followed the instructions layed out in the readme

user-1391e7 28 September, 2020, 10:48:21

cloned the repo from git, installation itself didn't get any errors, but I'm not sure what to do afterwards. an executable was placed in the Scripts folder of the python installation

user-1391e7 28 September, 2020, 10:50:33

and when I'm calling pupil_invisible_monitor.exe now, I'm getting dll import errors. it looks like the site packages that were installed can't be found? and I'm not sure why

user-c5fb8b 28 September, 2020, 10:53:51

Hi @user-1391e7, is there a reason for why you need to build from source and cannot just use the app? It also sounds like you are mixing building from source and running the app, as building and running from source does not involve any .exe file

user-1391e7 28 September, 2020, 10:54:43

it's just about the visualization, the chosen size of the gaze circle

user-1391e7 28 September, 2020, 10:55:14

I'd like it to be smaller, so I wanted to edit that a little and build it again, see what it looks like then

user-c5fb8b 28 September, 2020, 10:57:03

Ok, please be aware that the instructions to run from source will not create a .exe file. Instead it will install Pupil Invisible Monitor as an executable library into the Python environment that you used for building. As mentioned in the instructions, you can just type pupil_invisible_monitor into you terminal after having installed the library. This should start the application.

user-1391e7 28 September, 2020, 10:57:25

right, I called python -m pupil_invisible_monitor

user-c5fb8b 28 September, 2020, 10:57:31

or this, yes

user-c5fb8b 28 September, 2020, 10:58:10

and this does not work?

user-1391e7 28 September, 2020, 10:58:46

that leaves me with the ImportError yeah

user-c5fb8b 28 September, 2020, 10:58:54

Also what did you mean with:

an executable was placed in the Scripts folder of the python installation

user-1391e7 28 September, 2020, 10:59:32

just what happened after I ran "python -m pip install ."

user-c5fb8b 28 September, 2020, 11:00:36

Ok!

user-1391e7 28 September, 2020, 11:01:42

did I screw up the installation itself? 🙂

user-c5fb8b 28 September, 2020, 11:01:48

We had reports about missing DLLs in the past, that were caused by a missing Windows package. Please try downloading and installing this package and test if the problem still persists: https://www.microsoft.com/en-us/download/details.aspx?id=14632

user-1391e7 28 September, 2020, 11:03:00

is it a problem if I get the error that I have a newer version of said redistributable already installed?

user-c5fb8b 28 September, 2020, 11:03:16

can you post the exact message?

user-1391e7 28 September, 2020, 11:03:27

just a sec

user-c5fb8b 28 September, 2020, 11:03:35

a screenshot would be fine as well

user-1391e7 28 September, 2020, 11:04:28

Chat image

user-1391e7 28 September, 2020, 11:06:04

10.0.40219 is what windows is telling me

user-1391e7 28 September, 2020, 11:06:27

meaning my version of the redistributable

user-1391e7 28 September, 2020, 11:07:31

Chat image

user-1391e7 28 September, 2020, 11:07:45

that's the error I'm getting when I'm trying to run from source

user-c5fb8b 28 September, 2020, 11:07:59

It seems I send you a link to an old version, can you try downloading vc_redist.x64.exe from this page: https://support.microsoft.com/en-ca/help/2977003/the-latest-supported-visual-c-downloads It's listed under the headline Visual Studio 2015, 2017 and 2019

user-1391e7 28 September, 2020, 11:08:48

got it, updated

user-c5fb8b 28 September, 2020, 11:11:10

Do you still get the error when trying to run Pupil Invisible Monitor?

user-1391e7 28 September, 2020, 11:11:17

yes, same error

user-c5fb8b 28 September, 2020, 11:11:41

Can you run python -m pip freeze and post the output?

user-c5fb8b 28 September, 2020, 11:22:18

@user-1391e7 I found the reason for this issue:

user-1391e7 28 September, 2020, 11:22:28

where did I go wrong? 🙂

user-c5fb8b 28 September, 2020, 11:30:07

It was not an error on your side. Pupil Invisible Monitor will also require you to install FFMPEG binaries to your computer, which we are not mentioning in the docs. You can download the latest FFMPEG Windows build from: https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.zip Please extract the ffmpeg-release-full-shared.zip somewhere where you can keep it around, as you will need these files to run Pupil Invisible Monitor. Then you will need to add the bin folder from the extracted folder to your PATH environment variable in the Windows settings. Please try running Pupil Invisible Monitor again afterwards, if it still does not work, you might need to restart your computer once for it to find the FFMPEG library.

user-c5fb8b 28 September, 2020, 11:30:35

We will make sure to include this information in the future, thanks for bringing it to our attention!

user-1391e7 28 September, 2020, 11:34:37

thank you for the help! I'll do that, reboot and let you know if that fixed it

user-1391e7 28 September, 2020, 11:52:48

I'm still getting the same error

papr 28 September, 2020, 11:53:28

You need to reopen the terminal after setting the PATH environment variables. Else it will not recognize the new values.

user-1391e7 28 September, 2020, 11:54:13

I did reboot

papr 28 September, 2020, 11:57:55

@user-1391e7 could you post a screenshot of your PATH environment values?

user-c5fb8b 28 September, 2020, 12:11:36

@user-1391e7 I'm not sure what the problem is here. Installing ffmpeg should have fixed the error. Can you try resetting your Python environment and reinstalling all Python libraries?

user-1391e7 28 September, 2020, 12:16:53

I'll try it on my personal machine, maybe something interferes locally that I'm not aware of.

user-1391e7 28 September, 2020, 12:17:59

thank you for the assistance in any case! I'll inform you if I happen to get it to work tomorrow

user-fb5b59 29 September, 2020, 12:07:31

Hey guys :) I want to get a gaze vector located at the eye position (or mean eye position, e.g., between both eyes) and NOT at the world camera position of the PupilInvisible. Do you have any idea how to deal with this problem? I know that I can use the intrinsic of the camera to calculate the gaze ray originating at the PupilInvisble World camera. Do you have any idea how to logical shift this vector to an other position?

user-df1f44 29 September, 2020, 20:30:07

Hi folks, not sure if anyoen here has had the issue I am having ( too many threads to scroll through).. So here goes. Unboxed the invisible today (Yay!). All good until some test recording were made. No scene video is being captured. Noticed the cloud space only allows sotorage for now. NO bother. Downloaded Player 2.4 packaged and still no joy. EYe videos show when I select post-hoc etc but still no world video capture, no fixations showing etc.. really confused guys. ANy ghelp would be awesome.

papr 29 September, 2020, 20:31:13

@user-df1f44 You should see gaze data (green circles) without using any of the post-hoc features in Player

user-df1f44 29 September, 2020, 20:31:37

And yes, all cables connected, all instructions follwed to a tee. App UI shows world and eye cameras capturing during recording but no cigar afterwards to view. the file itself shows something is there but no viewing

papr 29 September, 2020, 20:32:21

So you do not see the red circle indicating the gaze point, do I understand correctly? (within the Android app)

papr 29 September, 2020, 20:34:39

@user-df1f44 if this is the case, please share the original recording with data@pupil-labs.com and we will have a look.

user-df1f44 29 September, 2020, 20:36:24

within the android app - the scene shows and the red circle shows - however post recording - no joy with reviewing captured information.

user-df1f44 29 September, 2020, 20:36:47

Will send sample data to email adress as stipulated.

papr 29 September, 2020, 20:37:00

@user-df1f44 Please open the recording in Player, and "Restart from default settings" in the general settings menu

user-df1f44 29 September, 2020, 20:37:33

cool. will try that now and see

user-df1f44 29 September, 2020, 20:40:31

@papr - just did - no joy

Chat image

papr 29 September, 2020, 20:41:08

@user-df1f44 this looks like the scene video was not recorded. Once we reviewed the recording, we will come back to you via email.

user-df1f44 29 September, 2020, 20:42:06

@papr OK, thanks - data coming through to the e-mail adress shortly. Looking forward to your thoughts in due course

user-df1f44 29 September, 2020, 20:56:26

@papr - Data uploading with drive link for you guys - But just in case - I made a slightly shorter recording of 20secs to send over. Thought i'd give it another quick try to see. Still no joy as before but also this time, I noticed a warning on placing the recording folder int ot he player interface. Error message "Player: Moov atom not found" in my latest trial. Does this say anything to you? Thanks

papr 29 September, 2020, 21:03:29

@user-df1f44 This error message indicates missing meta data in the video file. Our Android development team is already investigating possible causes for this issue. We will keep you up-to-date in this regard.

user-df1f44 29 September, 2020, 22:06:20

@papr So, did a good 'ol reboot of the android device and I have been able to capture 2 recordings succesfully...😂 . Although all previous recordings are still kaput as before...😕 . Either way, all looks good over here... Anyone else have moov atom issues, Restart the android device.. Lol.... Fingers crossed it stays this way.. PICNIC...

marc 30 September, 2020, 12:11:40

@user-fb5b59 This problem with calculating this is that the distance of the 3D gaze point is unknown. As you say correctly you can use the camera intrinsics to calculate the 3D gaze vector originating from the scene camera. If you had the distance as well, you could determine the 3D gaze position. With an estimate of the eye pose in relation to the scene camera you could then calculate the gaze ray originating from the eye. Without knowing the distance, which Pupil Invisible unfortunately can not calculate, you can not solve this problem of epipolar geometry. Maybe your application allows you to estimate the distance somehow though?

marc 30 September, 2020, 12:17:56

@user-9a1bb2 Currently it is unfortunately not possible to change the offset value post-hoc. This is a feature we are looking to add to Pupil Cloud, but we do not have a release date yet. Since this is really just a fixed offset it would however be possible for you to estimate it yourself and manually add it to the gaze data reported in the CSVs you can download from Pupil Cloud. Sorry for the inconvenience until the feature becomes available in Pupil Cloud!

marc 30 September, 2020, 12:24:54

@user-e6124a No, there is unfortunately no other reference implementation of NDSI.

user-fb5b59 30 September, 2020, 12:44:29

@marc Thanks for your answer! That is actually the way I'm doing this at the moment...either just define a specific, "standard" distance or using some markers with known position with respect to the camera. But as you/I said it is not possible to get the gaze vector originating in at the pupil when someone is just looking around wihtout knowing any additional (depth) information

marc 30 September, 2020, 12:47:57

@user-fb5b59 I see! Unfortunately there is no easy way around this problem. Using markers (or even surfaces as available in Pupil Player) may be a practical way of getting rough distance estimates.

marc 30 September, 2020, 13:58:19

@user-16f325 While I personally do not have the expertise to explain to you why this is not possible, I am aware that there are non-trivial issues that prevent this. I may be able to refer an alternative solution however: We will soon switch to the OnePlus8 phone as the new Companion device for Pupil Invisible. Using that, the battery life extends to ~2.5 hours. Would that be enough to enable your use-case? If so, let me know and I can give you a few details on what you would have to do to switch to this device.

user-16f325 30 September, 2020, 19:28:31

Hi Marc, thank you for coming back to me about this. Unfortunately, even ~2.5 h will not really do the trick in our case. Do you know whether there are any hardware restriction for the intended solution? To me, the problem seems to be that the invisible companion software seems to prevent charging and data transfer at the same time. Maybe you could check that issue with your tech guys?

papr 30 September, 2020, 19:35:51

@user-16f325 This is not a limitation that is enforced by the app but the operating system.

user-16f325 30 September, 2020, 20:08:08

Aah, it's the operating system. Thank you, this was really helpful and, at least, prevented us from finding a hardware configuration that would work. Just out of interest: Is this a general Android issue or due to the specific implementation in the OnePlus phones?

End of September archive