debugview
Summary
debugview
is a simple debugging view for the ILLIXR system. By subscribing to several Switchboard endpoints, many important datapoints can be observed to help debug issues with the runtime. The debug view shows the current calculated SLAM pose and the (optional) ground truth pose read from the ground truth dataset as 3D headset models drawn on a backdrop scene. In addition, camera and IMU data is also visible, with the stereoscopic onboard camera views shown in one of the windows. Various offsets can be applied to the generated poses to aid in viewing. Dear ImGUI is used for displaying data and providing an interactive interface.
Switchboard connection
debugview
subscribes to the slow-pose, which represents the latest pose published by the SLAM/IMU system.- In the future,
debugview
will also query for the most up-to-date predicted pose through an RPC-like query system. This is not currently in our release version; but is in development and will be added soon. The "fast pose" referenced in this plugin just samples theslow_pose
instead. debugview
also is synchronously dependent on theimu_cam
topic, as the stereoscopic camera views are displayed in the debug window. In ILLIXR, "synchronous dependencies" are implemented as scheduled "handlers" that are executed from a shared thread pool; this handler is executed every time a fresh "packet" is available from theimu_cam
topic. Given that this is a separate thread from the main graphics thread, thisimu_cam
packet must be saved/cached for later, when the grahpics thread renders the next frame. This is a good example to follow when writing your own multithreaded components that use both synchronous and asynchronous dependencies, and need to share information across dependency boundaries.
Notes
debugview
will be under heavy development in the near-term. Pull requests may or may not be accepted, due to the frequency of rapid internal changes.
Known Issues
Currently, the poses returned from the SLAM system have an incorrect initial rotation, as the poses are returned in an incorrect frame of reference. Thus, the headsets may appear to be tilted incorrectly; the button "calculate new orientation offset" will reset the orientation, such that the current orientation is considered the "neutral" orientation. In a future update, the correct frame of reference/transform matrix will be applied and the pose will accurately reflect the actual head position.
Contributions
Contributions are welcome; please raise an issue first, though, as many issues are known and may be a part of our existing internal backlog.