Skip to content

Add Orbbec EGO capture, recording, and replay support - #1252

Open
obzhimin wants to merge 6 commits into
NVIDIA:release/1.6.xfrom
orbbec:feature/Orbbec-Ego-stereo-camera
Open

obzhimin wants to merge 6 commits into
NVIDIA:release/1.6.xfrom
orbbec:feature/Orbbec-Ego-stereo-camera

Conversation

@obzhimin

Copy link
Copy Markdown

Description

This PR replaces #1251 after the source branch was renamed. The submitted code and head commit are unchanged.

Add opt-in Orbbec EGO support for stereo camera capture and dataset recording
through IsaacCapture's existing DeviceIO, tracker, and MCAP interfaces.

This PR includes:

  • An Orbbec EGO camera plugin supporting stereo video, IMU, and optional audio.
  • Schemas and bindings for frame metadata, sensor samples, calibration,
    device health, and diagnostics.
  • Live trackers, local MCAP recording, optional embedded media, and
    structured-record replay.
  • SDK-free MCAP merge and media export tools.
  • Python APIs for offline sample-time association, time-model calibration,
    and synchronization audits.
  • EGO stereo preview integration in camera_viz.
  • Regression tests, configuration examples, and usage documentation.

The camera plugin is disabled by default
(BUILD_PLUGIN_EGO_CAMERA=OFF) and requires an external OrbbecSDK v2 package
when enabled. BUILD_EGO_MEDIA_TOOLS enables the SDK-free tools independently.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Testing

Local software validation was performed on Linux x86_64 with Python 3.11
and Release builds, with BUILD_PLUGIN_EGO_CAMERA and BUILD_TESTING enabled.
Both the native EGO configuration (BUILD_VIZ=OFF) and the VIZ configuration
with examples enabled (BUILD_VIZ=ON) were tested.

Native EGO and VIZ full builds, Python wheel packaging, and regression tests
passed. clang-format-14 checks, the documentation build, and full pre-commit
also passed. Final regression results include targeted reruns after repairing
the local test environments.

Representative build and test commands, using the local build directories:

cmake --build build/ego-orin-x86-20261012
cmake --build build/ego-preview-20261009
ctest --test-dir build/ego-orin-x86-20261012 --output-on-failure --parallel 2
ctest --test-dir build/ego-preview-20261009 --output-on-failure --parallel 2
SKIP=check-copyright-year pre-commit run --all-files

NVIDIA CI results will be checked after this PR is opened.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the linter and formatter with SKIP=check-copyright-year pre-commit run --all-files
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix/feature works (or explained why not)
  • I have signed off all my commits (git commit -s) per the DCO

Add the EGO plugin with stereo camera, IMU, audio, calibration and device-state
capture, structured MCAP recording, embedded media export and replay trackers.

Integrate stereo GPU preview into camera_viz and add schema, Python recording
APIs, software tests and CI coverage. Document plugin workflows while keeping
shared example guides concise. Exclude local logs, editor files, SDK archives
and acceptance records from version control.

Validation: full pre-commit checks, clang-format-14, Sphinx documentation build
and EGO component installation passed. Preserve recording.mp4 via Git LFS.

Signed-off-by: obzhimin <zhimin@orbbec.com>
Preserve EGO and upstream tracker registrations while merging the latest release branch.

Signed-off-by: obzhimin <zhimin@orbbec.com>
Publish EGO availability through the existing NVIDIA monitoring interfaces
and add optional versioned diagnostic recording and sensor metadata.
Add validated capture time alignment, offline synchronization analysis and
calibration helpers, plus MCAP replay and merge validation.
Improve EGO preview GPU selection, startup failure cleanup and configuration;
regroup the EGO MCAP targets and document the current device workflow.

BREAKING CHANGE: old EGO DeviceState v1 diagnostic recordings are not
supported. The diagnostic schema golden is intentionally refreshed;
the official monitoring schema v1 remains separate.

Signed-off-by: obzhimin <zhimin@orbbec.com>
Integrate upstream SOMA schemas, logging updates, CloudXR fixes, and
OpenXR session lifecycle changes while preserving the EGO integration.
Restore AGENTS.md files and test_openxr_session.cpp to NVIDIA versions.

Validate the EGO-enabled build, installation, native/Python bindings,
core and EGO regression tests, and preview/record-replay regressions.

Signed-off-by: obzhimin <zhimin@orbbec.com>
Signed-off-by: obzhimin <zhimin@orbbec.com>
Integrate the upstream SOMA HandSide schemas and consumers while preserving
the Orbbec EGO integration.

Use C++20 for the EGO preview extension, annotate the public EGO sync APIs,
and adjust the Televiz heading for the pre-commit conflict check.

Validation: native EGO and VIZ full builds and wheels; 354 native EGO and
538 VIZ CTest entries passed after environment repairs and supplemental
checks. CUDA interop, pinned SOMA model tests, and Wuji mapping checks also
passed, along with clang-format-14, documentation, and full pre-commit.

Signed-off-by: obzhimin <zhimin@orbbec.com>
@github-actions

Copy link
Copy Markdown
Contributor

📝 Docs preview is not auto-deployed for fork PRs.

A maintainer with write access to NVIDIA/IsaacCapture can deploy a preview by
commenting /preview-docs on this PR. Once deployed, the preview
will live at:

https://nvidia.github.io/IsaacCapture/preview/pr-1252/

@coderabbitai

coderabbitai Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/IsaacCapture/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: e2ad994d-591f-46f3-aa0d-801d9652d974

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@ivany-nv ivany-nv self-assigned this Oct 13, 2026
@ivany-nv
ivany-nv self-requested a review October 13, 2026 18:16
@ivany-nv

Copy link
Copy Markdown
Contributor

/preview-docs

@github-actions

Copy link
Copy Markdown
Contributor

✅ Preview deployed: https://NVIDIA.github.io/IsaacCapture/preview/pr-1252/

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants