refactor: rimuove feature Auto-Calibrazione (tab + endpoint + job runner)

Elimina il flusso di acquisizione griglia automatica: tab GUI, modulo
autocal3d.js, AutoRunner/auto_job, e gli endpoint /auto/* + /auto_grid.
La calibrazione resta operabile via sample manuali + /solve.

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-11 11:03:23 +02:00
1 parent 4981306062
commit 0c211630cc
8 files changed
+3 -1241

No files matched your search

-84
View File
@@ -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="autocal">Auto-Calibrazione</button>
<button class="tab" data-tab="grasp">TrovaUtensile</button>
<button class="tab" data-tab="servo">Servo Visuale</button>
<button class="tab" data-tab="view3d">Vista 3D</button>
@@ -175,88 +174,6 @@
</div>
</section>
<section class="panel" id="tab-autocal">
<div class="diag3d-toolbar">
<button id="acFitBtn">Auto-fit</button>
<button id="acResetViewBtn">Reset vista</button>
<label class="inline"><input type="checkbox" id="acShowTriads" checked /> Triad sui waypoint</label>
<span class="post-health" id="autocalStatus">—</span>
</div>
<div class="grid-2 diag3d-layout">
<div>
<div class="canvas-wrap">
<canvas id="autocalCanvas" width="720" height="560"></canvas>
</div>
<div class="marker-info">drag = ruota · wheel = zoom · shift+drag = pan</div>
<div class="diag3d-legend">
<div><span class="legend-sw" style="background:#aaaaaa;border-radius:50%"></span> raggiungibile</div>
<div><span class="legend-sw" style="background:var(--danger);border-radius:50%"></span> non raggiungibile (skip)</div>
<div><span class="legend-sw" style="background:var(--accent);border-radius:50%"></span> corrente</div>
<div><span class="legend-sw" style="background:var(--ok);border-radius:50%"></span> campione acquisito</div>
<div><span class="legend-sw" style="background:var(--warn);border-radius:50%"></span> fallito</div>
</div>
</div>
<div>
<h2>Parametri griglia</h2>
<div class="ctrl-block">
<div class="info-box">
Parti dalla posizione corrente del polso (letta dal G1). La griglia copre ±delta/2 su ciascun asse. Le divisioni sono i punti per asse: 3 significa [start-Δ/2, start, start+Δ/2].
</div>
<div class="kv compact">
<label>Δx (mm) <input type="number" id="acDx" value="100" step="10" min="0" max="500"></label>
<label>Δy (mm) <input type="number" id="acDy" value="100" step="10" min="0" max="500"></label>
<label>Δz (mm) <input type="number" id="acDz" value="80" step="10" min="0" max="500"></label>
<label title="Spostamento del centro griglia rispetto alla posa polso attuale">offset x (mm) <input type="number" id="acOx" value="0" step="10" min="-500" max="500"></label>
<label title="Spostamento del centro griglia rispetto alla posa polso attuale">offset y (mm) <input type="number" id="acOy" value="0" step="10" min="-500" max="500"></label>
<label title="Spostamento del centro griglia rispetto alla posa polso attuale">offset z (mm) <input type="number" id="acOz" value="0" step="10" min="-500" max="500"></label>
<label>n_x <input type="number" id="acNx" value="3" step="1" min="1" max="7"></label>
<label>n_y <input type="number" id="acNy" value="3" step="1" min="1" max="7"></label>
<label>n_z <input type="number" id="acNz" value="3" step="1" min="1" max="7"></label>
<label>rot polso (°) <input type="number" id="acRotDeg" value="10" step="1" min="0" max="45"></label>
<label>min z (m) <input type="number" id="acMinZ" value="0.05" step="0.01"></label>
<label>settle (s) <input type="number" id="acSettle" value="1.0" step="0.1" min="0.1" max="5"></label>
<label>side
<select id="acSide">
<option value="">(config)</option>
<option value="right">right</option>
<option value="left">left</option>
</select>
</label>
<label class="inline"><input type="checkbox" id="acAutoSolve" checked /> auto-solve finale</label>
<label class="inline"><input type="checkbox" id="acDryRun" /> dry-run (preview, nessun moto reale)</label>
</div>
<div class="actions">
<button id="acPreviewBtn" class="primary">Calcola griglia</button>
<button id="acVerifyBtn" title="muove a ogni punto senza acquisire — testa raggiungibilità reale">Verifica reale</button>
<button id="acStartBtn" disabled>▶ Start calibrazione</button>
<button id="acStopBtn" class="danger" disabled>■ Stop + torna a home</button>
<button id="acSolveBtn">Calcola matrice</button>
<button id="acClearBtn" class="danger">Rimuovi sample</button>
</div>
<div class="kv compact">
<label>Ordine di visita
<select id="acOrder">
<option value="serpentine" selected>serpentina (distanza min.)</option>
<option value="nested">nested (xyz semplice)</option>
</select>
</label>
</div>
</div>
<h2>Stato</h2>
<div id="autocalStats" class="ctrl-block">
<div class="dim">nessuna griglia calcolata</div>
</div>
<h2>Tentativi per punto</h2>
<canvas id="autocalChart" width="520" height="140" class="autocal-chart"></canvas>
<h2>Risultato calibrazione</h2>
<pre id="autocalResult" class="log small">—</pre>
</div>
</div>
</section>
<!-- ============================== TROVA UTENSILE ============================== -->
<section class="panel" id="tab-grasp">
<div class="grid-2">
@@ -502,7 +419,6 @@
}
</script>
<script src="/static/app.js"></script>
<script type="module" src="/static/autocal3d.js"></script>
<script type="module" src="/static/servo.js"></script>
</body>
</html>