ELAI S.r.l.

Robot vicino a una singolarità: che cosa sacrifica l’inversa smorzata?

Derivazione del Jacobiano 2R, analisi SVD e calcolo riproducibile del compromesso tra velocità articolari ed errore cartesiano.

Robot vicino a una singolarità: che cosa sacrifica l’inversa smorzata?

Abstract. Vicino a una singolarità, una piccola velocità richiesta all'utensile può esigere velocità articolari enormi. L'inversa smorzata del Jacobiano rende finito il guadagno, ma modifica il movimento effettivamente eseguito. Questo approfondimento quantifica il compromesso attraverso un manipolatore planare a due giunti: derivazione della cinematica, soluzione regolarizzata, lettura spettrale e calcolo riproducibile. Il risultato centrale è una distinzione: limitare l'amplificazione numerica non significa recuperare la mobilità perduta, rispettare tutti i vincoli degli attuatori o dimostrare la sicurezza di un robot.

Il lettore dovrebbe conoscere derivate, vettori e minimi quadrati. Il caso è volutamente piccolo: possiamo controllare ogni passaggio e capire che cosa una procedura numerica sta sacrificando. Non vengono presentati test su hardware né un nuovo algoritmo; l'esperimento didattico è stato eseguito in Python con NumPy, in doppia precisione.

1. Una richiesta innocua soltanto nello spazio cartesiano

Immaginiamo un utensile che debba muoversi orizzontalmente di un centimetro al secondo. Il comando appare modesto, ma la sua fattibilità dipende dalla configurazione del braccio. Quando due segmenti sono quasi allineati, muovere la punta lungo il loro asse richiede grandi rotazioni opposte dei giunti. La medesima velocità, in una configurazione piegata, può essere ottenuta senza questa amplificazione.

Un controllore riceve spesso un comando cartesiano da un livello superiore: pianificazione, visione, teleoperazione o una politica appresa. La correttezza semantica di quel comando non assicura che l'inversione cinematica sia ben condizionata. Il punto di contatto tra AI e robotica è anche questo: tradurre un'intenzione in un movimento compatibile con la geometria corrente. La domanda qui è precisa: quanto errore cartesiano acquistiamo quando riduciamo le velocità articolari attraverso lo smorzamento?

2. Costruire il problema: un braccio 2R

Consideriamo due segmenti rigidi di lunghezza l1 e l2 e due giunti rotativi. q1 è l'angolo del primo segmento rispetto all'asse x della base; q2 è relativo al primo segmento. Tutti gli angoli nelle funzioni trigonometriche sono in radianti. Studiamo soltanto la posizione della punta nel piano, non il suo orientamento. La cinematica diretta è:

x = l1 cos(q1) + l2 cos(q1 + q2)
y = l1 sin(q1) + l2 sin(q1 + q2)
v = J(q) qdot

Derivando separatamente rispetto ai due angoli otteniamo una matrice 2×2. Ogni colonna descrive la velocità della punta generata da una velocità unitaria del giunto corrispondente:

J = [ -l1 sin(q1)-l2 sin(q1+q2)   -l2 sin(q1+q2) ]
    [  l1 cos(q1)+l2 cos(q1+q2)    l2 cos(q1+q2) ]
det(J) = l1 l2 sin(q2)

Il determinante si annulla quando q2 è zero o un multiplo di π. Con entrambi i segmenti distesi lungo x, le colonne di J sono verticali: al primo ordine nessuna combinazione delle velocità dei giunti produce una velocità orizzontale. Non è un difetto della precisione del computer; è una perdita geometrica di direzioni istantaneamente disponibili.

Questa relazione è locale. Non afferma che la punta non possa mai raggiungere una posizione interna dopo una manovra finita. Afferma che in quell'istante il modello differenziale non può produrre una componente lungo x. Un algoritmo che restituisse esattamente quella componente senza cambiare ipotesi starebbe risolvendo un problema diverso.

3. Perché la pseudoinversa amplifica il comando

