Task #233
Updated by Sanghoon Lee 19 days ago
The AH sidecar design addresses higher taxel density and model-side mapping complexity compared to 2F.
Goals:
* keep a stable sidecar service/topic contract while adding AH mapping/pattern semantics
* decouple bridge mode switching from optional viz-node mode service availability
* preserve compatibility with std_xela_taxel_viz_ahv4 namespace-local TF conventions
This enables incremental AH web visualization improvements without forcing changes in tactile producer or std-viz packages.
----------------
!clipboard-202603152238-qaxz6.png!
-----------------------
h1. xela_taxel_sidecar_ah
h2. 1. Overview and design objective
The AH sidecar design addresses higher taxel density and model-side mapping complexity compared to 2F.
Design intent:
* keep a stable sidecar service/topic contract while adding AH mapping/pattern semantics
* decouple bridge mode switching from optional viz-node mode service availability
* preserve compatibility with @std_xela_taxel_viz_ahv4@ namespace-local TF conventions
This enables incremental AH web visualization improvements without forcing changes in tactile producer or std-viz packages.
!clipboard-202603152236-eropm.png!
h2. 2. Bridge design
h3. 2.1 Mapping model
* mapping file provides flat index and frame-name contract
* pattern file provides 2D grid projection
* hand-side auto resolution switches prefix conversion and default pattern
h3. 2.2 Signal model
* force-first rendering with taxel fallback
* baseline/deadband for force and taxel paths
* optional group/module filtering (@show_thumb@, @show_module_XX@)
h3. 2.3 URDF point model
* enabled by @emit_urdf_points@
* TF lookup with cache (@tf_cache_ttl_sec@)
* optional frozen coordinates (@freeze_urdf_positions@)
h2. 3. Mode manager design
* service endpoint: @/xela_viz_mode_manager/set_mode@
* always updates bridge params
* viz service call controlled by:
** @use_viz_set_mode@
** @require_viz_set_mode_service@
This avoids hard failure when target viz node has no @set_mode@.
h2. 4. Launch design
@xela_taxel_sidecar_cpp.launch.py@:
* resolves hand/mapping/pattern at launch time (@OpaqueFunction@)
* configures transport + mode manager options
* supports namespace-local TF remap
@xela_taxel_sidecar.launch.py@: thin wrapper to cpp launch.
h2. 5. Risks
* wrong mapping/pattern combination for selected model
* optional viz service disabled while user expects viz-side mode switch
* TF frame mismatch in URDF mode
h2. 6. Validation
* launch left/right models
* verify output topic and web updates
* verify mode toggling with @use_viz_set_mode@ off/on
* verify URDF points in bridge payload
-----------------
!clipboard-202603152224-wfj0n.png!
------------
{{video("ur5e_xahr2c_config3_2_webUI.mp4",800,400)}}
------------