Adriano Dal PastroandClaude Opus 4.7 f6197488f9 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>
2026-05-06 17:05:52 +02:00

presa-mano

Microservizio Python (FastAPI) che orchestra:

  1. Calibrazione hand-eye (eye-to-hand) tra la Nuwa depth camera (montata in alto, a sinistra del robot) e la base del G1, usando un ArUco sul polso destro.
  2. Riconoscimento oggetto via YOLO server + point cloud Nuwa.
  3. Pianificazione presa: asse dell'oggetto (PCA) + posa polso per il G1.

Microservizi usati

Servizio URL (default) Scopo
Nuwa-HP60C http://localhost:8877 RGB, depth, point cloud, intrinsics
Marker-finder http://localhost:8082 Detection 2D ArUco (corners)
YOLO Server http://localhost:8879 Bbox oggetto da prendere
G1 API Server http://localhost:8765 Controllo polso/mano (dry-run se down)

Il servizio presa-mano espone GUI + API su http://localhost:8890.

Quick start

docker compose up -d presa-mano
# Apri http://localhost:8890

GUI

Tre tab:

  • Calibrazione: muovi il polso in varie pose, premi Acquisisci sample per ognuna, poi Risolvi. Salva data/calibration.yaml.
  • Grasp: rileva oggetto, visualizza bbox + asse, esegui (con toggle dry-run).
  • Movimento EE: lettura pose correnti, invio pose assolute/relative, apri/chiudi mano, emergency stop.

Configurazione

config.yaml contiene i default; l'API espone GET/PUT /api/config per override runtime (es. cambiare ID/size ArUco dalla GUI).

S
Description
No description provided
Readme
24 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 62.6%
JavaScript 27%
HTML 5.1%
CSS 4.8%
Shell 0.3%
Other 0.2%