La decomposizione ai valori singolari scrive J = UΣVᵀ. Le colonne ui di U sono direzioni cartesiane ortogonali, quelle vi di V direzioni articolari; σi indica quanto movimento cartesiano produce una velocità articolare unitaria lungo vi. La pseudoinversa applica un guadagno 1/σi alle componenti raggiungibili. Per σi nullo usa zero e restituisce la soluzione di norma minima del problema ai minimi quadrati. Questo quadro classico e l'alternativa smorzata sono trattati nelle sezioni 4–6 della nota di Samuel R. Buss.

qdot_pinv = Σi:σi>0 vi (uiᵀ v) / σi

Nel nostro esempio scegliamo l1 = l2 = 1 m, q1 = 0 e v = (0,01; 0) m/s. Per q2 diverso da zero e π si può risolvere senza una libreria: la seconda riga impone una relazione tra le due velocità; sostituendola nella prima si ottiene qdot1 = 0,01 cot(q2) e qdot2 = −0,01 cot(q2/2), in rad/s. Per piccoli q2, quindi, la norma cresce circa come 0,01√5/|q2|.

A 0,1 gradi questa formula prevede una norma di circa 12,81 rad/s, pur partendo da un comando di appena 0,01 m/s. A zero gradi esatti la pseudoinversa restituisce invece velocità nulle per questo comando orizzontale. Il valore nel punto singolare non è il limite dei valori nelle sue vicinanze. Una soglia numerica che tronca i valori singolari evita alcune divisioni, ma introduce una scelta operativa sul passaggio tra i due comportamenti.

4. Derivare l'inversa smorzata

Introduciamo un vettore articolare incognito z e una penalizzazione positiva λ. Nel nostro sistema di unità J ha dimensione m/rad e λ viene espresso nella stessa scala. Minimizziamo una funzione strettamente convessa:

L(z) = ||Jz − v||² + λ² ||z||²
∇L(z) = 2 Jᵀ(Jz − v) + 2λ²z
(JᵀJ + λ²I) z = Jᵀv
qdot_DLS = (JᵀJ + λ²I)⁻¹ Jᵀv

La matrice delle equazioni normali è definita positiva per λ > 0: lungo ogni vettore non nullo la forma quadratica vale ||Jz||² + λ²||z||², che è positiva. Esiste quindi un minimo unico anche quando J perde rango. La formula è utile per ragionare; nel codice conviene risolvere il sistema o usare la SVD, invece di costruire esplicitamente un'inversa.

Sostituendo la SVD e usando l'ortogonalità, il problema si separa in coordinate indipendenti. Ogni coordinata articolare paga sia il residuo lungo una direzione cartesiana sia la propria ampiezza. La soluzione scalare cambia il guadagno da 1/σ a σ/(σ²+λ²). Il termine «smorzamento» indica qui una regolarizzazione cinematica: non stiamo aggiungendo uno smorzatore meccanico né modellando la dissipazione del robot.

5. Il prezzo dello smorzamento, direzione per direzione

gλ(σ) = σ / (σ² + λ²)
J qdot_DLS = Σi ui [σi²/(σi²+λ²)] (uiᵀv)
r = v − J qdot_DLS
gλ'(σ) = (λ² − σ²) / (σ²+λ²)²
maxσ≥0 gλ(σ) = 1/(2λ)
||qdot_DLS|| ≤ ||v||/(2λ)

La velocità realizzata viene attenuata maggiormente nelle direzioni con σ piccolo. Per σ = λ passa esattamente metà della componente richiesta; per σ molto maggiore di λ l'attenuazione diventa piccola; per σ nullo la componente resta irrealizzabile. La derivata del guadagno mostra che il suo massimo si trova in σ = λ. Il limite sulla norma segue dall'ortogonalità e dalla norma spettrale dell'operatore.

Con ||v|| = 0,01 m/s e λ = 0,05 m/rad, la norma articolare non supera 0,1 rad/s nel modello. Questo è un limite sufficiente sull'intero vettore, non una verifica di accelerazioni, coppie, collisioni o limiti di posizione. Se ogni giunto avesse un limite diverso, un unico λ non esprimerebbe direttamente quelle priorità. Per imporre vincoli specifici occorre formularli nel problema, per esempio con un'ottimizzazione quadratica vincolata.

Notiamo inoltre che la penalizzazione non elimina soltanto il movimento «cattivo». Con λ finito attenua anche direzioni ben condizionate, sebbene meno. Una λ molto elevata produce velocità piccole ovunque: un errore basso di norma articolare, da solo, non è un indice di buona esecuzione del compito.

6. Esperimento riproducibile: geometria fissa, nessun robot fisico

Abbiamo calcolato le soluzioni per q2 pari a 30°, 10°, 1°, 0,1° e 0°, mantenendo lunghezze e comando descritti sopra. Il programma usa la SVD in float64; per la pseudoinversa considera nulli i valori singolari non superiori a 10⁻¹². Le λ esaminate sono 0,01 e 0,05 m/rad. Non ci sono campionamenti casuali, addestramento o integrazione temporale: ogni riga è una configurazione indipendente.

q2 (gradi)Metodo||qdot|| (rad/s)||v−Jqdot|| (m/s)
30Pseudoinversa0,041144≈0
30DLS λ=0,050,0393070,000425
1Pseudoinversa1,281121≈0
1DLS λ=0,010,4850070,006214
1DLS λ=0,050,0304770,009762
0,1Pseudoinversa12,811721≈0
0,1DLS λ=0,050,0031210,009998
0Tutti i metodi00,010000

I valori quasi nulli del residuo della pseudoinversa sono errori di arrotondamento, non misure sperimentali sul mondo fisico. Il confronto a un grado è istruttivo: λ = 0,05 riduce la norma articolare di circa quarantadue volte rispetto alla pseudoinversa, ma il residuo raggiunge circa il 97,6% della norma del comando. Il robot ideale quasi non esegue il movimento richiesto. Descrivere soltanto la riduzione delle velocità sarebbe quindi fuorviante.

Norma delle velocità articolari ed errore cartesiano al variare dell'angolo del secondo giunto, per pseudoinversa e due valori di smorzamento
Calcolo didattico su un braccio planare 2R con segmenti di 1 m e comando orizzontale di 0,01 m/s. I pannelli condividono l'intervallo 0,01°–30°; il punto singolare esatto è riportato soltanto in tabella. Curve generate dai dati dello script, non da immagini AI.

Il grafico superiore mostra anche un comportamento non monotono della DLS: il guadagno cresce avvicinandosi alla regione critica e poi diminuisce verso zero nella direzione che perde mobilità. Il grafico inferiore espone il prezzo di questa riduzione. Mostrare entrambi evita di scambiare l'arresto del movimento con una soluzione accurata del compito.

7. Codice essenziale e verifiche indipendenti

import numpy as np
q2 = np.deg2rad(1.0)
J = np.array([[-np.sin(q2), -np.sin(q2)],
              [1 + np.cos(q2), np.cos(q2)]])
v = np.array([0.01, 0.0])
lam = 0.05
U, sigma, Vt = np.linalg.svd(J, full_matrices=False)
qdot = Vt.T @ ((sigma / (sigma**2 + lam**2)) * (U.T @ v))
print(np.linalg.norm(qdot), np.linalg.norm(v - J @ qdot))

L'archivio include il programma completo, i risultati e lo script dei grafici. Il controllo del Jacobiano confronta la formula con differenze finite centrate di passo 10⁻⁶ rad in una configurazione non singolare. Un secondo controllo verifica il residuo delle equazioni normali per le soluzioni DLS; un terzo verifica il limite sulla norma e l'invarianza rispetto alla conversione coerente da metri a millimetri. Sono verifiche diverse: nessuna può da sola provare l'intera implementazione, ma intercettano errori di segno, scala e soluzione.

Scarica codice, dati e istruzioni per riprodurre l'esperimento. Il file dei risultati contiene anche le componenti delle velocità e i valori singolari, così da non limitare la verifica alle norme aggregate.

8. Un numero senza unità può cambiare il controllore

