Djinious
Robotica industrialeProduzione e robotica

Manipolatore UR5 a 6 assi

Un braccio UR5 spaziale a 6 gradi di libertà come un unico modello multibody — cinematica inversa in forma chiusa che guida un percorso cartesiano dell’end-effector tramite controllo PD per giunto con feedforward di gravità.

DjiniousLab
Il braccio robotico UR5 a 6 assi renderizzato in 3D in una posa rappresentativa a metà escursione, che mostra tutti e sei i giunti rotoidali lungo la catena cinematica DH
giunti rotoidali
6Rgiunti rotoidali
spazio di lavoro spaziale
6 DoFspazio di lavoro spaziale
andata-ritorno IK (rad)
~1e-16andata-ritorno IK (rad)
tracking cartesiano (picco)
0,485 cmtracking cartesiano (picco)
tracking cartesiano (regime)
0,41 cmtracking cartesiano (regime)
errore di tracking dei giunti
<0,0013 raderrore di tracking dei giunti

Un braccio robotico. Un modello. Dallo spazio dei giunti al cartesiano.

L’UR5 — un braccio industriale a 6 giunti rotoidali — modellato end-to-end come DAE multibody. La cinematica inversa in forma chiusa alimenta un controllore PD per giunto con feedforward di gravità che mantiene un percorso cartesiano dell’end-effector in simulazione. Cinematica, inerzia e controllo, tutti su un’unica replica digitale viva.

Ogni sottosistema, su un unico canvas.

Niente è semplificato con placeholder — la catena cinematica, l’inerzia dei link e il controllo portano tutti la propria fisica.

Sei giunti rotoidali

I parametri DH standard dell’UR5 concatenano sei giunti rotoidali dalla base al polso. L’inerzia del rotore (Jr) è disponibile come parametro opzionale ma è tenuta a 0 per la catena 6R — Jr > 0 innesca una patologia di riduzione d’indice in MTK che blocca le catene con N ≥ 5 giunti (ADR-0072).

Link a inerzia completa

Le masse dei link e le inerzie principali diagonali provengono dall’URDF pubblico dell’UR5. I termini di inerzia fuori diagonale sono trascurati; il DAE multibody cattura le forze inerziali dominanti senza l’accoppiamento tensoriale completo.

IK in forma chiusa

Un risolutore analitico a polso disaccoppiato chiude il ciclo di cinematica inversa in un solo ramo. L’errore di andata-ritorno (FK ∘ IK) è di ~1e-16 rad — alla precisione di macchina in virgola mobile.

Controllo PD + feedforward di gravità

PD per giunto più feedforward di gravità: in_tau → −q. La legge di controllo di ogni giunto è indipendente, con guadagni tarati sulla frequenza naturale del braccio.

Osservatore FK dell’end-effector

La cinematica diretta propaga gli angoli dei giunti a una posizione cartesiana dell’end-effector che viene confrontata con il percorso di riferimento, fornendo il segnale di errore di tracking.

Composizione DAE multibody

Le primitive Revolute, FixedTranslation, FixedRotation e Link del kit multibody pure-DJL compongono la catena DH. Il motore le traduce in un DAE simbolico.

Costruito dalla catena DH, non da matrici assemblate a mano.

Il modello UR5 è assemblato dallo stesso kit multibody pure-DJL che alimenta il quadricottero Djinborn — primitive Revolute, FixedTranslation, FixedRotation e Link collegate secondo i parametri DH standard. Cinematica e forze inerziali emergono dalla composizione; non ci sono Jacobiane o matrici di massa scritte a mano. La politica di inizializzazione del motore è impostata su NoInit (ADR-0071) in modo che l’IK analitica possa precondizionare gli angoli dei giunti prima dell’avvio dell’integratore DAE — un requisito perché il risolutore in forma chiusa a polso disaccoppiato operi correttamente nel ciclo.

Kit multibody pure-DJL (Revolute/FixedTranslation/FixedRotation/Link) — nessuna modifica a Rust o Julia. — ADR-0067

IK a polso disaccoppiato in forma chiusa, un ramo, pose non singolari. — ADR-0072

La politica del motore NoInit permette all’IK analitica di precondizionare lo stato del DAE. — ADR-0071

DjiniousLab
Il modello a sistema completo dell’UR5 aperto come grafo a nodi nel canvas di DjiniousLab, che mostra l’intera composizione a ciclo chiuso collegata a partire dalle primitive del kit multibody
La composizione ur5_full_system aperta come canvas in DjiniousLab — l’intero ciclo chiuso come un unico grafo elaborato: il percorso cartesiano alimenta la cinematica inversa in forma chiusa, passa attraverso filtri di riferimento per giunto nel controllo PD + feedforward di gravità, e guida l’impianto multibody DH 6R, con un osservatore di cinematica diretta che preleva il valore alla punta. Un unico modello che il worker risolve end-to-end.
DjiniousLab
Il braccio UR5 a 6 assi in una posa rappresentativa, renderizzato dal visualizzatore 3D di DjiniousLab
L’UR5 in una posa rappresentativa a metà escursione — sei giunti rotoidali, masse dei link e inerzie diagonali da URDF, IK in forma chiusa nel ciclo, e controllo PD per giunto con feedforward di gravità, tutto simulato come un’unica composizione.

Quattro gate. Numeri reali.

Simulazione verificata contro quattro gate sul branch feat/multibody-ur5-arm. Ambito: pose non singolari, un solo ramo IK. Nessun robot fisico — questi sono risultati di simulazione del gemello digitale.

Gate

  • G-B1: mantenimento posa con compensazione di gravità: PASS
  • G-B2: errore di tracking dei giunti: PASS
  • G-B3a: andata-ritorno IK (FK∘IK): PASS
  • G-B3b: tracking cartesiano (picco): PASS
  • G-B3b: tracking cartesiano (regime): PASS

Risultato

  • G-B1: mantenimento posa con compensazione di gravità: angoli dei giunti stabili, nessuna deriva
  • G-B2: errore di tracking dei giunti: <0,0013 rad per giunto
  • G-B3a: andata-ritorno IK (FK∘IK): ~1e-16 rad (precisione di macchina)
  • G-B3b: tracking cartesiano (picco): 0,485 cm
  • G-B3b: tracking cartesiano (regime): 0,41 cm

Il bug che sembrava una lacuna fisica.

Alla prima esecuzione della catena 6R, il DAE risultava sottodeterminato — il risolutore non riusciva a chiudere. La prima ipotesi fu l’inerzia del rotore mancante (una correzione facile: aggiungere Jr per giunto). Il modello girava, ma il tracking restava scadente. La causa reale era un frame terminale sospeso: il connettore Frame di uscita del sesto giunto non aveva un corpo a valle contro cui reagire, quindi le equazioni di vincolo erano degeneri. Identificare questa — e non l’inerzia — come causa radice ha richiesto di leggere la struttura del residuo invece di tentare a caso. La correzione è stata una riga. Raccontare onestamente la diagnosi errata fa parte del verbale: il rigore ingegneristico significa seguire il residuo, non la prima storia plausibile.