Il problema: riconoscere non significa raggiungere
Immaginiamo una pinza che deve prendere un piccolo componente su un tavolo. La telecamera lo riconosce, il software disegna il riquadro giusto, ma le dita scendono alcuni millimetri a lato. È naturale sospettare il modello di visione. Potrebbe invece essere sbagliata la traduzione fra due modi di descrivere lo spazio: quello della telecamera e quello del robot. Questo articolo spiega come un errore angolare quasi invisibile possa diventare un errore di presa evidente, e come distinguere quel problema dal rumore nelle immagini.
La domanda precisa è questa: quanto cambia la posizione comandata quando la relazione geometrica camera-robot è leggermente sbagliata? Costruiremo prima un esempio piano, poi una stima dell’incertezza. Il risultato principale è comprensibile senza algebra matriciale: lo stesso errore di orientamento pesa di più sui punti lontani dall’origine della trasformazione. A mezzo metro, mezzo grado produce circa 4,36 mm di scarto. Sono calcoli didattici riproducibili, non misure su un robot reale né risultati industriali EL-AI.
Due mappe dello stesso tavolo
Un riferimento è un’origine con direzioni e unità di misura. Dire «40 centimetri a destra» non basta se non sappiamo a destra di che cosa. Chiamiamo p_C le coordinate del punto nel riferimento della camera e p_B quelle nel riferimento della base robot. Il punto fisico resta fermo: cambia soltanto la sua descrizione. Assumiamo di conoscere già una posizione metrica sul piano. Un riquadro in pixel, da solo, non fornisce quella posizione: occorre profondità oppure un piano noto e una geometria di proiezione calibrata.
Per passare da una mappa all’altra servono una rotazione R, che allinea le direzioni, e una traslazione t, che collega le origini. La relazione p_B = R p_C + t dice quindi: orienta il vettore misurato dalla camera e poi aggiungi lo spostamento della sua origine rispetto alla base. La documentazione Modern Robotics spiega questa distinzione fra descrivere un punto in un altro riferimento e spostare davvero un oggetto. Confondere le due operazioni, o usare la trasformazione inversa, può generare errori molto maggiori di quelli studiati qui.
Qui θ è l’angolo fra gli assi dei due riferimenti; nei calcoli trigonometrici lo esprimiamo in radianti. R non ha unità, p_C e t sono in metri. Per rendere leggibile l’esempio scegliamo θ = 0 e t = (0,20; 0,10) m: i riferimenti sono orientati allo stesso modo ma hanno origini diverse. Il bersaglio p_C = (0,40; 0,30) m diventa p_B = (0,60; 0,40) m. La distanza del punto dall’origine della camera è 0,50 m, come nel triangolo rettangolo 3–4–5.
Mezzo grado diventa millimetri
Supponiamo adesso che il software usi per errore θ = 0,5° invece di zero, mantenendo corretta la traslazione. Il punto viene ruotato di poco attorno all’origine della camera. Pensiamo alla punta di una lancetta: a parità di angolo, una lancetta lunga percorre più strada di una corta. L’analogia riguarda soltanto la geometria; non stiamo modellando inerzia o velocità del robot. Sottrarre posizione corretta e posizione calcolata consente di misurare lo scarto senza simulare il movimento.
Il simbolo I indica la trasformazione che lascia il punto invariato; le doppie barre indicano la lunghezza del vettore errore. La prima componente significa che il bersaglio stimato è circa 2,63 mm più a sinistra, la seconda circa 3,48 mm più in alto nel piano scelto. Non sommiamo questi due numeri: sono spostamenti perpendicolari e la distanza si calcola con Pitagora. Abbiamo già una conseguenza pratica: un riconoscimento visivo perfetto non compenserebbe questa relazione geometrica sbagliata.
Possiamo generalizzare senza fare un elenco di casi. Due raggi di lunghezza r separati dall’angolo δ formano un triangolo isoscele; il segmento che unisce le punte è la corda. Dividendo il triangolo a metà otteniamo r·sin(|δ|/2) per ciascuna metà della corda. Il raddoppio fornisce la distanza esatta. Per angoli piccoli, il seno di un angolo in radianti è quasi uguale all’angolo stesso: nasce così la regola semplice «distanza per errore angolare».
| Errore angolare (°) | Scarto esatto a 0,5 m (mm) | Approssimazione (mm) |
|---|---|---|
| 0.1 | 0.872665 | 0.872665 |
| 0.5 | 4.363309 | 4.363323 |
| 1 | 8.726535 | 8.726646 |
| 5 | 43.619387 | 43.633231 |
La tabella confronta due calcoli dello stesso esperimento, non due robot. Anche a cinque gradi la differenza fra corda e approssimazione resta piccola in questo caso, ma l’errore di posizione è ormai enorme rispetto a molti componenti. La precisione della formula approssimata e l’accettabilità del processo sono questioni diverse. Inoltre r non è la distanza dalla base del robot, né la lunghezza del braccio: è la distanza dall’origine rispetto alla quale stiamo perturbando la rotazione.

