Percorso di costruzioneIntermedioUn fine settimana

Braccio robotico 4-DOF: PCA9685, servomotori e cinematica

Un braccio robotico da scrivania che raggiunge le pose comandate, guidato da PCA9685 e tarato con cinematica inversa compresa in simulazione prima di collegare un solo servomotore.

Schema tecnico: Braccio robotico 4-DOF: PCA9685, servomotori e cinematicaREACHABLE WORKSPACE

Un braccio robotico è il primo progetto in cui un robot smette di muoversi intorno e inizia a fare qualcosa nel mondo. Un seguitore di linea segue; un evitatore di ostacoli si scansa; un braccio raggiunge, posiziona e afferra. Quel passaggio—dal movimento alla manipolazione—introduce l’unica idea su cui è costruito ogni manipolatore: la cinematica, la geometria che collega gli angoli che puoi comandare al punto nello spazio che desideri davvero raggiungere.

Questo percorso di costruzione tratta il braccio esattamente così: una lezione di cinematica che puoi toccare con mano. Inizi comprendendo come un braccio a due segmenti trasforma gli angoli articolari in una posizione dell’utensile e viceversa, raccogli i componenti necessari a un braccio con servomotore e impari cosa fa ciascuno, quindi—prima di spendere denaro o smontare un ingranaggio—esplora la portata, le due soluzioni del gomito e le pose irraggiungibili nel simulatore nel browser. Solo dopo colleghi il braccio reale, calibri a mano i servomotori ed esegui la cinematica inversa sull’hardware.

Segui l’albero tecnico seguente dall’alto in basso. Ogni nodo si apre dopo il completamento dei prerequisiti e i tuoi progressi vengono salvati su questo dispositivo, così puoi costruire il braccio nell’arco di un fine settimana senza perdere il punto in cui eri.

Elenco dei componenti

Componente Quantità Costo approssimativo Note
Arduino Uno 1 $5–8 Qualsiasi scheda di sviluppo funziona — qui comunica soltanto tramite I²C
Driver a 16 canali PCA9685 1 $3 Non strettamente necessario per quattro servomotori, ma è lo strumento giusto
Servo SG90 4 $8 Acquista un MG90S per la spalla — ingranaggi metallici, perché è l’articolazione che cede
Kit braccio 4-DOF 1 $12–25 L’acrilico va bene per imparare; l’alluminio flette molto meno
Alimentatore 5–6 V, ≥3 A 1 $8 Quattro servomotori in stallo contemporaneamente richiedono ~2.6 A
Condensatore da 1000 µF 1 $1 Tra V+, vicino al morsetto
Palette del servomotore di ricambio 1 set $2 Ne monterai una nel modo sbagliato. Lo fa chiunque

Totale: circa $40–60.

Vale la pena valutare due acquisti anziché scegliere quelli predefiniti. Un MG90S con ingranaggi metallici alla spalla costa un dollaro in più ed è l’articolazione che sostiene il peso di tutte le altre; gli ingranaggi in nylon montati lì si rompono sotto un carico prolungato, non per un impatto. E un alimentatore dimensionato per lo stallo, perché il guasto distintivo di un braccio si verifica quando urta il proprio telaio o afferra un oggetto solido e tutti i servomotori vanno in stallo contemporaneamente.

Misura il braccio prima di scrivere qualsiasi codice

La cinematica inversa è un calcolo sulle lunghezze dei segmenti. Questi quattro numeri costituiscono l’intero ingresso, e ottenerli da un annuncio di prodotto anziché da un righello è il motivo più comune per cui un braccio raggiunge con sicurezza il punto sbagliato.

Simbolo Misura da A Tipico
L1 Asse dell’articolazione della spalla Asse dell’articolazione del gomito 90–105 mm
L2 Asse dell’articolazione del gomito Punto di presa effettivo della pinza 80–95 mm

