Starter Tasks
Starter Tasks for New Students Interested in Joining ILLIXR
Introduction
Research with ILLIXR requires proficiency in C++ and Linux. We designed a starter task to help you set up ILLIXR on your own machine and experiment with it.
Prerequisites
Task 0
Task 1
Set up ILLIXR on your machine using the native_vk profile.
The following documentation might be helpful. We recommend that you try to understand what each step does instead of just copy-and-pasting the commands:
Note:
- After cloning, checkout commit
60982daa051dacb97f382bfc76fad27f08ab876f
as we are currently releasing a new version and the master branch might break - To understand why we need to set the
LD_LIBRARY_PATH
environmental variable, refer to the man page here. - If you’re on Ubuntu, you additionally need the following packages
cmake
glslang-dev
libboost-all-dev
- Compiler of your choice
Task 2 (Optional)
In ILLIXR, plugins pass data around using what we call Switchboard, an event-driven messaging interface using shared memory. Documentation of Switchboard can be found here. In the Debug View window, the Onboard Camera View that displays the stereo camera feed is located on the bottom right as shown in the screenshot below. The camera feed is supplied by another plugin to a Switchboard topic, from which the Debug Window reads.
Task 3 (Extra Brownie Points)
As an XR runtime, ILLIXR needs to keep track of the user's head pose. In the native_vk profile that we are using, this is implemented with OpenVINS, a library for Visual Inertial Odometry (VIO). You might have noticed that OpenVINS also reads from the camera feed. Please research a bit into how VIO works on a high level using any resource you like.
Based on your understanding, will the Gaussian filter in Task 2 help, hurt, or have no effect on the accuracy of VIO? Modify the value of σ and compare the headset’s trajectory with and without the filter. How would you compare the trajectories? Does the accuracy get better or worse as σ increases? Can you offer an explanation?
Resources:
- Here's a blog post that offers an intuitive understanding of how VIO works
- SIFT is a keypoint extraction algorithm that VIO might use
- The ORB-SLAM paper. You are welcome to use an LLM to explain CV concepts such as the fundamental / essential matrices
Submission
Submit your results via this Google Form.
- Task 1: a screenshot of ILLIXR’s debug and eyebuffer window
- Task 2 (Optional): your code, a screenshot of ILLIXR’s debug window after the modification, and a brief write-up
-
Task 3 (Optional): a brief write-up and any code you would like to submit
Getting Help
new-students
channel in our Discord server if you have questions or need help with these tasks.