Se esprimiamo le stesse lunghezze in millimetri, J e v vengono moltiplicati per mille. Per preservare la soluzione, anche λ deve essere moltiplicato per mille: il problema obiettivo viene allora moltiplicato interamente per un milione. Lasciare λ = 0,05 dopo il cambio di unità rende invece la penalizzazione relativa un milione di volte più piccola. Non è un dettaglio di visualizzazione: cambia il movimento calcolato.

Il problema si amplia nei robot spaziali, quando si combinano velocità lineari e angolari. Una norma che somma componenti espresse in m/s e rad/s incorpora una scelta di peso. Prima di confrontare numeri di condizionamento, parametri di smorzamento o precisioni occorre fissare una metrica coerente, per esempio normalizzando rispetto a scale di posizione e orientamento pertinenti al compito. Non esiste una λ universale trasferibile senza questa convenzione.

9. Dalla cinematica al controllo: ciò che manca

Un ciclo reale integra il comando, acquisisce nuove misure e ricalcola J. Introduce periodo di campionamento, ritardi, errori di modello, saturazioni e dinamica degli attuatori. Qui non abbiamo scelto un periodo perché non simuliamo quel ciclo. Dedurre stabilità in anello chiuso dalla finitezza di una matrice sarebbe un salto logico. Anche la norma di una velocità piccola può nascondere variazioni rapide tra due campioni.

Un confronto operativo dovrebbe registrare errore cartesiano, velocità e accelerazioni per giunto, saturazioni e distanza dai vincoli, oltre al tempo di calcolo. I metodi andrebbero provati sulla stessa traiettoria, con le stesse convenzioni di unità e limiti. Prima ancora, la traiettoria richiesta potrebbe dover essere modificata: non ogni comando cartesiano deve essere inseguito a qualunque costo.

La ricerca recente esplora anche alternative alla regolarizzazione uniforme. Il preprint J-PARSE, versione 1 del 2025, distingue direzioni singolari e non singolari e modifica il comando tramite proiezioni. Le sezioni III e IV descrivono il metodo, confronti in simulazione e dimostrazioni fisiche; limiti articolari e collisioni sono esplicitamente fuori dalla formulazione affrontata. Non abbiamo riprodotto quel lavoro e i nostri numeri non costituiscono un confronto con J-PARSE. È una direzione da studiare, non una prova di superiorità generale.

10. Conseguenze per robotica e AI nelle imprese

Un sistema appreso che propone una posa o una velocità deve convivere con un livello di esecuzione che espone ciò che può realizzare. Nell'esempio, la DLS potrebbe restituire insieme al comando articolare la velocità ottenibile e il residuo: il pianificatore saprebbe che quasi tutto il movimento richiesto è stato perso. Questo feedback può motivare una diversa configurazione o un rallentamento del compito. È una proposta architetturale dedotta dal calcolo, non una funzionalità già testata in produzione.

Per EL-AI la robotica industriale e collaborativa è una direzione dichiarata di interesse. Questo studio chiarisce un problema tecnico rilevante per tale percorso, senza attribuire all'azienda installazioni, controllori o prove fisiche inesistenti. L'esperimento è didattico e non è una validazione di sicurezza per una cella collaborativa.

Conclusione. L'inversa smorzata rende controllabile il guadagno dell'inversione accettando un residuo dipendente dalla direzione. Il dato da valutare non è soltanto quanto si riducono le velocità dei giunti, ma quanto del comando rimane effettivamente realizzato. Nel caso quasi disteso il compromesso può essere estremo: una soluzione numericamente tranquilla può corrispondere a un utensile quasi fermo.

Fonti e trasparenza

Buss, Introduction to Inverse Kinematics with Jacobian Transpose, Pseudoinverse and Damped Least Squares Methods, nota tecnica, sezioni 4–6; J-PARSE, arXiv:2505.00306v1, 2025, sezioni III–IV. Fonti collegate nei punti pertinenti e consultate il 22 settembre 2026. Derivazione del caso 2R, calcoli e figure di questo articolo sono materiale didattico riproducibile, non una nuova pubblicazione sottoposta a peer review.

Testo e traduzioni preparati con assistenza AI; nessuna revisione umana attestata. Copertina illustrativa generata con AI: non raffigura una vera installazione EL-AI.