L’ultima riga svolge più lavoro di quanto sembri. Il punto di presa effettivo della pinza si sposta mentre le dita si chiudono, e dimensionare la pinza stessa è un problema distinto dal posizionarla, con vincoli, calcoli e modalità di guasto propri. Se il tuo braccio raggiunge il componente e poi lo fa cadere o lo schiaccia, la risposta non è in questa pagina: inizia dal simulatore della pinza. | h | Superficie del tavolo | Asse dell’articolazione della spalla | 50–70 mm | | d | Asse di rotazione della base | Asse della spalla, in orizzontale | 0–15 mm |

Misura tra gli assi delle articolazioni, non tra i bordi delle staffe. L’asse è il centro dell’incastro di uscita del servomotore, spesso 5–10 mm all’interno della staffa visibile. Su un segmento da 95 mm un errore di 10 mm supera il 10% e produce un braccio sistematicamente corto in un modo che nessun guadagno può correggere.

Queste due lunghezze ti danno subito lo spazio di lavoro:

maximum reach = L1 + L2          e.g. 100 + 90 = 190 mm
minimum reach = |L1 - L2|        e.g. |100 - 90| = 10 mm

Lo spazio di lavoro è un anello, non un disco. Al centro c’è un vuoto che il braccio non può raggiungere fisicamente e un bersaglio vicino alla base che torna come «irraggiungibile» è un comportamento corretto anziché un bug.

Costruiscilo per traguardi

L’ordine di assemblaggio contiene un passo quasi impossibile da annullare in seguito, ed è il passo 2.

# Traguardo La prova Un risultato positivo è
1 Il driver risponde Scansiona il bus I²C Appare 0x40; V+ ha un’alimentazione propria
2 Servomotore in posizione iniziale prima dell’assemblaggio Comanda ciascun servomotore a 90° prima di premere una paletta Ogni paletta è montata nella posa iniziale prevista
3 Finecorsa per ciascun servomotore Parti dal centro e spostati verso l’esterno finché il servomotore ronzia Hai conteggi min/max per ciascun servomotore, non quelli predefiniti della libreria
4 Mappa delle articolazioni registrata Comanda ogni articolazione lungo tutto il suo intervallo Offset, segno e limiti meccanici annotati per tutte e quattro
5 Verifica delle collisioni Fai scorrere ogni articolazione lentamente lungo tutto il suo intervallo Niente colpisce il telaio; i limiti riflettono ciò che hai osservato
6 Cinematica diretta Imposta angoli noti, calcola la posizione dell’utensile e misurala Il valore calcolato e quello misurato coincidono entro pochi millimetri
7 Andata e ritorno Reinserisci la posizione calcolata tramite la IK Gli angoli in uscita corrispondono a quelli in ingresso
8 Tutti e quattro i quadranti Richiedi bersagli davanti, dietro, a sinistra e a destra Funzionano tutti e quattro — se due risultano speculari, hai usato atan anziché atan2
9 Raggiungibilità Richiedi un bersaglio ben oltre L1 + L2 Un chiaro «irraggiungibile» — non un NaN e non uno scatto in avanti
10 Movimento fluido Comanda uno spostamento ampio Interpolato tra i passi, con tutte le articolazioni insieme e senza scatti
11 Ripetibilità Torna alla stessa posa dieci volte da direzioni diverse Dispersione degli arrivi misurata — quel numero è il tuo gioco meccanico

Il traguardo 2 non è recuperabile in seguito. Una paletta del servomotore è scanalata, con circa 20 denti, quindi si inserisce soltanto in posizioni discrete distanti circa 18°. Se monti prima e calibri dopo, potresti trovare un’articolazione il cui intervallo utilizzabile è sfalsato di 40°, senza alcun modo meccanico per correggerlo. Alimenta ciascun servomotore, comanda 90°, poi premi la paletta.

Muovilo sempre con delicatezza

Un servomotore comandato verso un nuovo angolo vi si porta a velocità massima. Su un braccio ciò significa un movimento violento, un picco di corrente su tutti e quattro i servomotori e uno shock meccanico agli ingranaggi in nylon, amplificato dalla leva del braccio stesso.

