We are happy to release
v0.8 of the Pupil platform!
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.
Messages are defined as multi-frame zmq messages. Some message topics we are using as of now are
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.
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
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.
- 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!