Cinematica del braccio robotico: dal PWM alla cinematica inversa
Puoi far raggiungere a un braccio con servomotore un punto scelto e comprendere la cinematica diretta e inversa, lo spazio di lavoro e le singolarità prima di usare l'hardware.
La cinematica del braccio robotico è la geometria che collega due elementi che un manipolatore deve conciliare: gli angoli dei giunti che può davvero comandare e la posizione dello strumento che vuoi nello spazio. Procedere in una direzione, dagli angoli alla posizione, è cinematica diretta ed è semplice. Procedere nell’altra, dalla posizione agli angoli, è cinematica inversa, ed è lì che si pongono i problemi interessanti: due soluzioni, limiti non raggiungibili e pose in cui il braccio perde temporaneamente il controllo di una direzione.
Questo percorso costruisce la comprensione dalle basi. Inizi con l’hardware: portare un servomotore a un angolo comandato tramite un driver PCA9685, calibrazione inclusa. Poi impari la geometria: come gli angoli di un braccio a due segmenti determinano la posizione dello strumento e come invertire il calcolo per raggiungere un punto di arrivo. Infine lo esplori in tempo reale nel simulatore, trascinando un punto di arrivo e osservando il risolutore scegliere gli angoli dei giunti, raggiungere il limite dello spazio di lavoro e segnalare gli irraggiungibili.
Segui i nodi in ordine: ogni nodo sblocca il successivo dopo che lo hai completato e i tuoi progressi vengono salvati su questo dispositivo. Quando sarai pronto a costruire il sistema reale, questo percorso prosegue direttamente nel progetto del braccio robotico a 4-DOF.
Prima di iniziare
Devi conoscere la trigonometria, in particolare sin, cos e atan2, e sapere scrivere
una funzione che restituisca due valori. L’esperienza con i servomotori aiuta, ma il percorso la copre.
Nulla qui richiede il braccio fisico: l’intera geometria si può imparare nel simulatore.
Che cosa saprai fare
- Calcolare la posizione dello strumento di un braccio a due segmenti dagli angoli dei giunti, quindi invertire il calcolo per trovare gli angoli che raggiungono un punto.
- Scegliere deliberatamente tra le due soluzioni, gomito in alto o gomito in basso, invece di usare quella restituita dalla matematica.
- Prevedere il limite dello spazio di lavoro raggiungibile e rilevare un punto di arrivo esterno prima che il braccio provi a muoversi.
- Riconoscere una singolarità quando il braccio si avvicina all’estensione completa, dove una piccola variazione della posizione dello strumento richiede una variazione enorme dell’angolo del giunto.
- Misurare il gioco dei tuoi giunti e stabilire quanto dell’errore della pinza dipende dal meccanismo anziché dalla matematica.
Dove le persone si bloccano
Uso di atan invece di atan2. Il normale atan non distingue il quadrante in cui si trova il punto di arrivo,
quindi il braccio raggiunge correttamente i punti di arrivo davanti e si muove simmetricamente dietro. atan2 prende
separatamente le due componenti e gestisce correttamente tutti e quattro i quadranti.
Errore di dominio in acos. Quando il punto di arrivo è più lontano di quanto possano raggiungere i segmenti,
il teorema del coseno produce un argomento fuori dall’intervallo da −1 a 1 e acos restituisce NaN. Questo NaN
entra nel comando del servomotore come angolo privo di significato. Verifica la raggiungibilità prima della
trigonometria, non dopo.
Confondere l’angolo del giunto con quello del servomotore. Lo zero di un servomotore dipende dalla posizione in cui è stata montata la sua aletta e il servomotore può ruotare nel verso opposto ai calcoli. Ogni giunto richiede un offset di calibrazione e forse l’inversione del segno. Saltarlo produce un braccio che si muove fluidamente e termina ben lontano dal punto di arrivo.
Ignorare la gravità in estensione. La geometria presuppone che il braccio vada dove comandato. Un servomotore hobbistico che sostiene un segmento completamente esteso è nel suo caso peggiore di vantaggio meccanico e la posizione reale cede sotto quella comandata, in modo più evidente al limite esterno dello spazio di lavoro.
Regolare un errore meccanico. Se il braccio raggiunge lo stesso punto in modo diverso a seconda del lato da cui arriva, nessun guadagno lo risolve: è gioco di inversione, moltiplicato per tutta la lunghezza del braccio. Quattro gradi alla spalla che azionano un segmento di 150 mm corrispondono a oltre 10 mm alla pinza.
Attraversare una singolarità. Vicino all’estensione completa, la soluzione inversa diventa mal condizionata e un percorso liscio dello strumento si trasforma in un movimento brusco dei giunti. Mantieni i percorsi a una certa distanza dal limite, senza aderirvi.
Che cosa serve
| Componente | Perché serve a questo percorso | Note |
|---|---|---|
sin, cos e atan2 |
L’intero insieme di strumenti matematici | Se sai a cosa serve atan2, sei pronto |
| Una funzione che restituisca due valori | La cinematica inversa restituisce una coppia di angoli, spesso due coppie | Una tupla, una struttura, un parametro di uscita: va bene qualsiasi opzione |
| Un goniometro e un righello | Per confrontare dove si è spostato il braccio con dove gli è stato ordinato di andare | L’unico test onesto di un’implementazione cinematica |
| Un braccio e un PCA9685 (facoltativi) | La parte hardware | La geometria si può imparare interamente nel simulatore |
Perché il percorso segue quest’ordine
Pilotare i servomotori viene prima della geometria, anche se non è ovvio che debba essere così. Il motivo è la calibrazione. Quando puoi comandare un giunto e vedere dove arriva davvero, hai un modo per confrontare ogni risultato successivo con la realtà. Se impari prima la geometria, non hai modo di distinguere un risolutore errato da un’aletta del servomotore montata in modo sbagliato: due guasti molto diversi che appaiono identici a distanza.
Seguono i tipi di braccio, perché spiegano che cos’è un «segmento». I bracci cartesiani, SCARA e delta risolvono lo stesso problema con geometrie completamente diverse; vederne tre chiarisce che la cinematica riguarda la disposizione dei giunti, non un braccio specifico. Spiega anche perché la cinematica inversa di un SCARA è quasi banale e quella di un delta non lo è.
La cinematica inversa viene terza, quando entrambi i prerequisiti sono disponibili. È il cuore del percorso ed è l’unico nodo in cui dedicherai tempo alla matematica.
Il simulatore viene quarto perché rende visibile ciò che è invisibile. Raggiungibilità, i due rami del gomito e singolarità sono fenomeni che puoi dimostrare sulla carta, ma che non capirai davvero fino a quando non avrai trascinato un punto di arrivo sul limite dello spazio di lavoro e osservato cambiare il comportamento del risolutore. Trascinare è anche il modo più rapido per riconoscere la forma dello spazio di lavoro, che è una corona circolare anziché un disco quando i segmenti hanno lunghezze diverse.
Il gioco di inversione chiude il percorso intenzionalmente. È il punto in cui non puoi più migliorare la precisione del braccio con una matematica migliore. Ogni nodo precedente riguarda il calcolo dell’angolo corretto; questo riguarda i millimetri tra l’angolo corretto e la posizione corretta.
Checkpoint: come sapere che una tappa è stata superata
| Tappa | Controllo | Esito positivo |
|---|---|---|
| Pilotaggio dei servomotori | Comanda 0°, 90° e 180° su ogni giunto | L’aletta si posiziona dove comandato e hai annotato offset e segno di ogni giunto |
| Calibrazione PWM | Trova la durata degli impulsi per le vere posizioni limite di ogni servomotore | I valori minimi e massimi sono specifici di ciascun servomotore, non quelli predefiniti della libreria, e nulla ronzia ai limiti |
| Cinematica diretta | Imposta angoli noti, calcola la posizione dello strumento e misurala | Valore calcolato e misurato coincidono entro pochi millimetri |
| Andata e ritorno | Passa una posizione calcolata attraverso la cinematica inversa | Gli angoli ottenuti coincidono con quelli inseriti |
| Gestione dei quadranti | Richiedi punti di arrivo in tutti e quattro i quadranti | Tutti e quattro funzionano: se due si muovono simmetricamente stai usando atan |
| Raggiungibilità | Richiedi un punto di arrivo ben oltre la portata del braccio | Ottieni un chiaro errore di irraggiungibilità, non NaN né uno scatto improvviso |
| Forma dello spazio di lavoro | Mappa nel simulatore il limite raggiungibile | Sai descriverlo e spiegare perché segmenti di lunghezza diversa producono una corona circolare con un foro |
| Rami del gomito | Raggiungi lo stesso punto in entrambi i modi | Entrambi funzionano, ne hai scelto uno deliberatamente e sai spiegare perché |
| Singolarità | Percorri in linea retta uno spostamento dello strumento vicino all’estensione completa | Hai visto il picco di velocità dei giunti e ora prevedi un margine |
| Gioco di inversione | Avvicinati allo stesso punto da entrambe le direzioni e misura | Hai un valore in millimetri alla pinza e non è zero |
Dove termina questo percorso
Questo percorso copre la soluzione planare a due segmenti risolta in forma chiusa: la geometria dietro spalla e gomito di quasi ogni braccio hobbistico. È la cosa giusta da imparare prima perché puoi derivarla, verificarla e vedere esattamente perché si verifica ogni errore.
Si ferma prima di diversi aspetti che incontrerai in seguito. La cinematica generale a n-DOF usa i parametri di Denavit–Hartenberg e le matrici di trasformazione omogenee per descrivere sistematicamente qualsiasi catena di giunti, invece di risolvere a mano la geometria di ogni braccio. La cinematica inversa numerica, con iterazioni basate sul giacobiano, si usa quando non esiste una soluzione in forma chiusa, cioè normalmente oltre quattro o cinque giunti; inoltre degrada in modo controllato vicino alle singolarità, dove una soluzione in forma chiusa smette semplicemente di funzionare.
La risoluzione della ridondanza affronta il caso di un braccio con più giunti di quanti il compito ne vincoli e quindi con infinite soluzioni valide: un problema davvero interessante che questo percorso non deve mai affrontare, perché un braccio a due segmenti ne ha esattamente due.
La dinamica è l’altra metà della manipolazione: la cinematica non dice nulla su forze, inerzia o sulla velocità massima di un giunto senza superare la posizione desiderata. Tutto qui presuppone che il braccio vada dove gli viene ordinato, abbastanza lentamente da rendere valida la presupposizione.
Percorso di apprendimento
Il percorso
Segui i nodi in ordine: ognuno sblocca il successivo una volta completato. I tuoi progressi vengono salvati su questo dispositivo.
0 / 5 completati
Domande comuni
Domande frequenti
Qual è la differenza tra cinematica diretta e cinematica inversa?
La cinematica diretta risponde alla domanda 'dati questi angoli dei giunti, dove si trova lo strumento?'. È un calcolo diretto, ha sempre esattamente una risposta ed è davvero semplice. La cinematica inversa risponde alla domanda utile: 'per posizionare lo strumento qui, quali angoli servono?'. È più difficile sotto ogni aspetto. Può avere due risposte, nessuna se il punto di arrivo è fuori portata oppure infinite se il braccio ha più giunti di quanti ne vincoli il compito. Ogni problema interessante nel controllo di un braccio si trova sul versante inverso.
Perché il mio braccio robotico si muove nel verso sbagliato per punti di arrivo dietro di sé?
Quasi certamente stai usando atan invece di atan2. Il normale atan prende un singolo rapporto e non distingue un punto di arrivo davanti dalla sua immagine speculare dietro, perché entrambi producono lo stesso quoziente: il braccio raggiunge correttamente il punto di arrivo in due quadranti e si muove simmetricamente negli altri due. atan2 prende separatamente le due componenti e risolve correttamente tutti e quattro i quadranti. È il bug più comune nella prima implementazione della cinematica inversa e si manifesta come un braccio che funziona perfettamente finché non gli richiedi di raggiungere qualcosa dietro di sé.
Nella cinematica inversa, che differenza c'è tra gomito in alto e gomito in basso?
Per un braccio a due segmenti, quasi ogni punto raggiungibile può essere raggiunto in due modi diversi, con il gomito piegato verso l'alto o verso il basso. La matematica restituisce entrambi perché sono entrambi corretti. Quale preferisci dipende dall'ambiente del braccio: una soluzione può collidere con il tavolo o con il pezzo da lavorare, oppure far ruotare il cavo. L'importante è scegliere in modo deliberato e coerente, perché passare silenziosamente da un ramo all'altro a metà percorso fa compiere al braccio un movimento ampio, rapido e non pianificato.
Perché il mio codice IK restituisce NaN?
Perché il punto di arrivo è più lontano di quanto possano raggiungere i segmenti e il teorema del coseno ha prodotto un argomento fuori dall'intervallo da −1 a 1 accettato da acos. NaN finisce quindi direttamente nel comando del servomotore come angolo privo di significato; è per questo che un punto di arrivo irraggiungibile produce spesso un movimento violento anziché il rifiuto di muoversi. Verifica la raggiungibilità prima di eseguire la trigonometria: confronta la distanza con la somma e la differenza delle lunghezze dei segmenti e restituisci 'irraggiungibile' come risultato reale invece di lasciare che lo scopra acos.
Che cos'è una singolarità di un braccio robotico?
È una configurazione in cui il braccio perde temporaneamente la possibilità di muovere lo strumento in una certa direzione, indipendentemente da come muove i giunti. Su un braccio a due segmenti, quella evidente è l'estensione completa: con il braccio completamente disteso è impossibile allontanare ulteriormente lo strumento, mentre spostarlo di poco in quella direzione richiede una variazione enorme dell'angolo del giunto. La conseguenza pratica è che un percorso liscio dello strumento vicino all'estensione completa diventa un movimento brusco dei giunti. Mantieni i percorsi pianificati a una certa distanza dal limite dello spazio di lavoro, non esattamente sul limite.
Perché il mio braccio non termina dove dovrebbe secondo i calcoli?
Tre cause, in ordine approssimativo di probabilità. Calibrazione: lo zero di un servomotore dipende dalla posizione in cui è stata montata la sua aletta e il servomotore può ruotare nel verso opposto alla convenzione scelta, quindi ogni giunto richiede un offset e forse l'inversione del segno. Gravità: un servomotore hobbistico che sostiene un segmento completamente esteso è nel suo caso peggiore di vantaggio meccanico e semplicemente cede sotto l'angolo comandato. E gioco di inversione: quattro gradi di gioco alla spalla che azionano un segmento di 150 mm producono oltre 10 mm di errore alla pinza, con segno diverso a seconda della direzione di avvicinamento.