// Interpolate every joint together, so the tool takes a sensible path and
// no single servo carries the whole transition.
void moveTo(float base, float shoulder, float elbow, int steps, int stepMs) {
  static float cur[3] = {0, 0, 0};
  const float target[3] = {base, shoulder, elbow};

  for (int s = 1; s <= steps; s++) {
    const float t = (float)s / steps;
    for (int j = 0; j < 3; j++) {
      const float a = cur[j] + (target[j] - cur[j]) * t;
      pwm.setPWM(JOINT[j].channel, 0, countsFor(JOINT[j], a));
    }
    delay(stepMs);
  }
  memcpy(cur, target, sizeof(cur));
}

L’interpolazione di tutte le articolazioni contemporaneamente è importante quanto la fluidificazione stessa. Muovere le articolazioni una alla volta costringe l’utensile a percorrere un arco strano nello spazio di lavoro, più lentamente e con molte più probabilità di collidere con qualcosa lungo il percorso.

Come appare un risultato buono

Misura Kit in acrilico, SG90 Alluminio, MG90S
Ripetibilità, stessa direzione di avvicinamento ±3–5 mm ±1–2 mm
Ripetibilità, direzioni di avvicinamento miste ±8–15 mm ±3–5 mm
Portata utile a piena estensione 20–30 g 40–60 g
Cedimento a piena estensione, senza carico 3–8 mm 1–3 mm

La differenza tra le due righe di ripetibilità è il gioco meccanico, la singola maggiore fonte di errore in un braccio hobbistico. Quattro gradi di gioco alla spalla su una portata di 190 mm equivalgono a oltre 13 mm alla pinza. La risposta pratica non è una matematica migliore, ma avvicinarti sempre a un bersaglio dalla stessa direzione, eliminando del tutto il cambio di segno e trasformando un errore di ±13 mm in uno scostamento riproducibile che puoi calibrare ed eliminare.

Risoluzione dei problemi

Sintomo Causa probabile Rimedio
Il braccio raggiunge un punto completamente sbagliato Paletta montata a un angolo arbitrario Riporta ciascun servomotore a 90° prima di montare le palette
L’intervallo di un’articolazione è sfalsato di circa 18° Paletta inserita con un dente dell’ingranaggio fuori posizione Rimuovila e rimontala — il software non può risolvere il problema
Raggiunge correttamente davanti, ma si riflette dietro atan anziché atan2 atan2 risolve tutti e quattro i quadranti
La IK restituisce NaN e il braccio si sporge in avanti Argomento di acos esterno all’intervallo −1..1 Verifica la raggiungibilità prima della trigonometria
I bersagli vicini alla base non funzionano Sono nel vuoto di raggiungibilità minima Comportamento corretto — lo spazio di lavoro è un anello
La scheda di sviluppo si riavvia quando il braccio si muove Corrente dei servomotori attraverso l’Arduino Alimentazione V+ separata, massa comune, condensatore da 1000 µF
Il braccio cede a piena estensione Spalla oltre la coppia confortevole MG90S alla spalla; controbilancio con un elastico
Ronzio mentre mantiene una posa Il servomotore combatte un carico al limite Riduci il carico oppure usa detach quando la presa non è necessaria
Picchi di velocità articolare vicino alla piena estensione Controllo attraverso una singolarità Mantieni i percorsi pianificati entro un margine dal confine
Arriva in posizioni diverse da direzioni diverse Gioco meccanico Avvicinati sempre dalla stessa direzione
Tutti gli angoli sono sistematicamente corti L’oscillatore del PCA9685 non è esattamente a 25 MHz Misura la frequenza di uscita reale e usa setOscillatorFrequency

Dove portarlo in seguito

Aggiungi uno spostamento rettilineo. L’interpolazione nello spazio delle articolazioni, come fa il codice sopra riportato, costringe l’utensile a seguire una curva. L’interpolazione nello spazio cartesiano, calcolando la IK a ogni passo lungo una retta, lo fa avanzare in linea retta, come richiede ogni vero sistema di prelievo e posizionamento. È una piccola modifica ed è il punto in cui le singolarità smettono di essere teoriche: un percorso rettilineo in prossimità della piena estensione richiede velocità articolari enormi.

