Skip to content

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 from offline_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 say open_vins also publishes a fast pose.

  • gldemo: Renders a static scene (into left and right eyebuffers) given the pose from open_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.

ILLIXR dataflow graph generated by dataflow.dot

  • 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.