New channel for Pupil software development
@user-b91aa6 you are trying to set up Pupil on Windows from source. Is there any reason why you are building from source? For example, could you develop plugins?
@user-b91aa6 based on your last image upload it seems that the detector was not yet finished building
It may take a long time for it to build
And a long time for the optimization calibration to build
Just to make sure - are you using Windows 10 and x64 Native Tools Command Prompt for VS 2017 Preview
Thank you very much. I need to use Pupil lab in my own codes. So I need to run it from the source.
I am using win10 but X64 visual studio 15
ok
I think the visual studio version is not a problem, right?
The notes for the development machine in docs were using v15
What level of customization are you seeking?
I ask because setting up Pupil to run from source on Windows is a very fragile process
and if you can use plugins or communicate over the network, it would be much easier/less time consuming
I want to get the 2D pupil data, gaze data, 3D pupil data , 3D gaze data
You can do this all over the network
You can see how to subscribe here: https://github.com/pupil-labs/pupil-helpers/blob/master/python/filter_messages.py
You can just subscribe to Pupil Capture or Pupil Service
and get all gaze, pupil, notification, surface, log data and more
I read this, for example, I want to get the data in my own C++ codes, what should I do?
You would subscribe to Pupil using ZMQ with you C++ ode
code*
So I run pupil_service .exe, how do I subscribe to Pupil using C++?
I would suggest runing pupil_capture.exe to get started with development
You subscribe to Pupil using C++ by writing C++ program using zmq and msgpack
You can use the python code here: https://github.com/pupil-labs/pupil-helpers/blob/master/python/filter_messages.py - as reference
Understand. Thank you very much. context = zmq.Context()
open a req port to talk to pupiladdr = '127.0.0.1' # remote ip or localhost req_port = "50020" # same as in the pupil remote gui req = context.socket(zmq.REQ) req.connect("tcp://{}:{}".format(addr, req_port))
ask for the sub portreq.send_string('SUB_PORT') sub_port = req.recv_string()
So I also set corresponding addres and req_port in my C++ codes to fetch the data?
yes, the default port in Pupil Capture and Service is set to 50020
If you want to change the port you can do so in Pupil Capture's Pupil Remote
plugin GUI
the IP address is localhost
if you are running Pupil on a different computer than your code, you will need to change the IP address of course
I am going AFK now. I hope that these notes are helpful for your development
Thank you very much. I just began to use pupillab. Thanks for the patient answer.
You're welcome 😄
For msgpack, how should I set the address and port?
Does zeromq supports windows?
The zeromq.org/bindings:cpp is used for receiving data, what's the role of msgpack-c?
For zmq, is it supported on windows? Many commands are not recognized
@user-b91aa6 I am not able to help you there - I am not a C++ expert
Question about 3D calibration in VR: Why you show 3 circles and show 3 markers
Funny typo somebody will sometimes want to connect
void OnCalibtaionStarted() {
@user-b91aa6 I have something already implemented in my c++ unreal plugin
Thank you very much. Can you share the codes, I have send you an friend request. It would be very helpful. Thanks [email removed]
Hello, I have a small issue when subscribing with ZMQ to the IPC Backbone, it seems that it blocks in the following command ipc_sub_port = requester.recv().decode("utf-8")
I am not sure if this is related with the following but I update the pyglui package and I had to update then the pyaudio package but first I had to brew install the portaudio dependency.
The current version of pyglui which I updated to is 1.22 and the version of pyaudio is 0.2.11.
I tried using the ZMQ.NOBLOCK flag and we receive the EAGAIN however my code does not proceed any further than that command.
Is there any way to debug this issue?
My code used to work before I updated those packages. I tried reverting back to the versions I used to have but still no luck.
Any help would be greatly appreciated as next week I have to submit my thesis :/
(EDITED) Found the problem guys, I reverted to the previous versions of the MacOS dependencies and re-downloaded the previous version of the source code and the methods are working again. Tried using the v1.7 Capture application as well as the newer version of the source code and it works too. 😄
Question about calibration: What the projected sphere mean? How do you project the sphere from 3D space (unit: mm) to image space(unit: pixels)?
@papr
Has anyone had any luck taking the source code and making it compatible with a Raspberry Pi 3 ?
@user-e5aab7 I did not start with it yet, but I might need to try getting it run on a rasp3 or an odroid xu4. I naively hoped it will just work since there is a linux version ^_^"....
@user-b91aa6 we do this projection based on a pinhole camera model.
Thank you very much for your reply. Can you describe more details? Why the pinhole camera model can map the 3D eye sphere to a 2D projected sphere in image space? @mpk
Question 2: What the 3 markers mean in the VR demo? Red Green and Blue circle?
let, right and avg gaze position. If they are close you have a good calibration.
regarding q1: this is trivial if you know the pos and size of the 3d sphere.
Why do you project the 3D sphere to 2D image space?
just for visualisation in the eye window. No other reason.
we might remove this soon, its not really needed anywhere else and can be computed trivially.
Thanks
@user-bab6ad I am also trying to do on rasp3 but I am having no luck, I am very new to it so I may just be making mistakes. I would be very interested if you get it to work.
@user-049a7f I don't know when exactly I will try that. There are some other things in the project which are higher priority now. But when I do I will post it here
Hey! I think I found an error in Pupil when using the most recent version of the boost-python3
homebrew package. I created an issue as well as a PR. Not sure if this is the right way to do it... (#1195 and #1196)
@user-06a050 this is perfect! Thank you!
hey guys, I had some time so I implemented the "PuRe" pupil detection algorithm into Pupil Labs on my fork. I raised a PR (mattem86) ... I'm not sure about license, I just was curious how it would be perform and I'm not disappointed. Maybe you could gain something from this. Just select it in your GUI and turn on algorithm view. * Thiago Santini, Wolfgang Fuhl, Enkelejda Kasneci, PuRe: Robust pupil detection * for real-time pervasive eye tracking, Computer Vision and Image Understanding, * 2018, ISSN 1077-3142, https://doi.org/10.1016/j.cviu.2018.02.002.
Hello! I'm trying to run main.py from source but failed with ImportError: pupil_src/shared_modules/pupil_detectors/detector_2d.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2cv3Mat20updateContinuityFlagEv. I'm sure I have removed the opencv installed by apt-get.
By the way, my opencv is installed from conda. Is this the matter? Thanks
I figured it out. I didn't get fully installed pyav and pyndsi.
Using ffmpeg4.0, pyndsi have to modify some changed macros and PyAV can be installed from https://github.com/mikeboers/PyAV
@user-d53fa1 this is actually not possible. We have added few modifications to our fork that are required for Capture and Player. We will rebase the required changes as soon as possible.
Thank you for your response. I didn't notice your modifications on your fork. I will reinstall the av module later.
I got pupil to open on raspi but now I am trying to get pupil to communicate with the raspi Noir camera module for eye tracking. Does pupil only communicate through usb? Is there anyway to get pupil to communicate with the Noir peripheral?
@user-d53fa1 just an FYI, I made changes to pupil-labs/PyAV to make it work with ffmpeg4.0
@user-e5aab7 How do you know that it is running successfully? Do you have a display connected to the raspi?
Sorry for the offtopic but how is raspberry able to handle at least one 120Hz camera frame processing in realtime at all to be usable with Pupil? Maybe (big maybe) Asus Tinkerboard could but I'm scratching my head about usage of Rasperry.
@papr Yes, I have a HDMI connected, I have 3 windows open when I run python3 main.py
@user-c7a20e Well I do not know if it is possible to be fair. I am hoping it is but I would understand if it isn't. I am very new to RPI so I am learning as I progress.
@user-049a7f you will have to write your own backend if the Noir camera is not listed in the UVC Manager
In 2D mode, you should easily be able to achieve tracking accuracy within the physiological limits (sub 1 deg visual degrees). May I ask that what the physioloical limits mean? @papr
Why does the example codes can't run? This is from https://github.com/pupil-labs/hmd-eyes/blob/master/python_reference_client/hmd_calibration_client.py#L42. Why it says a bytes-like object is required, not str?
Why does the example codes can't run?