• Stars
    star
    1,423
  • Rank 32,890 (Top 0.7 %)
  • Language
    Python
  • License
    GNU Lesser Genera...
  • Created about 11 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open source eye tracking

Pupil

Pupil Labs - Pupil Core software: open source eye tracking platform.

Open source eye tracking platform.

Pupil is a project in active, community driven development. Pupil Core mobile eye tracking hardware is accessible, hackable, and affordable. The software is open source and written in Python and C++ when speed is an issue.

Our vision is to create tools for a diverse group of people interested in learning about eye tracking and conducting their eye tracking projects.

Chat with us on Discord.

Users

Download the latest Pupil Core Apps: Pupil Capture, Pupil Player, Pupil Service

You don't need to know how to write code to use Pupil. Download the latest apps!

Read the Pupil Core user guide.

Developers

There are a number of ways you can interact with Pupil Core software as a developer:

  • Use the API: Use the network based real-time API to communicate with Pupil over the network and integrate with your application.
  • Develop a Plugin: Plugins are loaded at runtime from the app bundle. Note: if your plugin requires Python libraries that are not included in the application bundle, then you will need to run from source.
  • Run from Source: Can't do what you need to do with the network based api or plugin? Then get ready to dive into the inner workings of Pupil and run from source!

All setup and dependency installation instructions are contained in this repo. All other developer documentation is here.

Installing Dependencies and Code

To run the source code, you will need Python 3.7 or newer! We target Python 3.11 in our newer bundles and we recommend you to do the same.

Note: It is recommended to install the requirements into a virtual environment.

Note: On arm64 macs (e.g. M1 MacBook Air), use the python3.*-intel64 binary to create the virtual environment. We do not yet provide arm64-native wheels for the Pupil Core dependencies.

git clone https://github.com/pupil-labs/pupil.git
cd pupil
git checkout develop
python -m pip install -r requirements.txt

If you have trouble installing any of the dependencies, please see the corresponding code repository for manual installation steps and troubleshooting.

Linux

USB Access

To grant Pupil Core applications access to the cameras, run

echo 'SUBSYSTEM=="usb",  ENV{DEVTYPE}=="usb_device", GROUP="plugdev", MODE="0664"' | sudo tee /etc/udev/rules.d/10-libuvc.rules > /dev/null
sudo udevadm trigger

and ensure that your user is part of the plugdev group:

sudo usermod -a -G plugdev $USER
Audio Playback

The sounddevice package depends on the libportaudio2 library:

sudo apt install libportaudio2

Run Pupil

cd pupil_src
python main.py capture # or player/service

Command Line Arguments

The following arguments are supported:

Flag Description
-h, --help Show help message and exit.
--version Show version and exit.
--debug Display debug log messages.
--profile Profile the app's CPU time.
-P PORT, --port PORT (Capture/Service) Port for Pupil Remote.
--hide-ui (Capture/Service) Hide UI on startup.
<recording> (Player) Path to recording.

License

All source code written by Pupil Labs is open for use in compliance with the GNU Lesser General Public License (LGPL v3.0). We want you to change and improve the code -- make a fork! Make sure to share your work with the community!

More Repositories

1

hmd-eyes

Building blocks for eye tracking in AR and VR.
C#
150
star
2

pyuvc

python binding to libuvc
Cython
117
star
3

pupil-helpers

Scripts, Utilities and other Helpers for Pupil
Jupyter Notebook
47
star
4

pupil-community

Community contributed plugins and projects using Pupil
42
star
5

pye3d-detector

Python
34
star
6

pyglui

cython powered OpenGL gui that works with glfw
C
29
star
7

pySLAM

python binding for LSD SLAM
Python
28
star
8

pupil-tutorials

Jupyter Notebooks demonstrating how to process Pupil Player exports
Jupyter Notebook
24
star
9

pupil-docs

Documentation for Pupil - open source eye tracking
Vue
24
star
10

pupil-detectors

C++
23
star
11

pupil-geometry

Pupil Hardware Interface Camera Mounts
15
star
12

pupil-invisible-monitor

DEPRECATED - Use https://docs.pupil-labs.com/invisible/how-tos/data-collection-with-the-companion-app/monitor-your-data-collection-in-real-time.html instead.
Python
10
star
13

pyv4l2

cython powered bindings for v4l2 capture
Python
9
star
14

PuRe-open

Open source implementation of the PuRe pupil detector.
9
star
15

pyndsi

Python
8
star
16

pyximea

Python bindings for ximea XiAPI
Python
8
star
17

realtime-python-api

Pupil Labs Realtime API client
Python
6
star
18

neon-geometry

Reference CAD files for NEON integrations
6
star
19

pynanovg

cython powered bindings for nanovg
Python
6
star
20

nslr-hmm

Python implementation of the NSLR-HMM eye movement identification algorithm. | Fork of https://gitlab.com/nslr/nslr-hmm
Python
6
star
21

pupil-labs-website

The Pupil Labs Website
CoffeeScript
4
star
22

real-time-blink-detection

Python
4
star
23

densepose-module

Implementation of detectron2 denspose estimation with acknowledgement of body parts gazed.
Python
4
star
24

real-time-screen-gaze

Python
4
star
25

nslr

C++ implementation of the Naive Segmented Linear Regression algorithm with Python bindings. | Fork of https://gitlab.com/nslr/nslr
C++
4
star
26

pyvideoinput

C++
3
star
27

cygl

Open GL cython definitions and utils
C
3
star
28

pi_preview

Pupil Invisible Gaze Preview
Python
3
star
29

dynamic-rim-module

A tool to remap gaze from the scene camera onto screen content
Python
3
star
30

neon-player

Python
3
star
31

realtime-network-api

Realtime Network API
HTML
3
star
32

pl-recover-recording

Python
3
star
33

pl-rec-export

Pupil Labs Recording Export Tool
Python
2
star
34

pupil-docker-ubuntu

Pupil development dependencies Ubuntu Docker image
Shell
2
star
35

pyfontstash

python bindings for fontstash
Python
2
star
36

gaze-controlled-cursor-demo

Python
2
star
37

pupil-core-network-client

A Python client for the Pupil Core Network API
Python
2
star
38

pupil-docs-website

static site generator for pupil docs
JavaScript
2
star
39

pupil-matching-evaluation

Repository for the evaluation of the Pupil Core gaze matching algorithm
Jupyter Notebook
2
star
40

pl-neon-matlab

Use your Neon eyetracker in MATLAB and Octave
MATLAB
1
star
41

neon-xr

C#
1
star
42

camera

Python module that handles camera intrinsics and projections across multiple Pupil Labs projects
Python
1
star
43

gulp-sharp-minimal

Simple sharp plugin for gulp to modify images
JavaScript
1
star
44

pupil-demo

Python
1
star
45

surface-tracker

Python
1
star
46

pupil-icon-font

Icon font for Pupil software
JavaScript
1
star
47

pupil-core-pipeline

Python
1
star
48

pupil-picoflexx

Pico Flexx Backend for Pupil Capture
Python
1
star
49

pl-neon-recording

An API for working with raw data from Neon recordings
Python
1
star
50

realtime-matlab-experiment

A simple Matlab experiment that demonstrates how to start/stop Pupil Invisible recordings and send events to Pupil Invisible over the network
MATLAB
1
star
51

tag-aligner

Jupyter Notebook
1
star