Il numero cambia: è cambiato anche il carico?
Un robot tiene un utensile e il sensore al polso indica una forza. Il software trasferisce quella lettura nel riferimento della macchina e compare anche una coppia. È un errore di misura? Non necessariamente: la forza può essere identica mentre il suo momento cambia perché lo calcoliamo rispetto a un punto diverso. Prima di discutere sensori intelligenti o controllo basato su AI, dobbiamo capire che cosa rappresentano davvero quei sei numeri.
La domanda dell’articolo è precisa: come trasformare insieme forza e momento senza cambiare il significato fisico del carico? Costruiremo un caso sintetico con 10 N, un offset di 0,2 m e una rotazione di 90 gradi. Otterremo un momento di 2 N m e verificheremo che una potenza di 10 W resti 10 W. Il risultato non nasce da un sensore reale: è un calcolo didattico riproducibile, con codice e dati allegati.
Un momento richiede un punto, non soltanto una direzione
Immaginiamo una chiave che stringe un bullone. Una spinta lontana dal bullone ha più effetto rotatorio della stessa spinta vicino al bullone. Questa intuizione riguarda il braccio perpendicolare alla forza, non qualsiasi distanza: spingere lungo la chiave può dare momento nullo anche con una leva lunga. L’analogia serve a capire il riferimento; non descrive attrito, deformazioni o dinamica di un robot.
Per calcolare quell’effetto definiamo r come il vettore, in metri, dal punto rispetto al quale prendiamo il momento al punto di applicazione della forza f, in newton. Il prodotto vettoriale tiene insieme intensità, braccio perpendicolare e verso della rotazione. Il verso segue una terna cartesiana destrorsa: cambiare convenzione senza dichiararlo può invertire un segno anche quando tutti i moduli sembrano corretti.
Qui n è il momento, in newton metro, e theta è l’angolo fra r e f. Con r = (0,2; 0; 0) m e f = (0; 10; 0) N, i due vettori sono perpendicolari: il momento vale (0; 0; 2) N m. Se la forza fosse parallela a r, il seno sarebbe zero. Questa verifica impedisce di sostituire automaticamente il prodotto vettoriale con distanza per forza, dimenticando la geometria.
Separare orientamento degli assi e posizione dell’origine
Chiamiamo {b} il riferimento del sensore e {s} un riferimento della macchina. R converte componenti espresse in {b} in componenti espresse in {s}; p è la posizione dell’origine b rispetto all’origine s, espressa in {s} e in metri. Non stiamo stimando R e p: li assumiamo noti. L’errore di calibrazione è un problema successivo, diverso dalla trasformazione corretta anche quando la geometria è esatta.
Per orientar l’esempio scegliamo una rotazione positiva di 90 gradi intorno a z. L’asse x di b punta quindi lungo y di s. Una forza di 10 N lungo x del sensore diventa una forza di 10 N lungo y della macchina. La forza non ha cambiato intensità: sono cambiate le sue componenti. La traslazione dell’origine non si aggiunge a una forza come si aggiungerebbe alle coordinate di un punto.
Il momento n_b è nullo perché nel caso costruito la linea di azione della forza passa per l’origine b. Non significa che il momento sia nullo rispetto a ogni altro punto. Per chiedere quale momento vede s dobbiamo prima ruotare l’eventuale momento già presente, poi aggiungere l’effetto del braccio p sulla forza ruotata. È questo secondo termine che scompare quando si trattano erroneamente i sei numeri come due vettori da ruotare e basta.
Leggiamo la formula sul nostro caso: R f_b = (0; 10; 0) N, R n_b = 0 e p × R f_b = (0; 0; 2) N m. Non abbiamo aggiunto un carico fisico al robot: abbiamo descritto lo stesso carico rispetto all’origine s. Per tornare indietro si usa R trasposta come rotazione inversa e −R trasposta per p come traslazione inversa. Cambiare soltanto il segno di p senza ruotarlo non è la trasformazione inversa generale.
Il pacchetto di sei numeri e la sua convenzione
La coppia ordinata di vettori W = (n; f) si chiama wrench: tre componenti di momento seguite da tre componenti di forza. Usiamo questo ordine per tutto il testo. Alcune interfacce adottano l’ordine opposto; prima di applicare una matrice bisogna controllarlo. Il nome inglese non aggiunge una nuova entità fisica: rende esplicito che forza e momento devono viaggiare insieme, con unità, origine, assi e segno della convenzione di interazione.
Anche il verso del carico va dichiarato: la forza dell’oggetto sul robot ha segno opposto alla forza del robot sull’oggetto. Nel nostro esperimento fissiamo un unico verso positivo e lo manteniamo. Il cambio di riferimento non risolve una convenzione di contatto invertita. Non è inoltre lecito sommare i quadrati di newton e newton metro e chiamare il risultato una forza totale: le due parti hanno dimensioni diverse.
La prova decisiva: la potenza non deve dipendere dalle coordinate
Abbiamo trovato una regola plausibile per il momento, ma possiamo verificarla senza fidarci del solo disegno. Se un carico agisce su un corpo in movimento, la sua potenza istantanea non può cambiare perché abbiamo rinominato gli assi o spostato il punto rispetto al quale scriviamo i vettori. Per fare il controllo serve descrivere il movimento con la stessa attenzione riservata al carico. È qui che entra il twist, un secondo vettore di sei componenti.
Scriviamo V = (omega; v), con velocità angolare omega in radianti al secondo e parte lineare v in metri al secondo. Nell’ordine scelto, la potenza è n prodotto scalare omega più f prodotto scalare v. Ogni termine ha unità watt: il radiante è dimensionalmente adimensionale. La somma è fisicamente sensata, al contrario della somma fra i moduli di forza e momento. Ma v deve essere la parte lineare del twist nello stesso riferimento del wrench.
La sottigliezza è che la parte lineare di un twist spaziale non coincide, in generale, con la velocità dell’origine del sensore. Se quell’origine ha posizione p e velocità p_dot nel riferimento s, la parte lineare spaziale è v_s = p_dot − omega_s × p. Il campo di velocità del corpo in un punto x è omega_s × x + v_s. Quindi v_s rappresenta quel campo valutato all’origine s, anche se in quel punto non esiste materiale del robot.
Nel riferimento solidale al corpo, invece, v_b è la velocità dell’origine b espressa negli assi b. Ne segue p_dot = R v_b. Sostituendo questa relazione nella definizione precedente otteniamo la trasformazione del twist. Il termine con il prodotto vettoriale non è un moto aggiunto: corregge il punto al quale è riferita la parte lineare. È essenziale non confrontare una velocità di punto con una componente spaziale senza questa conversione.
Scegliamo ora omega_b = (0; 0; 3) rad/s e v_b = (1; 0; 0) m/s. La velocità fisica dell’origine b, espressa in s, è R v_b = (0; 1; 0) m/s. Il termine p × R omega_b vale (0; −0,6; 0) m/s, quindi v_s = (0; 0,4; 0) m/s. Le due velocità non sono in contraddizione: una riguarda l’origine b, l’altra la componente del campo riferita all’origine s.
Nel riferimento b la potenza è 0 × 3 + 10 × 1 = 10 W. Nel riferimento s la parte rotatoria vale 2 × 3 = 6 W e quella lineare 10 × 0,4 = 4 W: sommano ancora 10 W. La ripartizione fra le due parti cambia, il totale no. Se avessimo ruotato il momento nullo senza traslarlo, avremmo ottenuto soltanto 4 W. Non è un rendimento del 40%: è una rappresentazione incoerente.
Perché la forza usa una trasformazione duale
Possiamo ora derivare la matrice generale invece di memorizzarla. Chiamiamo A la matrice che trasforma il twist da b a s. Per mantenere la stessa potenza dobbiamo avere W_b trasposto V_b uguale a W_s trasposto A V_b per ogni movimento possibile V_b. Poiché l’uguaglianza deve valere per qualunque twist, i coefficienti che lo moltiplicano devono coincidere. Questo vincolo determina la trasformazione del wrench.
L’esponente −T significa inversa e poi trasposta. Non è soltanto la trasposta di A, né A stessa. Il nome duale descrive proprio questo legame fra la trasformazione del movimento e quella del carico. Non occorre conoscere l’algebra dei gruppi per seguire il controllo numerico; la formula compatta è utile allo specialista che deve confrontare un’implementazione con una convenzione dichiarata.
Nell’ultima riga [p]_x è la matrice antisimmetrica che realizza il prodotto vettoriale con p. I blocchi sono matrici 3 per 3 e gli zeri sono blocchi nulli. Nel twist il termine con p finisce nella parte lineare; nel wrench finisce nella parte del momento. Questa diversa posizione è il motivo pratico per cui una funzione generica destinata ai punti, o la stessa matrice del twist, non può essere applicata ciecamente alle letture di forza.
Un confronto che cambia soltanto il braccio
Per isolare l’effetto ripetiamo il calcolo con quattro lunghezze L, mantenendo forza, rotazione e twist del corpo identici. Si tratta di quattro geometrie sintetiche, non di quattro misurazioni della stessa installazione. La tabella confronta la potenza completa con quella ottenuta eliminando erroneamente il termine di traslazione del momento. I valori sono arrotondati per la lettura; nel JSON restano i risultati in virgola mobile.
| L (m) | n_s,z (N m) | v_s,y (m/s) | P completa (W) | P errata (W) |
|---|---|---|---|---|
| 0 | 0 | 1 | 10 | 10 |
| 0.1 | 1 | 0.7 | 10 | 7 |
| 0.2 | 2 | 0.4 | 10 | 4 |
| 0.4 | 4 | -0.2 | 10 | -2 |
A L = 0 i due metodi coincidono: un test eseguito soltanto con origini coincidenti non scoprirebbe il difetto. A L = 0,4 m il metodo sbagliato arriva a −2 W, mentre la trasformazione completa conserva 10 W. Il segno negativo della componente v_s, y non significa che l’origine b si muova all’indietro: quel punto continua ad avere velocità y pari a 1 m/s. È la componente del campo riferita a s a essere diventata negativa.

