Come si muove un robot: configurazioni e raggiungibilità dei punti
Nel precedente articolo di Come si muove un robot abbiamo approfondito come un robot viene descritto matematicamente attraverso una catena di link e giunti, introducendo al contempo le due domande principali della robotica:
Cinematica diretta: data una configurazione dei giunti, in che punto si trova il robot?
Cinematica inversa: dato un punto orientato nello spazio, quale configurazione dei giunti deve assumere il robot per raggiungerlo?
Alla prima domanda abbiamo già dato una risposta: data la configurazione, si moltiplicano fra di loro le matrici di trasformazione dai parametri di Denavit-Hartenberg per ottenere posizione e orientamento finale. Il problema inverso invece, è molto più complesso.
I principali ostacoli: esistenza, molteplicità e complessità delle soluzioni
Il primo quesito fondamentale è: il punto che vogliamo raggiungere è effettivamente raggiungibile dal robot?
Per capirlo, definiamo innanzitutto come workspace del robot l’insieme dei punti p raggiungibili con almeno una configurazione degli assi. Si immagini ad esempio un robot planare con 2 link di lunghezza diversa, l1 e l2 con l1 > l2.
Per un punto con una distanza d dalla base del robot, è facile immaginare che se d > l1 + l2, allora il punto risulterà non raggiungibile.
Allo stesso modo, un punto la cui distanza è minore di l1 - l2 si avrà un problema analogo, in nessun modo il punto è raggiungibile dal robot.
In altre parole, nel semplice caso di un robot planare con 2 link di diversa lunghezza, il workspace del robot WS è definibile come l’insieme di tutti i punti p la cui distanza d dalla base del robot è compresa tra ∣l1−l2∣ e l1 + l2 o in termini formali:
WS = {p∈R2 : ∣l1−l2∣ ≤ ∥p∥ ≤ l1 + l2}
Questo primo aspetto è fondamentale ed ha un riscontro pratico in diversi contesti. Se, ad esempio, in un’applicazione di bin picking, il sistema identifica una presa che non appartiene al workspace del robot, questa dovrà essere scartata per evitare che il robot si blocchi.
Cosa succede invece, se il punto è raggiungibile? Immaginiamo un caso leggermente più complesso di un robot planare con 3 link di lunghezza diversa l1 > l2 > l3 e un punto p appartenente al workspace.
Per un robot di questo tipo, possiamo subito identificare almeno due configurazioni del robot per cui il punto è raggiungibile.
La domanda sorge quindi spontanea: quale delle due configurazioni scegliere?
La risposta richiede un’analisi piuttosto profonda, ma in generale i fattori determinanti da tenere in considerazione sono:
Minimo spostamento: scegliere cioè la configurazione più simile a quella di partenza minimizzando appunto lo spostamento dei giunti.
Evitare limiti: su robot reali, i giunti presentano dei limiti meccanici e non possono girare liberamente. Configurazioni dove uno o più giunti sono oltre i limiti, devono essere scartati.
Evitare singolarità: le singolarità sono particolari configurazioni robot dove il robot può avere movimenti bruschi. In altre parole, piccoli cambiamenti della posizione cartesiana, hanno grandi differenze a livello della configurazione del robot, quindi a cambiamenti repentini negli angoli del robot. Questo nella pratica può portare a malfunzionamenti o blocchi inaspettati a causa di velocità eccessive. Solitamente si verificano quando 2 o più assi sono allineati tra di loro.
La scelta della configurazione più idonea è fondamentale in tutti gli aspetti pratici. Tornando all’esempio di un bin picking, è facile immaginare come una scelta non ottimale della configurazione iniziale può portare ad esempio a maggiori tempi ciclo o a collisioni più frequenti con l’ambiente esterno. Su applicazioni di saldatura invece, evitare punti vicino alla singolarità permette di non avere movimenti bruschi o troppo veloci rovinando il processo. Un sistema che scelga la giusta configurazione è perciò fondamentale e permette di rendere applicazioni complesse, fattibili in pochi passaggi.
Una volta scelta la configurazione migliore per un punto raggiungibile, l’ultimo passo è quindi calcolare nella pratica la rotazione dei giunti del nostro robot. Prima di addentrarsi nei dettagli tecnici, è bene capire perché, anche quest’ultimo passaggio, sia delicato e di difficile risoluzione. Sappiamo già come risolvere il problema di cinematica diretta per cui data una configurazione θ, possiamo calcolare il punto finale P tramite una funzione
f(θ) = P
Quello che vogliamo ottenere è quindi la funzione inversa. Osservando le prime equazioni, ci accorgiamo subito che queste presentano variabili di seno e coseno, sono perciò funzioni non lineari (cioè funzioni che non sono polinomiali) che possono risultare complesse, o a volte impossibili, da invertire analiticamente. In altre parole, trovare la funzione inversa nel nostro caso è un procedimento complesso e la semplice analisi può portare ad equazioni non definite. In generale, esistono due approcci per la risoluzione di queste equazioni:
Analitico: se esiste una soluzione analitica, questa è preferibile perchè più veloce e precisa. Spesso si fanno considerazioni geometriche ad hoc in base alla catena cinematica del robot per la risoluzione.
Numerico: necessario se la soluzione è su punti di singolarità, a causa di instabilità numeriche, o in caso di giunti ridondanti, ma più lente a convergere alla soluzione ideale.
Nella maggior parte dei robot industriali, la catena cinematica è costruita in modo che sia possibile ottenere delle soluzioni analitiche, ma le soluzioni sono complesse e riguarderanno un ulteriore articolo.
L’importanza di queste soluzioni è ovvia: un calcolo del posizionamento non corretto porta direttamente a malfunzionamenti e comportamenti imprevedibili del robot e lo rendono perciò inutilizzabile.
I 3 problemi
Abbiamo analizzato velocemente i 3 problemi principali nella cinematica inversa e abbiamo visto come uno dipenda dall’altro:
Raggiungibilità: verifica che il punto sia nel workspace del robot.
Molteplicità: scegliere la miglior configurazione da usare.
Non linearità: risolvere le equazioni con metodi analitici (veloci e completi) o numerici (universali, ma iterativi).
La cinematica inversa è quindi il ponte che permette di comunicare con il robot utilizzando il nostro linguaggio nello spazio cartesiano.
La conoscenza di questi concetti è fondamentale per progettare sistemi che funzionano con precisione e sicurezza nelle varie realtà industriali. La nostra piattaforma Nemesis implementa queste funzionalità per applicazioni guidati da visione artificiale, scegliendo autonomamente i movimenti ottimali per ogni robot.
Nel prossimo articolo vedremo nel dettaglio la risoluzione della cinematica inversa per un classico robot industriale a 6 giunti, entrando nel dettaglio matematico e analizzando tutte le possibili configurazioni.