feat(sharpa): add Sharpa Avatar glove input and haptic plugin - #1150
lotusl-code merged 17 commits into
Conversation
|
📝 Docs preview is not auto-deployed for fork PRs. A maintainer with write access to |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: NVIDIA/IsaacCapture/.coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
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>
387807e to
87abb0c
Compare
|
Prior PR: #1124 |
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.