refactor: cleanup GUI + AI movement controls + depth-correction polish
GUI: - Rimossa tab "Calibrazione" (sostituita dalla calibrazione via AI con saved task `calibrazione_dx`/`calibrazione_sx`, oppure dalla tab "Auto- Calibrazione" per il flusso a griglia automatica). Backend calibration_routes invariato — tool AI continuano a usarlo. AI tools: - Esposto `precise` su `move_wrist_absolute` e `move_wrist_relative` (forwarded al campo omonimo del bridge robot, controlla la modalità di controllo: false=veloce/tolleranza ampia, true=lento/posa accurata). - Aggiunto `arms_go_neutral` come tool dedicato (POST /arms/go_neutral del bridge): usato dall'AI per "torna a casa / posizione di riposo". Niente side, agisce su entrambe le braccia. - Fix `device_status`: ora wrappa la risposta con `_ok(...)` così il dispatcher la classifica correttamente. Prompt: - System prompt aggiornato: l'AI ora passa SEMPRE `precise=true` di default sui movimenti, escluso quando l'utente chiede esplicitamente velocità. Sezione dedicata su come tornare a riposo (arms_go_neutral). - Documentato che `measured_side_mm` (ritornato da get_marker_3d) viene distorto dalla correzione affine sul depth — non usarlo per validare la size_mm dichiarata. Saved tasks: - `calibrazione_dx` e `calibrazione_sx` ora partono e finiscono con `arms_go_neutral`, cancellano i sample preesistenti per quel lato, e acquisiscono ≥10 sample con `precise=true` su una griglia ±80mm + ±15° di rotazione attorno alla posa home. Config: - Marker corrente: id=10, size=40mm (cambiato il tag fisico sul polso). - Addendum prompt allentato: niente più "max 3 righe", ora chiede di riportare il risultato di OGNI tool chiamato. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
ac573505b7
commit
f6197488f9
6 files changed
+80
-344
No files matched your search
@@ -13,7 +13,6 @@
|
||||
<button class="tab active" data-tab="home">Home</button>
|
||||
<button class="tab" data-tab="agent">Assistente AI</button>
|
||||
<button class="tab" data-tab="ai-settings">Impostazioni AI</button>
|
||||
<button class="tab" data-tab="calibration">Calibrazione</button>
|
||||
<button class="tab" data-tab="autocal">Auto-Calibrazione</button>
|
||||
<button class="tab" data-tab="grasp">TrovaUtensile</button>
|
||||
<button class="tab" data-tab="servo">Servo Visuale</button>
|
||||
@@ -176,76 +175,6 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ============================== CALIBRAZIONE ============================== -->
|
||||
<section class="panel" id="tab-calibration">
|
||||
<div class="grid-2">
|
||||
<div>
|
||||
<h2>Vista camera</h2>
|
||||
<div class="canvas-wrap">
|
||||
<canvas id="calibCanvas" width="640" height="480"></canvas>
|
||||
</div>
|
||||
<div class="kv">
|
||||
<label>ArUco ID <input type="number" id="arucoId" value="10" min="0" /></label>
|
||||
<label>Size (mm) <input type="number" id="arucoSize" value="40" step="1" /></label>
|
||||
<label>Side
|
||||
<select id="side"><option value="right" selected>right</option><option value="left">left</option></select>
|
||||
</label>
|
||||
<label>Metodo
|
||||
<select id="method">
|
||||
<option value="TSAI" selected>TSAI</option>
|
||||
<option value="PARK">PARK</option>
|
||||
<option value="HORAUD">HORAUD</option>
|
||||
<option value="ANDREFF">ANDREFF</option>
|
||||
<option value="DANIILIDIS">DANIILIDIS</option>
|
||||
</select>
|
||||
</label>
|
||||
<label class="inline"><input type="checkbox" id="livePreview" checked /> Preview marker</label>
|
||||
<button id="saveConfigBtn">Salva configurazione</button>
|
||||
</div>
|
||||
<div class="marker-info" id="markerInfo">marker: —</div>
|
||||
</div>
|
||||
<div>
|
||||
<h2>Sample e matrice</h2>
|
||||
<div class="actions">
|
||||
<button id="sampleBtn" class="primary">Memorizza posizione (sample)</button>
|
||||
<button id="solveBtn" class="primary">Calcola matrice</button>
|
||||
<button id="clearSamplesBtn" class="danger">Rimuovi tutti i sample</button>
|
||||
</div>
|
||||
<div class="samples">
|
||||
<div class="samples-head">
|
||||
<strong>Sample acquisiti</strong>
|
||||
<span id="sampleCount">0</span>
|
||||
</div>
|
||||
<ul id="sampleList"></ul>
|
||||
</div>
|
||||
<div class="result">
|
||||
<strong>T<sub>base ← camera</sub></strong>
|
||||
<pre id="calibMatrix">(non ancora calcolata)</pre>
|
||||
<div id="calibMeta"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<details class="auto-grid">
|
||||
<summary>Auto-grid (future update) — 3×3 × 3 altezze</summary>
|
||||
<div class="kv">
|
||||
<label>Start X (m) <input type="number" id="gridX0" value="0.25" step="0.01" /></label>
|
||||
<label>Start Y (m) <input type="number" id="gridY0" value="0.0" step="0.01" /></label>
|
||||
<label>Start Z (m) <input type="number" id="gridZ0" value="0.15" step="0.01" /></label>
|
||||
<label>Step X (m) <input type="number" id="gridDX" value="0.05" step="0.005" /></label>
|
||||
<label>Step Y (m) <input type="number" id="gridDY" value="0.05" step="0.005" /></label>
|
||||
<label>Step Z (m) <input type="number" id="gridDZ" value="0.05" step="0.005" /></label>
|
||||
<label>min Z tavolo (m) <input type="number" id="gridMinZ" value="0.10" step="0.005" /></label>
|
||||
<label>Settle (s) <input type="number" id="gridSettle" value="1.0" step="0.1" /></label>
|
||||
<label>Quat xyzw <input type="text" id="gridQuat" value="0,0,0,1" /></label>
|
||||
<label class="inline"><input type="checkbox" id="gridDryRun" checked /> Dry-run (consigliato finché G1 down)</label>
|
||||
<button id="runGridBtn">Esegui auto-grid</button>
|
||||
</div>
|
||||
<pre id="gridLog" class="log"></pre>
|
||||
</details>
|
||||
</section>
|
||||
|
||||
<!-- ============================== AUTO-CALIBRAZIONE ============================== -->
|
||||
<section class="panel" id="tab-autocal">
|
||||
<div class="diag3d-toolbar">
|
||||
<button id="acFitBtn">Auto-fit</button>
|
||||
|
||||
Reference in new issue
Block a user