Skip to content

feat(sharpa): add Sharpa Avatar glove input and haptic plugin - #1150

Merged
lotusl-code merged 17 commits into
NVIDIA:release/1.5.xfrom
zihanjiang321:feature/pr1124-review-fixes
Sep 30, 2026
Merged

lotusl-code merged 17 commits into
NVIDIA:release/1.5.xfrom
zihanjiang321:feature/pr1124-review-fixes

Conversation

@zihanjiang321

Copy link
Copy Markdown

Add an optional out-of-process plugin that connects Sharpa Avatar gloves to Isaac Teleop through the Avatar SDK.
Publish Avatar HUMAN hand tracking as OpenXR 26-joint poses for the left and right hands, and expose the RAW and ROBOT 22-DoF joint streams through the existing DeviceIO interfaces. Consume per-finger haptic commands and stop stale commands after a short timeout.
Reuse the existing wrist-pose source and push-device pipeline without introducing a new schema. Support independent left and right glove connection, device reconnection, and operation when only one glove is available.
Add gated CMake integration, a pinned production Avatar SDK installer, host udev setup, plugin configuration, and usage documentation. Include a TeleopSession example with a browser-based Viser hand visualization and pinch-triggered haptic feedback.

@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/IsaacTeleop/preview/pr-1150/

@coderabbitai

coderabbitai Bot commented Sep 29, 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: 46ecced7-3b1e-43b5-ac9c-342a45ee81e4

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

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

zihanjiang321 and others added 17 commits September 30, 2026 07:34
Package the glove plugin under src/plugins/sharpa_avatar like Wuji, stage
the SDK at build time, and ship a TeleopSession example with a browser
hand view and pinch haptic.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Ticket NVIDIA#9 and review asked for sharpa_avatar_sample.py under
src/plugins/sharpa_avatar/tools, not examples/.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
Stop vendoring the SDK into the plugin, wrap the process-wide singleton in RAII, and install only Isaac-owned artifacts from /opt/avatar-sdk.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…ept.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Production packages ship libavatar_sdk.so. Tighten find_library NAMES and install.sh's library check to accept only that, so CMake and the installer stay consistent and no longer tolerate a wrapper-only SDK.

Signed-off-by: shuxinguo <xinguo.shu@sharpa.com>
Install the exact avatar-sdk version instead of latest, add --allow-downgrades so re-runs converge on the pin, assert the installed package version via dpkg-query, and sync the README wording.

Signed-off-by: shuxinguo <xinguo.shu@sharpa.com>
Replace the manual try/catch in AvatarSdkSession's constructor with a SdkGuardToken member acquired before SDK init and released after teardown, so the ownership flag cannot leak when initialize() throws.

Signed-off-by: shuxinguo <xinguo.shu@sharpa.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
- install_avatar_sdk.sh gains --check; CMake, install.sh, and README stop
  parsing or repeating production_version.
- SDK root precedence everywhere: -DAVATAR_SDK_ROOT > $AVATAR_SDK_ROOT >
  /opt/avatar-sdk. install.sh passes the root through, plugin.yaml is
  generated from plugin.yaml.in, printer/sample default to the env var.
- avatar_plugin_core usage requirements fixed (deviceio, oxr, plugin_utils,
  pusherio now PUBLIC); isaac::avatar_plugin alias used by app/tools;
  redundant RPATH entries and the duplicate nlohmann_json declaration removed.
- Runtime joint-name reads from sdk_config.json replaced by in-repo snapshots
  pinned to avatar-sdk 1.7.3-17 (HUMAN in core, RAW/ROBOT in the sample);
  the sample only forwards --sdk-config to the plugin.
- Tick the completed PR NVIDIA#10 checklist entries in PR10_OWNER_TODO.md.

Signed-off-by: chenshiyu <shiyu.chen@sharpa.com>
NVIDIA review asked the plugin tree to stay C++-only: the TeleopSession
visualization lives at examples/sharpa_avatar, and avatar_hand_tracker_printer
is removed. Also inject HUMAN without a headset wrist, and use the HTTPS APT host.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
The docs site now describes the gloves, data flow, install, and
troubleshooting instead of only linking the plugin README.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the unused tracker DTOs and getters left behind after the SDK-only printer was deleted. Keep the existing shared wrist-source API and adapt the Avatar side enum only at the plugin boundary, so plugin_utils and Wuji remain identical to main.

Drop the internal owner follow-up file and revert the unrelated Televiz title workaround. Record the plugin boundary rule locally to prevent future review fixes from spilling into shared modules.

Signed-off-by: zihan <zihan.jiang@sharpa.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
Signed-off-by: zihan <zihan.jiang@sharpa.com>
@zihanjiang321
zihanjiang321 force-pushed the feature/pr1124-review-fixes branch from 387807e to 87abb0c Compare September 30, 2026 00:09
@lotusl-code
lotusl-code merged commit b991af1 into NVIDIA:release/1.5.x Sep 30, 2026
31 of 32 checks passed
@lotusl-code

Copy link
Copy Markdown
Contributor

Prior PR: #1124

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.

3 participants