Contents — find the section you need

I motori di un braccio robotico possono ruotare solo l'angolo di ciascuna articolazione, ma ciò che desideriamo realmente, quasi sempre, è qualcosa espresso nello spazio operativo: "sposta la mano in questa posizione e orientazione". La cinematica è la branca matematica che collega questi due mondi – "ciò che fanno le articolazioni" e "ciò che vogliamo che la mano faccia" – e costituisce il fondamento di ogni software che controlla un braccio robotico. Questo articolo analizza sistematicamente la cinematica diretta, che determina la posizione della mano a partire dagli angoli delle articolazioni; la cinematica inversa, che risolve il problema inverso; e la matrice jacobiana, che collega la "velocità" tra i due spazi, seguendo le equazioni in tutto il percorso.

Braccio robotico Universal Robots UR16e con controller e pannello di programmazioneUn braccio robotico collaborativo sul campo

Immagine: UR16e braccio robotico (Auledas, CC BY-SA 4.0), Wikimedia Commons. Una struttura rappresentativa di giunti e bielle del tipo descritto dalle equazioni dell'articolo, non i parametri cinematici di questa specifica marca o modello.

0. Cosa tratta questo articolo

  • Quale problema risolve la cinematica del braccio robotico e perché è necessaria
  • La relazione tra input (angoli dei giunti, posizione target) e output (posizione della mano, angoli dei giunti)
  • Come costruire la cinematica diretta con matrici di trasformazione omogenee e parametri DH
  • Perché la cinematica inversa "non è necessariamente risolvibile in modo univoco" e la differenza tra metodi analitici e numerici
  • Cos'è lo Jacobiano e perché può collegare la velocità dei giunti alla velocità della mano
  • Cosa accade in una singolarità e perché i gradi di libertà ridondanti sono utili
  • Le differenze tra i principali algoritmi di cinematica inversa: CCD, FABRIK, Damped Least Squares e altri
  • Come l'uso della cinematica differisce tra robot industriali, umanoidi e computer grafica Animazione

1. In sintesi: cos'è la cinematica di un braccio robotico

In una frase: la cinematica è il quadro matematico che converte tra due diverse rappresentazioni di un braccio robotico: gli angoli delle sue articolazioni (spazio delle articolazioni) e la posizione/orientamento della sua mano (spazio operativo), utilizzando relazioni puramente geometriche, senza considerare la forza o le caratteristiche dei motori.

L'espressione "relazioni puramente geometriche" è una limitazione importante. La cinematica non si occupa mai della dinamica, ovvero di quanto peso il braccio può sostenere o di quanto velocemente possono muoversi i motori. Si occupa solo di questioni puramente geometriche: "dove si trova la mano quando gli angoli delle articolazioni sono θ?" e "quali dovrebbero essere gli angoli delle articolazioni per posizionare la mano in questa posizione?". Solo una volta stabilite queste basi geometriche possiamo costruire su di esse discussioni su forza, coppia e tracciamento della traiettoria.

2. Perché la cinematica è necessaria?

