Pupil Capture, Player, and Service Release
We are happy to release v0.8
of the Pupil platform!
Jump to Downloads
Introduction of the IPC Backbone
To allow realtime interaction with other actors on the same machine and across machine boundaries we have completely rewritten the way Pupil exchanges data internally.
From now on all exchanged data (pupil data, control messages, log messages) flow through a message bus we call the IPC Backbone
. All messaging has been unified and is now sent using the ZMQ PUBSUB pattern. One of the greatest features of the IPC backbone is that it can be accessed from outside Pupil Capture and across the network. As an outside actor you can write to the IPC Backbone and subscribe to (parts of) the message stream.
Message Format
Messages are defined as multi-frame zmq messages. Some message topics we are using as of now are logging
, pupil
, gaze
, notify
, delayed_notify
. More info can be found here: Pupil-Interprocess-and-Network-Communication
Tapping into the IPC from outside
Any external actor (on the same box or remote) can now tap into the IPC Backbone and subscribe to all (or parts) of the message stream. It can also send messages that will be received by all subscribers in the app.
Deprecation of Pupil Server
Since this IPC Backbone is basically Pupil Server on steroids we have no need for it any more in Pupil Capture and it has been removed from the app.
This also means that the Pupil Server data format is deprecated. The IPC Backbone will give you the similar data. The only difference is that gaze, surface, and pupil data are no longer grouped. All pupil helper scripts have been updated accordingly.
Gaze Mapping
All gaze mappers have been restructured to handle temporal correlation of pupil data explicitly. Two base classes for mono and binocular mappers have been added.
Plugin API changes
Plugins will continue working as before. There are no plugin API changes except delayed notifications. See plugin.py
for details.
Plugin notifications are now published on the IPC Backbone. Note, that all notification subjects have changed!
More structure to Notification names
Notification subjects are grouped by categories category.command_or_statement
. Example: recording.should_stop
.
New Dependencies
We use msg_pack
for message serialization
pip install msgpack-python
New App: Pupil Service
We have added a third app to the Pupil project: Pupil Service
. It is like Pupil Capture except it does not have a world video feed or GUI.
It is intended for AR and VR eye tracking setups. Pupil Service is meant to run in the background and controlled via network commands only. The service process has no GUI.
The tools introduced in the HMD-eyes project are made to work with Pupil Service
and Pupil Capture
alike.
Bugfixes and Enhancements
- Tweak USB Camera bandwidth settings.
- Make eye window ROI interaction more intuitive.
- Use new marker design for screen marker calibration.
- Renamed
surfaces
event tosurface
. - Added 3d location data to surface events.
- Add jump to next fixation button in Pupil Player
- Added option to use inverted markers in realtime surface tracker.
We hope you find these new features useful and look forward to feedback!