Skip to content

Release 0.2.0

Choose a tag to compare

@jiwenc-nv jiwenc-nv released this 07 Jan 17:47
Immutable release. Only release title and notes can be modified.

Overview

This release introduces new features including a device plugin system, data schemas
with FlatBuffer serialization, and major improvements to the hand/head tracking systems. The
codebase has been modernized with C++20 support, improved Python packaging, and better code
quality through clang-format enforcement.


🚀 New Features

Plugin Manager System

  • Plugin Manager API - New plugin architecture for discovering and managing external plugin
    binaries with YAML-based metadata configuration
  • Plugin health monitoring - Added check_health API that throws PluginCrashException if
    the plugin process crashes
  • Manus Glove Plugin - Full integration with Manus SDK for glove-based hand tracking with
    controller pose fusion
  • Controller Synthetic Hands Plugin - Generate synthetic hand poses from VR controllers

Schema & Data Serialization

  • FlatBuffer-based schemas for efficient data serialization:
    • pose.fbs - Pose representation with position and quaternion
    • tensor.fbs - Tensor message for multi-dimensional data
    • hand.fbs - Hand pose schema with joint data
    • head.fbs - Head tracking schema
  • Python bindings for all schemas with comprehensive unit tests
  • C++ Object API for working with schema data

Device I/O Module

  • Renamed and reorganized xrio module to deviceio for clarity
  • Controller Tracker - New tracking support for VR controllers
  • Head Tracker - Dedicated head pose tracking component
  • Integrated FlatBuffer schemas for head and hand pose data

Examples & Documentation

  • LeRobot Example - New example for robot learning data recording and visualization
  • Camera Streaming Example - Standalone GStreamer-based camera streaming with OAK-D support
    (host/robot Docker configs)
  • Improved README with better setup and build instructions

🔧 Improvements

Build System & Dependencies

  • Switched from Git submodules to CMake FetchContent for dependency management
  • Upgraded to C++20 to enable designated initializers
  • clang-format enforcement in CI for consistent code style
  • Improved Python packaging:
    • Locked Python version in pyproject.toml
    • Explicit Python version and ABI in wheel filenames
    • Auto-generated .pyi stub files for Python bindings
  • Use mainline yaml-cpp instead of fork

Code Quality

  • RAII improvements - Replaced OpenXRHandle with std::unique_ptr
  • RAII for XR core functions - Better resource management
  • Namespace reorganization - Renamed from oxr to core
  • Extensive refactoring of hand tracker and session APIs

CI/CD

  • Added clang-format checks to Linux builds
  • CI optimizations to avoid exceeding usage limits
  • Fixed Python test paths in Ubuntu build workflow

CloudXR Integration

  • Enabled push device support in CloudXR container
  • Updated web app and WSS proxy Dockerfiles
  • Run nginx with non-root user for security
  • Fixed HAProxy configuration permissions

⚠️ Breaking Changes

  • xrio module renamed to deviceio - update import paths accordingly
  • TeleopSession API replaced with DeviceIOSession
  • Namespace changed from oxr:: to core:: in C++ code

🙏 Contributors

Thanks to all contributors who made this release possible!