I motori di un braccio robotico possono solo ruotare (o estendere/ritrarre) ciascuna singola articolazione. Le istruzioni che un essere umano vuole impartire a un robot sono, nella quasi totalità dei casi, formulate in termini di posizione e orientamento della mano (l'effettore finale): "metti questo pezzo qui", "porta questa tazza laggiù". L'insieme degli angoli delle articolazioni (spazio delle articolazioni) e la posizione e l'orientamento della mano (spazio operativo) appaiono, intuitivamente, come quantità completamente diverse: per un braccio a 6 assi, gli angoli delle articolazioni sono un insieme di 6 numeri, mentre l'orientamento della mano è espresso come una posizione 3D (x, y, z) più un orientamento 3D (rotazione) – 6 gradi di libertà in totale.

Senza una regola di conversione che colleghi questi due spazi, non c'è modo di calcolare "di quanto ruotare ciascuna articolazione affinché la mano raggiunga la posizione target", e il braccio robotico semplicemente non potrebbe eseguire il movimento desiderato. La cinematica ha il compito di esprimere, tramite equazioni esplicite, questa corrispondenza geometrica tra spazio delle articolazioni e spazio operativo – una corrispondenza determinata dalla struttura del robot (lunghezza dei segmenti, configurazione delle articolazioni).

3. Quali sono gli input?

Gli input che la cinematica gestisce dipendono dalla direzione in cui stiamo risolvendo il problema.

  • Input per la cinematica diretta (FK): un vettore di giunti \boldsymbol{\theta} = (\theta_1, \theta_2, \ldots, \theta_n) che raccoglie l'angolo di ciascun giunto (per giunti rotanti) o l'entità dello scorrimento (per giunti prismatici). Inoltre, le informazioni strutturali del robot (la lunghezza di ciascun collegamento, la configurazione degli assi di ciascun giunto) sono fornite come un insieme di costanti necessarie in anticipo per costruire il modello cinematico.

  • Input per la cinematica inversa (IK): la posizione target \mathbf{x}_d che la mano deve raggiungere. Si tratta di una coppia composta da una posizione target \mathbf{p}_d \in \mathbb{R}^3 e un orientamento target (espresso come matrice di rotazione o quaternione) R_d; In molti casi, soprattutto con i metodi numerici, gli angoli articolari correnti \boldsymbol{\theta}_0 vengono inclusi come valore iniziale di input.

Le informazioni strutturali del robot costituiscono un "modello", non un dato fornito a ogni calcolo; tuttavia, se sono imprecise, sia la cinematica funzionale (FK) che quella inversa (IK) produrranno risultati che non corrispondono alla macchina reale. Prima di lavorare con la cinematica di un braccio robotico, questo modello strutturale deve essere correttamente calibrato.

4. Cosa stiamo calcolando? Quali sono gli output?

L'output della cinematica funzionale (FK) è la posizione della mano \mathbf{x} = (\mathbf{p}, R) dati gli angoli articolari \boldsymbol{\theta}. Questa posizione è determinata in modo univoco: una volta fissati tutti gli angoli articolari, anche le lunghezze dei collegamenti e la configurazione delle articolazioni sono fisse, quindi la posizione finale della mano è determinata geometricamente come un unico risultato.

L'output della cinematica inversa (IK) è costituito dagli angoli delle articolazioni \boldsymbol{\theta}^{*} che realizzano una posizione target \mathbf{x}_d. È qui che la cinematica inversa si differenzia fondamentalmente dalla cinematica funzionale (FK): una soluzione IK, in generale, non è unica. Possono esserci diversi modi di flettere il gomito che raggiungono la stessa posizione della mano (soluzioni multiple), oppure la posizione target può semplicemente trovarsi al di fuori del raggio di movimento del robot (al di fuori dello spazio di lavoro raggiungibile), nel qual caso non esiste alcuna soluzione. Questa non unicità è proprio ciò che rende la cinematica inversa matematicamente più complessa della cinematica funzionale.

Esistono inoltre molte situazioni in cui ciò che desideriamo non è la posizione o la posa in sé, ma piuttosto la relazione tra le velocità: "se modifico gli angoli delle articolazioni di questa quantità, di quanto si muoverà la mano?". Questo è il ruolo della matrice jacobiana, che tratteremo in dettaglio nella Sezione 6.

5. Architettura di base

L'elaborazione relativa alla cinematica può essere organizzata attorno alla struttura di come tre trasformazioni — cinematica diretta (FK), cinematica inversa (IK) e matrice jacobiana — connettono lo spazio delle articolazioni e lo spazio operativo.

Diagram 1 · Use the button to switch views
Relationship among forward kinematics, inverse kinematics, and the Jacobian A diagram showing how forward kinematics (FK), inverse kinematics (IK), and the Jacobian each connect joint space and task space Joint space θ = (θ₁,…,θₙ) Forward Kinematics (FK) Task space Hand pose x = (p, R) Target pose x_d = (p_d, R_d) Inverse Kinematics (IK) Joint angles (solution) θ* (may be multiple) Joint angular velocity θ̇ Jacobian v = J(θ) θ̇ Task-space velocity v = (ṗ, ω)

6. Algoritmi rappresentativi

Matrici di trasformazione omogenee e parametri DH - Costruzione della cinematica diretta

L'operazione di base della cinematica diretta consiste nel collegare i sistemi di coordinate dei collegamenti adiacenti utilizzando una matrice di trasformazione omogenea, che combina rotazione e traslazione.

{}^{i-1}T_i = \begin{pmatrix} R_i & \mathbf{d}_i \\ \mathbf{0}^{\top} & 1 \end{pmatrix}

R_i rappresenta la rotazione dal sistema di coordinate del collegamento i al sistema di coordinate del collegamento i-1, e \mathbf{d}_i rappresenta la traslazione. Per un braccio con n giunti, la trasformazione dal sistema di riferimento della base al sistema di riferimento della mano è il prodotto di tutte le trasformazioni dei singoli giunti moltiplicate tra loro.

{}^{0}T_n(\boldsymbol{\theta}) = {}^{0}T_1(\theta_1)\, {}^{1}T_2(\theta_2)\, \cdots\, {}^{n-1}T_n(\theta_n)

Se queste n matrici di trasformazione omogenee fossero scritte da zero con una definizione diversa per ogni giunto, l'intero set di equazioni dovrebbe essere ricostruito ogni volta che il robot cambia. Questo è il motivo per cui una notazione standardizzata — i parametri di Denavit-Hartenberg (DH) — è così ampiamente utilizzata. Jacques Denavit e Richard Hartenberg proposero questa notazione nel loro articolo del 1955 "A Kinematic Notation for Lower-Pair Mechanisms Based on Matrices", pubblicato sull'ASME Journal of Applied Mechanics. Esprime la relazione posizionale tra due assi di giunto adiacenti utilizzando solo quattro parametri: lunghezza del collegamento a_i, angolo di torsione del collegamento \alpha_i, offset del giunto d_i e angolo del giunto \theta_i, consentendo di assemblare la matrice di trasformazione di ciascun giunto in una forma unificata.

{}^{i-1}T_i = \text{Rot}_z(\theta_i)\, \text{Trans}_z(d_i)\, \text{Trans}_x(a_i)\, \text{Rot}_x(\alpha_i)

Data questa tabella di parametri DH — tre costanti a_i, \alpha_i, d_i per ciascun giunto, più la variabile \theta_i — le equazioni della cinematica diretta per qualsiasi robot a collegamento seriale possono essere assemblate meccanicamente utilizzando la stessa procedura. Questo è il motivo per cui i manuali dei robot industriali e molti simulatori forniscono le specifiche dei robot in questa forma di parametri DH.

Cinematica inversa analitica, vista attraverso un braccio planare a 2 segmenti

Analizziamo concretamente il concetto di cinetica inversa analitica, che risolve le equazioni di cinematica funzionale (FK) derivate dai parametri di dinamica molecolare (DH) in senso inverso, utilizzando l'esempio più semplice possibile: un braccio planare a 2 segmenti con lunghezze dei segmenti pari a l_1, l_2 .

Diagram 2 · Use the button to switch views
Geometria FK/IK di un braccio planare a 2 segmenti

Figura 2 — Un braccio planare a 2 segmenti. La posizione della mano E (x, y) è determinata dagli angoli θ₁ e θ₂ dell'articolazione della spalla O e dell'articolazione del gomito J e dalle lunghezze dei segmenti l₁ e l₂ (FK). Viceversa, trovare θ₁ e θ₂ da (x, y) è IK.

La cinematica diretta può essere scritta semplicemente sommando i vettori dei due segmenti.

x = l_1 \cos\theta_1 + l_2 \cos(\theta_1 + \theta_2), \qquad y = l_1 \sin\theta_1 + l_2 \sin(\theta_1 + \theta_2)

La cinematica inversa trova \theta_1, \theta_2 da una posizione target (x, y) . Innanzitutto, si utilizza il teorema del coseno per trovare l'angolo del gomito \theta_2 .

\cos\theta_2 = \frac{x^2 + y^2 - l_1^2 - l_2^2}{2\, l_1\, l_2}

Esiste una soluzione quando il membro destro di questa equazione rientra in [-1, 1] , e \theta_2 = \pm\arccos(\cdots) fornisce due soluzioni, che differiscono solo per il segno (piegando il gomito verso l'alto o verso il basso). Una volta fissato \theta_2 , \theta_1 è determinato univocamente (per quella scelta di \theta_2 ) dalla relazione geometrica. Questa procedura — "derivare le funzioni trigonometriche inverse attraverso pura manipolazione algebrica" — è cinematica inversa analitica; può essere scritta come un'espressione in forma chiusa per meccanismi semplici con 2-3 gradi di libertà, ma poiché i gradi Quando il numero di gradi di libertà aumenta o la configurazione delle articolazioni diventa più complessa, trovare un'espressione in forma chiusa diventa generalmente difficile.

Cinematica inversa numerica - Una soluzione iterativa che utilizza la matrice jacobiana

Per robot con molti gradi di libertà o meccanismi senza una soluzione in forma chiusa, si utilizza la cinetica inversa numerica, un calcolo iterativo che si avvicina gradualmente all'obiettivo a partire dagli angoli attuali delle articolazioni. Questa si basa sulla matrice jacobiana.

Derivando la posizione della mano \mathbf{x}(\boldsymbol{\theta}) rispetto agli angoli delle articolazioni si ottiene una relazione lineare tra la velocità delle articolazioni e la velocità della mano.

\mathbf{v} = J(\boldsymbol{\theta})\, \dot{\boldsymbol{\theta}}, \qquad J(\boldsymbol{\theta}) = \frac{\partial \mathbf{x}}{\partial \boldsymbol{\theta}}

J(\boldsymbol{\theta}) è la matrice jacobiana del manipolatore, una matrice m \times n (m rappresenta i gradi di libertà dello spazio operativo, n il numero di articolazioni). La direzione in cui aggiornare gli angoli delle articolazioni per ridurre L'errore \mathbf{e} = \mathbf{x}_d - \mathbf{x}(\boldsymbol{\theta}) rispetto alla posizione target può essere calcolato utilizzando l'inversa (o pseudoinversa) della matrice jacobiana.

\Delta\boldsymbol{\theta} = J^{+} \mathbf{e}, \qquad J^{+} = J^{\top}(J J^{\top})^{-1}

Questa idea di un aggiornamento iterativo tramite la pseudoinversa jacobiana risale all'articolo di Daniel E. Whitney del 1969 "Resolved Motion Rate Control of Manipulators and Human Prostheses", che proponeva un framework di controllo della velocità che includeva la risoluzione dei gradi di libertà ridondanti. Tuttavia, quando il robot si avvicina a una configurazione singolare (spiegata nella Sezione 7), J J^{\top} diventa quasi singolare (l'inversa diverge) e questo aggiornamento diventa instabile. Il metodo Damped Least Squares (DLS), presentato da Charles Wampler in un articolo del 1986, sopprime questa instabilità aggiungendo un termine di smorzamento \lambda^2 I al calcolo dell'inversa.

\Delta\boldsymbol{\theta} = J^{\top}\left(J J^{\top} + \lambda^2 I\right)^{-1} \mathbf{e}

C'è un compromesso: maggiore è \lambda, maggiore è la stabilità numerica in prossimità delle singolarità, ma più lenta diventa la convergenza (l'errore può essere ridotto solo di una quantità minore ad ogni iterazione). Poiché questa formula consente di regolare la velocità di convergenza e la stabilità con un singolo parametro, \lambda, è ampiamente adottata nei risolutori di cinematica inversa per robot industriali per la sua praticità.

