sharpa_avatar: RAW/ROBOT joint names are published as joint_0..joint_21, so name-based consumers (incl. the sharpa_avatar example) read all zeros
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Start at src/plugins/sharpa_avatar/core/avatar_hand_tracking_plugin.cpp:593 and compare the published names with raw_joint_names and robot_joint_names in the pinned SDK configuration referenced by src/plugins/sharpa_avatar/install_avatar_sdk.sh. Read src/core/schema/fbs/joint_state.fbs, joint_state_source.py:111, and the example configuration at live_view.py:48-99. Done means RAW and ROBOT consumers receive the intended stable names or the plugin documentation and example consistently use positional names.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
With the pinned production Avatar SDK (avatar-sdk 1.7.3-17, production_version in
src/plugins/sharpa_avatar/install_avatar_sdk.sh), avatar_hand_plugin publishes RAW and ROBOT
JointStateOutput frames whose JointState.name values are joint_0 … joint_21. The plugin
forwards the SDK's per-DOF names verbatim
(src/plugins/sharpa_avatar/core/avatar_hand_tracking_plugin.cpp:593):
joint->name = i < hand.joint.name.size() ? hand.joint.name[i] : std::string{};
The schema defines JointState.name as a stable DOF name and the key consumers look joints up by
(src/core/schema/fbs/joint_state.fbs). The reference JointStateSource matches its configured
joint_names against the wire names and fills 0.0 for any name it cannot find
(src/python/isaaccapture/retargeting_engine/deviceio_source_nodes/joint_state_source.py:111).
The sharpa_avatar example configures its RAW/ROBOT JointStateSources with names "copied verbatim
from the pinned production SDK (avatar-sdk 1.7.3-17 share/sdk_config.json)": thumb_CMC_FE,
thumb_CMC_AA, … (examples/sharpa_avatar/python/isaaccapture_examples/sharpa_avatar/live_view.py:48-99,
used at :559). None of them match joint_<i>, so every RAW/ROBOT joint resolves to 0.0 without
any error.
To reproduce
- Install the pinned SDK (
install_avatar_sdk.sh) and build/install the plugin with
-DBUILD_PLUGIN_SHARPA_AVATAR=ON. - Start a
TeleopSessionthat launchesavatar_hand_pluginwith
--datasets=human,raw,robot,hapticand readsavatar_robot_leftwith aJointStateTracker. - Print
[j.name for j in frame.joints]for a received frame.
Expected behavior
Either the SDK/plugin publishes the DOF names from the SDK's sdk_config.json
(raw_joint_names / robot_joint_names), which the example and the schema assume, or the
plugin README/example state that RAW/ROBOT names are positional (joint_<i>) and consumers must
read them by index.
Observed behavior
- RAW and ROBOT names are
joint_0,joint_1, …,joint_21, in index order. - An application configuring
JointStateSourcewith the example's names received no usable
RAW/ROBOT values while the HUMAN hand stream was valid. We did not runlive_view.pyitself; it
uses the sameJointStateSourcemechanism and names. JointStateSourcezero-fills silently on a name mismatch, which makes this hard to notice.
Platforms
- Isaac Teleop Version: main (sharpa_avatar plugin.yaml version 1.1.0)
- Avatar SDK: avatar-sdk 1.7.3-17 (production)
- OS: Ubuntu 22.04
- Integrations: custom TeleopSession pipeline
- XR Device: N/A
- Additional Devices: Sharpa Avatar gloves
Additional context
Possible fixes: have the SDK fill Joint.name from its config, or keep a pinned RAW/ROBOT name
table in the plugin (as src/plugins/sharpa_avatar/AGENTS.md already requires for the
HUMAN→OpenXR table and the example's name snapshots) and publish those names.
- Lenguaje dominante
- Python
- Estrellas
- 393
- Forks
- 93
- Merge medio
- 2 d 5 h
- PR fusionados (30 d)
- 95
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NVIDIA/IsaacCapture
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
NVIDIA/IsaacCapture#910 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
NVIDIA/IsaacCapture#891 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
NVIDIA/IsaacCapture#1217 ·
Los mantenedores suelen responder en 1 día
-
Release Notes Draft: 1.5Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 20/100
NVIDIA/IsaacCapture#1214 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 50/100
NVIDIA/IsaacCapture#1181 ·
Los mantenedores suelen responder en 1 día
Todos los issues de NVIDIA/IsaacCapture
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
onyx-dot-app/onyx#16016 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
black --check exits 0 and prints All done when a multi file run is interruptedPosiblemente ocupada @jiteshgulati la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
Non-positive worker counts wait for results without starting workersPosiblemente ocupada @IlyaKhalafi la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día