Default Plugins
-
offline_imu_cam: Reads IMU data and images from files on disk, emulating a real sensor on the headset (feeds input measurements with timing similar to an actual IMU). -
ground_truth_slam: Reads the ground-truth from the same dataset to compare our output against (uses timing fromoffline_imu_cam). -
open_vins: Runs OpenVINS (upstream) on the input, and outputs a the headset's pose. In practice, this publishes a fairly slow pose, so pose prediction is required to infer a fast pose. We do not yet have pose prediction, so we sayopen_vinsalso publishes a fast pose. -
gldemo: Renders a static scene (into left and right eyebuffers) given the pose fromopen_vins. -
timewarp_gl: Asynchronous reprojection of the eyebuffers. -
debugview: Renders a frame for debug information. -
audio: TODO: this. By default this is disabled, since it requires an NVIDIA GPU. -
hologram: TODO: this. By default this is disabled, since it requires an NVIDIA GPU.
Below this point, we will use Switchboard terminology. Read the API documentation on switchboard for definitions.

-
In the above figure, rectangles are plugins, cylinders are topics (the graph is bipartitioned between these two gorups).
-
Solid arrows from plugins to topics represent publishing.
-
Solid arrows from topics to plugins represent synchronous reading. They take some action for every event which gets published on the topic.
-
Solid arrows from topics to plugins represent asynchronous reading. They need to know just the latest event on their topic.
-
Imagine the topic as a trough filing with events from its publisher, being drained by its synchronous readers (AKA subscribers), while asynchronous readres just skim from the top.
See Writing Your Plugin to extend ILLIXR.