CCD e FABRIK — Euristiche geometriche iterative

Esistono anche metodi che risolvono la cinematica inversa ripetendo operazioni geometriche più intuitive, senza utilizzare affatto lo Jacobiano. CCD (Cyclic Coordinate Descent) procede giunto per giunto, dal giunto più vicino alla mano verso il giunto radice, ripetendo la semplice operazione "ruota solo questo giunto per portare la mano il più vicino possibile al bersaglio". È facile da implementare e computazionalmente poco costoso, ma poiché muove un solo giunto alla volta, converge lentamente e tende a produrre traiettorie dall'aspetto innaturale.

FABRIK (Forward And Backward Reaching Inverse Kinematics), un metodo pubblicato da Andreas Aristidou e Joan Lasenby su Graphical Models nel 2011, non gestisce affatto gli angoli di rotazione: risolve invece la cinematica inversa riposizionando ripetutamente la posizione di ciascun giunto come "un punto sulla linea retta verso il bersaglio, a una distanza che preserva la lunghezza del giunto", spostandosi dalla mano alla radice e poi dalla radice di nuovo alla mano. Poiché evita il calcolo degli angoli, è computazionalmente leggero e tende a convergere verso pose dall'aspetto naturale in poche iterazioni, motivo per cui è ampiamente utilizzato per il movimento di braccia e gambe nell'animazione CG e nei personaggi dei videogiochi.