Che cosa verifica il codice e che cosa non può verificare
Il programma allegato usa una matrice di rotazione a elementi interi per il quarto di giro: evita che un piccolo coseno numerico venga scambiato per una forza reale. Verifica la potenza con tolleranza assoluta di 10⁻¹² W e ricostruisce forza e momento iniziali applicando la trasformazione inversa. Non usa numeri casuali, quindi non richiede seed. Le piccole differenze decimali nel JSON sono arrotondamenti del calcolo, non rumore del sensore.
Un’ulteriore prova aggiunge un momento puro di 1 N m lungo z nel riferimento b. Nel riferimento s il momento totale diventa 3 N m: 1 dovuto al momento già presente e 2 al braccio della forza. La potenza passa coerentemente a 13 W in entrambi i riferimenti. Un momento puro non viene eliminato scegliendo l’origine sulla linea di azione della forza: non è intercambiabile con il solo termine r × f.
Il controllo di potenza è algebrico, non una misura del consumo elettrico del robot. Le velocità scelte servono a verificare la trasformazione; non sono comandi suggeriti per una macchina. Anche su un robot fermo si può controllare la coerenza con un twist virtuale scelto dal software. Una sola prova con velocità nulla darebbe invece zero con qualunque wrench e non scoprirebbe l’errore. Per matrici generali occorrono più direzioni indipendenti, non soltanto il caso planare di questo tutorial.
Dal sensore al controllo: che cosa rimane da dimostrare
Se un controllore o un modello AI riceve queste sei componenti, deve riceverne anche la convenzione. Un modello può imparare correlazioni nei dati senza correggere un punto di riferimento sbagliato. Per collegare il carico alle articolazioni, un Jacobiano J che mappa le velocità articolari q_dot nel twist deve usare lo stesso riferimento e lo stesso ordine di componenti del wrench. L’identità di potenza produce allora la relazione delle coppie articolari, con il segno coerente con il carico dichiarato.
Questa relazione non fornisce da sola la dinamica completa né una legge di controllo sicura. Non abbiamo modellato massa dell’utensile, accelerazioni, gravità, attriti, saturazioni, campionamento, ritardo o rumore. Non abbiamo misurato un sensore né confrontato robot. La rotazione ideale nota isola il problema di rappresentazione; su hardware occorrerebbero una calibrazione tracciabile, un protocollo di misura e verifiche specifiche per il sistema. Una trasformazione corretta è necessaria, ma non certifica la sicurezza di una cella collaborativa.
Per EL-AI, la robotica industriale e collaborativa è una direzione futura indicata dall’utente. Questo articolo non annuncia un prodotto robotico, un sensore proprietario o un’installazione dell’azienda. Il contributo qui è editoriale: rendere verificabile un passaggio matematico che collega misure, software e controllo, senza trasformare un esempio eseguito dall’assistente in un risultato sperimentale aziendale.
La risposta alla domanda iniziale
La stessa forza può avere momenti diversi perché il momento include il punto rispetto al quale viene calcolato. Nel caso svolto, 10 N restano 10 N, ma passando dall’origine sulla linea di azione a un’origine distante 0,2 m compare un momento di 2 N m. La trasformazione completa mantiene la potenza a 10 W perché cambia coerentemente anche la rappresentazione del movimento. Il numero diverso non prova un carico diverso: prima bisogna confrontare origine, assi, unità e convenzioni.
Fonti e riproducibilità
I riferimenti sono fonti didattiche fondative, non una ricognizione dello stato dell’arte 2026. Le sezioni tecniche pertinenti sono state lette integralmente. Vettori, confronto dei quattro bracci e caso del momento puro sono calcoli indipendenti di questo articolo; non riproducono un benchmark delle fonti. Nel frammento seguente cross calcola il braccio della forza, mentre i due prodotti scalari ricostruiscono le parti della potenza: il controllo impedisce di scambiare 4 W con il totale.
def cross(a,b):
return [a[1]*b[2]-a[2]*b[1],
a[2]*b[0]-a[0]*b[2],
a[0]*b[1]-a[1]*b[0]]
def dot(a,b): return sum(x*y for x,y in zip(a,b))
f_s=[0,10,0]; p=[0.2,0,0]; omega_s=[0,0,3]
n_s=cross(p,f_s)
v_s=[0,1-3*p[0],0]
assert abs(dot(n_s,omega_s)+dot(f_s,v_s)-10)<1e-12
print(n_s, dot(f_s,v_s), dot(n_s,omega_s))
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 18 ottobre 2026.