Gli errori hanno direzione
Se anche la traslazione è sbagliata, gli effetti si combinano come vettori. Aggiungiamo 2 mm lungo l’asse verticale all’esempio di mezzo grado: il risultato è circa 6,079 mm, non 4,363 + 2 = 6,363 mm. Un errore opposto potrebbe ridurre lo scarto in quel punto e creare l’illusione di una buona calibrazione. Spostando il bersaglio, però, la compensazione accidentale cambia. Un solo punto riuscito non dimostra quindi che la trasformazione sia corretta in tutta l’area di lavoro.
Per piccoli errori possiamo separare tre contributi: errore nel punto visto, errore di traslazione ed errore angolare. Chiamiamo δp il primo, δt il secondo e δθ il terzo. La matrice J ruota un vettore di novanta gradi: indica la direzione tangente nella quale il punto comincia a muoversi quando cambia l’angolo. Trascuriamo i prodotti fra piccoli errori; questa è una linearizzazione, cioè una descrizione locale, non una nuova legge esatta.
Questa formula spiega anche dove conviene cercare la causa. Una traslazione errata sposta tutti i punti nello stesso modo. Una rotazione errata produce uno schema che dipende dalla loro posizione. Il rumore di localizzazione, invece, può cambiare da immagine a immagine. Sono firme diagnostiche del modello, non una diagnosi automatica: distorsione ottica, flessione della struttura e variazioni di profondità possono sovrapporsi e richiedere un modello più ricco.
Quanto possiamo fidarci del punto stimato?
Finora abbiamo imposto un errore preciso. In pratica conosciamo spesso una dispersione: ripetendo una misura otteniamo valori leggermente diversi. La deviazione standard, indicata con σ, descrive la scala di questa variabilità; non è un limite massimo garantito. Supponiamo errori indipendenti e centrati in zero: 0,5 mm per ciascuna coordinata del punto, 0,7 mm per ciascuna componente della traslazione e 0,2° per l’angolo. Sono ipotesi sintetiche, scelte per mostrare il meccanismo, non specifiche di una telecamera.
La matrice di covarianza Σ raccoglie le varianze delle coordinate e il modo in cui variano insieme. Se questo linguaggio non è familiare, immaginiamo una nuvola di possibili posizioni: una nuvola circolare indica uguale dispersione in ogni direzione, una allungata indica una direzione più incerta. La formula seguente somma i contributi indipendenti. Il simbolo T indica la trasposizione, che scambia righe e colonne; il prodotto vvᵀ costruisce il contributo orientato lungo v.
Le ultime due righe valgono per gli errori isotropi del nostro esempio: stessa dispersione in entrambe le coordinate. La direzione radiale segue la congiungente origine-bersaglio; quella tangenziale è perpendicolare. L’errore angolare allarga soprattutto la seconda. A r = 0,5 m otteniamo 0,860 mm radialmente e 1,946 mm tangenzialmente. Non sarebbe corretto sostituire questi valori con una singola «precisione della camera»: riguardano l’intera trasformazione sotto ipotesi specifiche.
Abbiamo verificato il conto generando 100.000 realizzazioni gaussiane con seed 20260925 e applicando la rotazione esatta, senza linearizzarla. Le deviazioni standard osservate sono 0,858 mm e 1,949 mm: vicine alle previsioni locali. Il 95° percentile della distanza totale è 3,930 mm e il 99° è 5,096 mm, calcolati ordinando i campioni e scegliendo rispettivamente il 95.000° e il 99.000°. Sono percentili della simulazione: non garantiscono che il 95% delle prese reali riesca, perché non modelliamo contatto, orientamento della pinza o dimensioni del componente.
Più immagini non cancellano una calibrazione sbagliata
La simulazione rappresenta possibili errori dell’intera stima, come un insieme di calibrazioni e osservazioni ipotetiche. In un impianto con calibrazione fissa, invece, una parte dell’errore resta comune a tutte le immagini. Mediare N osservazioni indipendenti può ridurre la varianza del rumore visivo di un fattore N; non riduce automaticamente l’errore comune di rotazione o traslazione. Per questo una pinza può essere molto ripetibile e colpire sempre il punto sbagliato. Ripetibilità significa dispersione contenuta, accuratezza significa vicinanza al riferimento corretto.
Anche la geometria usata per calibrare conta. In un esempio ancora più semplice, stimiamo una direzione con due punti distanti L, ciascuno con rumore trasversale indipendente di deviazione standard σ. La differenza delle due misure ha deviazione √2·σ; dividendola per L stimiamo l’incertezza angolare in radianti. Con σ = 1 mm, una base di 100 mm dà circa 0,810°, una di 500 mm circa 0,162°. È una linearizzazione per due punti, non la precisione dichiarata di un algoritmo hand-eye; mostra perché riferimenti troppo vicini possono informare male sull’orientamento.
Dalla spiegazione a una verifica utile
Una verifica coerente con questa analisi usa bersagli indipendenti da quelli impiegati per stimare la trasformazione e li distribuisce nell’area di lavoro. Per ogni posizione registra il vettore residuo, non soltanto la sua lunghezza media. Residui quasi paralleli suggeriscono di esaminare la traslazione; residui che ruotano o crescono con la distanza suggeriscono di esaminare l’orientamento. Si tratta di un protocollo proposto, non eseguito su hardware. Il riferimento di misura deve avere un’incertezza nota: altrimenti potremmo attribuire alla camera l’errore del controllo stesso.
La calibrazione intrinseca della camera descrive proiezione e distorsione; quella estrinseca descrive la relazione fra riferimenti. La documentazione OpenCV 4.13.0 distingue questi oggetti e presenta l’interfaccia calibrateHandEye per la relazione camera-pinza. Nel caso di camera montata sul robot, la posizione della base rispetto alla camera cambia insieme alla posa del braccio e si compongono più trasformazioni. Il nostro esempio con relazione fissa non risolve quel problema completo: isola la propagazione di un errore già presente in una trasformazione.
Restano fuori dal modello la terza dimensione, gli errori correlati, le deformazioni, il ritardo fra acquisizione e azione e l’incertezza dell’utensile. Un oggetto in moto può essere localizzato correttamente e trovarsi altrove quando la pinza arriva. Una distribuzione non gaussiana può avere code più pesanti di quelle simulate. Non abbiamo quindi dimostrato sicurezza, conformità o successo di presa. Abbiamo ottenuto uno strumento per formulare domande misurabili prima di cambiare modello AI o acquistare componenti più costosi.
Che cosa abbiamo capito
La pinza può mancare un oggetto riconosciuto correttamente perché vedere e raggiungere richiedono una relazione geometrica affidabile. Mezzo grado non ha un significato operativo da solo: conta anche la distanza e la direzione del bersaglio. Separare errore sistematico, dispersione e geometria aiuta a capire quale misura manca. Per EL-AI la robotica industriale e collaborativa è una direzione di interesse dichiarata; questo approfondimento ne sviluppa i fondamenti, senza annunciare prodotti, installazioni o prove aziendali che non sono documentati.
Fonti e riproducibilità
Kevin M. Lynch, Frank C. Park — Modern Robotics, §3.3.1, Homogeneous Transformation Matrices.
OpenCV 4.13.0 — Camera Calibration and 3D Reconstruction; calibrateHandEye.
Le fonti sostengono convenzioni geometriche e distinzione delle calibrazioni; numeri, derivazione piana e simulazione sono l’analisi didattica qui eseguita. Il frammento seguente verifica lo scarto deterministico. L’archivio contiene l’esperimento completo, compresa la generazione degli errori e dei percentili. Non occorre eseguire codice per seguire la conclusione, ma il codice permette di controllarne il nucleo numerico.
import math
p = (0.4, 0.3) # metres in the camera frame
a = math.radians(0.5)
q = (math.cos(a)*p[0]-math.sin(a)*p[1],
math.sin(a)*p[0]+math.cos(a)*p[1])
error_mm = 1000 * math.hypot(q[0]-p[0], q[1]-p[1])
print(round(error_mm, 6)) # 4.363309
Codice, dati e istruzioni · JSON. Calcoli didattici eseguiti con Python 3.14.0; figure con Matplotlib 3.11.2. Analisi con assistenza AI, senza dichiarare peer review o revisione umana. Copertina originale ImageGen, illustrativa: non documenta persone, sedi o installazioni EL-AI. Fonti consultate il 25 settembre 2026.