7. Differenze tra gli algoritmi

Metodo Principio Precisione Costo computazionale Robustezza in prossimità delle singolarità Difficoltà di implementazione

Parametri DH + trasformazioni omogenee (FK) | Matrici di trasformazione collegamento per collegamento | Esatta (nessun errore se il modello è corretto) | Bassa (solo prodotti di matrici) | Non applicabile (FK non presenta singolarità) | Bassa |

| IK analitica | Deriva una soluzione in forma chiusa tramite algebra trigonometrica | Esatta (la vera soluzione, se esiste) | Molto bassa | Gestita enumerando i rami della soluzione | Bassa per pochi gradi di libertà, molto alta all'aumentare dei gradi di libertà | | Pseudoinversa jacobiana | Linearizza l'errore e aggiorna iterativamente | Dipende dal numero di iterazioni; elevata precisione una volta convergente | Moderata (ripetute operazioni di matrice) | Bassa (soggetta a divergenza in prossimità delle singolarità) | Moderata | | Minimi quadrati smorzati | Aggiunge un termine di smorzamento alla pseudoinversa | Dipende dal numero di iterazioni e \lambda | Moderato | Alto (stabile anche in prossimità di singolarità) | Moderato | | CCD | Ruota un giunto alla volta verso il bersaglio della mano | Dipende dal numero di iterazioni; può cadere in minimi locali | Basso | Alto (non è necessaria l'inversione di matrice) | Basso | | FABRIK | Sposta le posizioni dei giunti lungo una linea preservando la lunghezza del collegamento | Dipende dal numero di iterazioni; tende a convergere verso soluzioni visivamente naturali | Basso | Alto | Basso |

La cinematica inversa analitica è "la più veloce e precisa quando risolvibile", ma con l'aumentare dei gradi di libertà, la derivazione delle equazioni diventa difficile. I metodi numerici (basati sulla matrice jacobiana, CCD, FABRIK) possono essere utilizzati genericamente indipendentemente dai gradi di libertà o dal meccanismo, ma essendo iterativi, non possono sfuggire al compromesso tra velocità di convergenza, minimi locali e costo computazionale.

8. Dove incontra difficoltà / Ambienti difficili

Le difficoltà intrinseche alla cinematica può essere suddiviso in tre categorie principali.

Singolarità: in determinate configurazioni articolari, il rango della matrice jacobiana J diminuisce, creando una direzione in cui la mano non può essere mossa in alcun modo. Ad esempio, con il braccio completamente esteso, non esiste alcuna combinazione di velocità articolari in grado di spostare la mano ulteriormente verso l'esterno. In questo stato, J J^{\top} si avvicina a una matrice singolare e le leggi di controllo che utilizzano la pseudoinversa causano la divergenza delle velocità articolari comandate. L'indice di manipolabilità w = \sqrt{\det(J J^{\top})}, proposto da Tsuneo Yoshikawa nel 1985, è ampiamente utilizzato per quantificare la vicinanza a una singolarità: più w è vicino a zero, più la configurazione è vicina a una singolarità.

Soluzioni multiple e raggiungibilità: la cinematica inversa può generalmente avere soluzioni multiple (diversi modi di piegare il gomito, ad esempio), e ci sono anche casi in cui la La posizione target è fisicamente irraggiungibile date le lunghezze dei collegamenti del robot e i vincoli di escursione. A meno che un metodo numerico non definisca esplicitamente una condizione di arresto per questo caso di "nessuna soluzione", continuerà a iterare senza mai convergere.

Gradi di libertà ridondanti: per i robot con più giunti rispetto ai gradi di libertà dello spazio operativo (tipicamente 6) — ad esempio, bracci a 7 assi — esistono infinite combinazioni di angoli dei giunti che consentono di ottenere la stessa posizione della mano. Questo surplus di gradi di libertà non rappresenta un'ambiguità problematica, bensì una risorsa che può essere utilizzata attivamente per obiettivi secondari come l'evitamento di ostacoli, l'evitamento di singolarità o il mantenimento dei giunti vicino al centro del loro raggio di movimento. La cinematica inversa (IK) per i robot ridondanti viene progettata proiettando il gradiente di un obiettivo secondario nello spazio nullo dello Jacobiano (la direzione delle velocità dei giunti che non hanno alcun effetto sulla posizione della mano).

9. Scelte pratiche

Il modo in cui implementare la cinematica dipende dalle caratteristiche del robot. gradi di libertà, applicazione e requisiti in tempo reale.

  • Bracci robotici industriali (saldatura, assemblaggio, ecc., tipicamente a 6 assi): con 6 gradi di libertà, molti meccanismi ammettono una soluzione IK analitica e, in pratica, molti controller dei produttori implementano l'IK analitica direttamente nel firmware. Senza bisogno di calcoli iterativi, questo è veloce e si comporta in modo prevedibile.

  • Bracci robotici con gradi di libertà ridondanti (7+ assi, bracci di robot collaborativi o umanoidi): la risoluzione analitica è difficile o produce soluzioni multiple difficili da gestire, quindi l'IK numerica basata sullo Jacobiano (come i minimi quadrati smorzati) è comune. Rende anche più facile progettare simultaneamente l'evitamento degli ostacoli e delle singolarità attraverso lo spazio nullo.

  • Animazione CG, personaggi di videogiochi, avatar VR/AR: la naturalezza visiva e il basso costo computazionale sono solitamente prioritari rispetto all'accuratezza fisica, favorendo euristiche geometriche leggere come CCD o FABRIK.

  • Mobile Manipolatori (base mobile + braccio) o umanoidi a corpo intero**: è necessario gestire non solo la cinematica inversa (IK) del braccio stesso, ma anche i gradi di libertà ridondanti dell'intero corpo, comprese gambe e busto, in modo integrato, spesso utilizzando un framework che estende i metodi basati sulla matrice jacobiana alla cinematica del corpo intero (IK del corpo intero).

In ogni applicazione, la cinematica non è mai una tecnologia a sé stante: un braccio robotico raggiunge il movimento desiderato solo se combinato con il ciclo di controllo che genera effettivamente i comandi di velocità e coppia delle articolazioni (LQR Primer, MPC Primer) e con il Trajectory Generation Primer, che progetta il percorso che la mano deve seguire lungo l'asse temporale.

10. Riepilogo (Riepilogo in tre righe)

  • Avanti La cinematica determina univocamente la posizione della mano a partire dagli angoli delle articolazioni; la cinematica inversa risolve il problema inverso, ma potrebbero esserci soluzioni multiple o nessuna.

  • La matrice jacobiana collega linearmente la velocità delle articolazioni alla velocità della mano ed è alla base della cinematica inversa numerica tramite la pseudoinversa o il metodo dei minimi quadrati smorzati.

  • Il modo in cui si gestiscono le tre difficoltà di singolarità, soluzioni multiple e gradi di libertà ridondanti determina se la cinematica inversa analitica o numerica sia la scelta giusta.

Verifica la tua comprensione
Esiste una sola configurazione delle articolazioni per una posizione dell'effettore finale?

Potrebbero esistere soluzioni multiple o ridondanza, e alcuni punti potrebbero essere irraggiungibili. Seleziona le soluzioni utilizzando i limiti delle articolazioni, le singolarità e i vincoli di collisione.

Riferimenti

-

What to read next

Review the backgroundNav2 ha un percorso ma non si muove: un flusso di lavoro diagnosticoContinue the seriesIntroduzione al controllo della forza e al controllo dell'impedenza: costruire un robot in grado di toccareExplore another aspect of this fieldPerché ICP fallisce: inizializzazione, valori anomali e geometria simmetrica