Aggiungi una camera e passa al controllo a ciclo chiuso. Tutto ciò che hai visto è a ciclo aperto: il braccio va dove gli viene detto e non verifica mai. Una camera che legge un marcatore ArUco sull’oggetto permette al braccio di correggere l’errore lasciato dal gioco meccanico e dal cedimento, ed è così che un braccio economico diventa preciso.

Passa a hardware migliore quando raggiungi il limite. I segmenti in alluminio eliminano gran parte della flessione, i servomotori MG90S eliminano gran parte del gioco meccanico e un braccio 6-DOF aggiunge un polso, così l’angolo di avvicinamento dell’utensile diventa una scelta tua. Nulla di tutto ciò modifica la matematica: il risolutore a due segmenti scritto qui è lo stesso che usa un braccio migliore, ed è esattamente il motivo per cui il telaio economico valeva la pena di costruire per primo.

Roadmap del progetto

Il percorso di costruzione

Segui l'albero tecnologico dai componenti fino a un robot funzionante. Ogni nodo si sblocca quando i suoi prerequisiti sono completati, e i tuoi progressi vengono salvati su questo dispositivo.

0 / 13 completati

100%
Percorso

Cinematica del braccio robotico

Percorso di apprendimento

Apri il percorso
Costruzione

Collega il braccio

40 min

Costruzione

Calibra la posizione iniziale e i limiti dei servomotori

30 min

Costruzione

Esegui la cinematica inversa sull'hardware

45 min

Obiettivo

Braccio robotico 4-DOF completato

L'hai costruito

Componenti

Tutorial in questo percorso

Esercitati prima di cablare

Mettilo a punto nel simulatore

Il percorso di costruzione passa per un laboratorio nel browser. Ottieni qui il comportamento giusto, poi trasferisci le tue impostazioni sul robot reale.

Domande frequenti

Come costruisco un braccio robotico con Arduino?

Monta quattro servomotori su un telaio 4-DOF—base, spalla, gomito e pinza—e controllali con un PCA9685 su I²C, in modo che l'Arduino non esaurisca i pin PWM. Calibra l'intervallo tra angolo e impulso di ciascun servomotore, poi fornisci punti bersaglio a un risolutore di cinematica inversa a due segmenti che restituisce gli angoli di spalla e gomito. Questo percorso di costruzione segue l'intera catena e ti permette di regolare la geometria in un simulatore prima di collegare qualsiasi cosa.

Quanti servomotori servono per un braccio robotico 4-DOF?

Quattro—uno per ogni grado di libertà: una base rotante, una spalla, un gomito e una pinza. Ciascun servomotore richiede il proprio canale PWM, ed è esattamente il motivo per cui un braccio multi-articolato usa un driver PCA9685 anziché i pochi pin PWM hardware dell'Arduino.

Serve un PCA9685 per un braccio robotico?

È lo strumento giusto, anche se non è strettamente necessario. Quattro servomotori funzionano con un Arduino se li alimenti separatamente, ma il PCA9685 libera i timer del microcontrollore, controlla ogni articolazione da due pin I²C e instrada la corrente dei servomotori attraverso la propria alimentazione V+—tenendo così la corrente elevata lontana dalla logica e impedendo alla scheda di sviluppo di andare in brownout.

Devo acquistare i componenti prima di iniziare questo progetto?

No. La cinematica e la risoluzione delle pose funzionano nel simulatore nel browser, quindi puoi comprendere ed esplorare la portata del braccio, le sue due soluzioni e le pose irraggiungibili prima di acquistare qualsiasi cosa. Solo le fasi finali—cablaggio, calibrazione ed esecuzione della IK—richiedono Arduino, PCA9685, servomotore, telaio del braccio e alimentatore fisici.

Come viene usata la cinematica inversa in un braccio robotico?

La cinematica diretta indica dove si trova l'utensile in funzione degli angoli articolari; la cinematica inversa esegue l'operazione utile opposta—dato un punto bersaglio, restituisce gli angoli articolari che lo raggiungono. Per questo braccio, spalla e gomito formano un risolutore planare a due segmenti, la base orienta quel piano e la pinza esegue la presa. Il simulatore ti permette di vedere il risolutore in azione, compresi i punti fuori portata.