feat(right_arm): perm assi cam->polso, precise=true default, verify_tag UI

Lavoro accumulato nella sessione 2026-05-21 prima del brainstorming
della tab Pose 3D:

- compute_delta_wrist generalizzato con cam_to_wrist_perm: la mappa
  cam->polso non e' solo sign-flip ma una permutazione (default
  identita' per backward compat). DeltaOversize ora espone X/Y/Z
  nella stringa d'errore. Test aggiornati.

- G1Client.wrist_absolute / wrist_relative: precise=True di default
  (era False). Stessa cosa per wrist_routes.AbsoluteReq Pydantic
  e per agent.tools move_wrist_*. Movimenti reali ora chiedono
  controllo accurato salvo override esplicito.

- Tab Braccio DX:
  - /verify_tag endpoint: snapshot wrist FK + tag id=1 dalla front
    camera. Per verifica relativa moveto vs marker (no calibrazione).
  - GUI: pannello "Verifica tag id=1" + campi camera_offset_wrist_mm.
  - markUserTouchedOnInput esteso a raOff/raSgn/raCamOff.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal PastroandClaude Opus 4.7 committed 2026-05-21 15:44:48 +02:00
1 parent 8d40ebaf89
commit 57954b5c8d
8 files changed
+238 -23

No files matched your search

+16
View File
@@ -415,6 +415,22 @@
<div id="raMoveResult" class="ra-result dim">— nessun move</div>
</div>
<!-- VERIFICA TAG (relativa) -->
<div class="ra-card ra-wide">
<h3>Verifica tag id=1 (relativa, no calibrazione)</h3>
<p class="ra-help">
Premi <em>Snapshot</em> con il polso fermo, muovi il polso, premi ancora.
Per ogni coppia consecutiva confronto ‖Δpolso‖ (FK) con ‖Δtag‖ (front camera).
Se combaciano (errore &lt; ~10%) FK e detection sono coerenti.
</p>
<div class="ra-row">
<button id="raVerifySnapBtn" type="button">Snapshot</button>
<button id="raVerifyResetBtn" type="button">Reset</button>
<span id="raVerifyCount" class="dim">0 snapshot</span>
</div>
<div id="raVerifyResult" class="ra-result dim">— nessuno snapshot</div>
</div>
<!-- HOME + CUSTOM -->
<div class="ra-row ra-wide-grid">
<div class="ra-card">