illixr / illixr Goto Github PK
View Code? Open in Web Editor NEWILLIXR: Illinois Extended Reality Testbed
License: Other
ILLIXR: Illinois Extended Reality Testbed
License: Other
Requirements:
Consider:
Convert timewarp to use direct mode, using Monado compositor as reference.
A std::shared_mutex
permits EITHER n readers OR 1 writer.
std::shared_lock
. This permits parallel reads, since they don't conflict, but locks out all writers.std::unique_lock
. This locks out all other writers and all readers.metrics/eyes/left/{timestamp}
Can probably do this in GitHub actions.
static
.#pragma once
instead of header guard._m_field
and _p_method
or never.Rationale: full VI-SLAM system with loop closure. ORB-SLAM3 has maps that stay persistent across runs, and we will need an efficient mechanism in ILLIXR to store/retrieve them.
Makefile
.A workflow needs to run on branches that builds and pushes docker images to ghcr.io and runs the tests in ILLIXR.
Unlike EUROC, this would have RGB/depth data.
std::chrono::system_clock
; in others we use std::chrono::high_resolution_clock
. Which is better?Currently, ILLIXR timesout with 60 seconds. We need a way to configure this time or turn the timeout off. This should probably be set in the config yaml file for runner.py.
_m_
for private or never)pose_prediction
interface.feed_imu_cam
, push the last few IMU readings + relevant state into a topic called integrated_state
.integrated_state
in the pose prediction.ILLIXR/timewarp_gl
| Monado) to wake up right after vsync (known by ILLIXR/timewarp_gl
).xrWaitFrame
wait until next vsync period.offline_imu_cam
and groundtruth_slam
.xrLocateViews
queries pose in OpenXR apps.monado_integration
.Or explain why we shouldn't.
This currently complicates the ZED code (where the Camera thread has to send frames to the IMU thread, which pairs them and sends them on a Switchboard topic).
This currently simplifies OpenVINS (where we need to process the camera after the IMU).
clang-tidy
#include
Our record_logger
and the CPU timers in #209/#211 are good for computer-readable telemetry. However, we need an infrastructure for data intended to get to a user, such as warnings, error descriptions, and debugging messages.
Perhaps, we should use glog.
LOG_EVERY_N
.assert(thing && msg)
can be replaced with glog's CHECK(thing) << msg
.
CHECK(thing) << getErrorMessage(msg)
which would not work with a raw assert
.CHECK
is not suppressed by NDEBUG
, which has caused us bugs in the past (and pesky [[maybe_unused]]
annotations).
CHECK
with #ifndef NDEBUG
, as we do already in many places (e.g. common/record_logger.hpp
).catchsegv
. There's not a whole lot of benefit to switching over to glog for that.We use three different generators for our three different sub-sites. Google Analytics tracking codes have to be added to each sub-site.
Google Analytics will allows us to track user demographics (motivate translations), popularity over time (evaluate which marketing works), and which order users visit our pages (help lay out the documentation in a user-friendly way).
Main website
Doxygen site
mkdocs site
For most components, the best we can do is ensure it builds.
However, some components can also have tests make test
.
In the past, broken code (non-compiling) has been pushed to master, so automating this has real benefit.
ZED's CMakeLists.txt currently has an additional linkage step which requires us to manually add C++ flags and a fake main(). Need to clean this up.
pose_predict
to get the timestamp of the next (nearest after now()
) vsync.
export
every time).Print detailed message listing exactly what will be installed.
We need a logging library for human readable debugging/info. Probably want to use glog for this.
Recommended reading:
default_plugins.md
: Remove "TODOs"default_plugins.md
: Remove NVIDIA GPU info from audiowriting_your_plugin.md
: Doulble-check for correctness with the new build system.Can we support dynamic languages like Python?
Python is a bit of a special case, because the interpreter supports embedding into a larger process.
If user specifies both offline_imu_cam and ZED plugins, the system should fault. Currently, it might assign both feeds to the same switchboard topic, resulting in a spliced feed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.