Costruisci un robot di prelievo e posa che sa quando ha mancato
Un braccio robotico che preleva componenti da un vassoio e li ordina in due contenitori, rileva una presa a vuoto, riprova e registra quanti cicli ha eseguito correttamente.
Cosa stai costruendo
Un braccio robotico che svuota un vassoio. I componenti vanno in uno di due contenitori in base a qualcosa che puoi riconoscere — dimensione, colore, il supporto da cui provengono — e la macchina funziona senza supervisione finché il vassoio non è vuoto o qualcosa non va storto; a quel punto si ferma e indica lo stato in cui si è fermata.
Il robot non è la parte interessante. I kit per braccio robotico a quattro DOF costano £40 e la cinematica è una pagina di trigonometria. La parte interessante è che una macchina di prelievo e posizionamento viene giudicata in percentuale, e passare da «ha funzionato in un video» a «ne ha eseguiti cinquanta di fila» è un problema di ingegneria diverso dal farla semplicemente muovere.
Due cose ti portano al risultato, ed entrambe riguardano la pinza.
Le due decisioni che contano
1. La dita non deve essere rigida
È il punto che sorprende le persone, quindi vale la pena affermarlo chiaramente prima di stampare qualsiasi cosa.
La manopola della pinza è una posizione — un angolo del servomotore. I limiti dell’oggetto sono forze: una soglia oltre la quale cade e una oltre la quale viene distrutto. Il tasso di scambio tra le due è la rigidità di serie k di tutto ciò che si trova tra la paletta del servomotore e l’oggetto, quindi l’intervallo che devi effettivamente puntare è
window (mm) = ( min(F_crush, F_servo) − F_slip ) / k
Una dita stampata rigida è pari a circa 25 N/mm. Un servomotore hobbistico con un braccio di leva da 30 mm risolve circa 0.524 mm di corsa delle dita. Eseguendo i calcoli per una fragola, l’intervallo è 0.108 mm — cinque volte più fine di un passo, il che significa che nessun comando funziona e nessuna quantità di regolazione lo troverà.
| Dita | k | Intervallo | Posizioni del servomotore funzionanti |
|---|---|---|---|
| Stampata rigida | 25 N/mm | 0.108 mm | 0 |
| Rivestimento in schiuma | 4 N/mm | 0.677 mm | 1 |
| Molla in serie | 0.8 N/mm | 3.386 mm | 7 |
| Elemento flessibile stampato | 0.35 N/mm | 7.739 mm | 15 |
Metti una molla a trazione da 40p tra la paletta del servomotore e la dita e il problema scompare. Dimensiona la tua nel laboratorio con il tuo oggetto e il tuo braccio di leva prima di consumare filamento, e leggi forza, stallo e cedevolezza della pinza con servomotore per l’argomentazione completa.
2. Deve esserci un passo di verifica
Il ciclo è avvicinamento, discesa, presa, verifica, sollevamento, trasferimento, posizionamento. Senza lo stato di verifica, ogni guasto è silenzioso: la pinza si chiude sul nulla, il braccio trasporta aria sul tavolo e si apre sul contenitore, mentre il contatore dichiara che ha avuto successo.
Un microswitch a leva all’interno di una dita costa cinquanta penny e un pin di ingresso, ed è il singolo componente con il miglior rapporto valore-costi in questa costruzione. Leggilo dopo un’attesa di 300–400 ms — una dita cedevole oscilla dopo la chiusura e campionare durante l’oscillazione equivale a tirare una moneta — effettua l’eliminazione del rimbalzo su tre letture consecutive e assegna alla macchina a stati uno stato RECOVER con un tentativo limitato. Il tutorial sulla macchina a stati descrive tutto nel dettaglio.
La costruzione, in ordine
- Decidi l’organo terminale. Se i componenti sono piatti e raggiungibili dall’alto, valuta prima una ventosa e una piccola pompa — batterà qualsiasi cosa tu possa stampare. Altrimenti, usa due dita. Tipi di pinza e forza di presa.
- Misura il tuo oggetto. Massa su una bilancia da cucina, forza di schiacciamento sulla stessa bilancia con alcuni componenti sacrificiali e μ con una bilancia da valigia trascinata sul materiale delle pastiglie. Questi tre numeri determinano il progetto, e quelli che trovi online sono sbagliati per il tuo componente.
- Verifica la chiusura delle forze. Se le superfici sulle quali appoggiano le pastiglie sono rastremate di più di
atan(μ), nessuna forza potrà trattenere il componente e ti serve una scanalatura a V o un punto di presa diverso. Attrito e chiusura delle forze. - Dimensiona la pinza nel laboratorio. Braccio di leva in base all’oggetto più largo, poi confronta l’intervallo con il passo del servomotore. Il simulatore della pinza.
- Stampa la pinza con un elemento flessibile o una molla in serie, pastiglie in TPU, un arresto meccanico e un microswitch. Pinza con servomotore.
- Collega correttamente cinque servomotori. PCA9685 su I²C, linea di alimentazione separata per i servomotori e disaccoppiamento. Fallo prima di scrivere il firmware, altrimenti perderai una giornata a eseguire il debug di riavvii che sono un problema di alimentazione.
- Scrivi la macchina a stati, non bloccante, con
VERIFYeRECOVER. Macchina a stati di prelievo e posizionamento. - Limita l’accelerazione con un profilo di movimento, in modo che la presa dimensionata sopravviva al trasferimento.
- Esegui cinquanta cicli e conta.
La misurazione
Cinquanta cicli consecutivi, senza supervisione, con un contatore e un registro degli errori che annota in quale stato si è verificato ogni fallimento. Questo è il risultato richiesto ed è molto più impegnativo di un video.
| Risultato | Cosa significa |
|---|---|
| Oltre il 95% | Hai una macchina. Passa a rilevare la posa anziché codificarla |
| 80–95% | Di solito è la posa di avvicinamento, oppure tempo di assestamento insufficiente prima della verifica |
| Sotto l’80% | Di solito è l’alimentazione, oppure una presa dimensionata senza il termine di accelerazione |
| Fallisce solo verso la fine dell’esecuzione | Riscaldamento dei servomotori op superfici di contatto sporche. Entrambe le cose sono reali e sembrano fantasmi |
La tabella dei guasti nel tutorial sulla macchina a stati collega la maggior parte dei sintomi alle rispettive cause.
Che cosa non fa questo progetto
Non esegue la visione e non pianifica attorno agli ostacoli. Il vassoio si trova in un punto noto, i contenitori in punti noti e il braccio va dove gli viene detto. È una scelta deliberata — lo scopo di questa costruzione è che la presa è un problema separato e più difficile di quanto appaia rispetto al posizionamento, e confonderli è il motivo per cui le prime costruzioni di prelievo e posizionamento si bloccano.
Quando vuoi che il braccio robotico trovi il componente anziché riceverne la posizione, servono calibrazione della camera e posa del marcatore, che si aggiungono a un ciclo di presa funzionante anziché sostituirlo.
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 / 21 completati
Componenti
- TelaioKit braccio robotico 4-DOFBase, spalla, gomito e pinza: la struttura in acrilico o metallo che unisce quattro servomotori.
- AttuatorePinza con servomotoreUn servomotore, due dita e l'unico dato che nessuno nell'annuncio fornisce.
- AttuatoreServomotore SG90Il servomotore da nove grammi presente nella maggior parte di bracci robotici, pinze e sterzi.
- DriverDriver per servomotori PCA9685Pilota 16 servomotori con due pin I²C: la scheda dietro la maggior parte di bracci robotici ed esapodi.
- ControllerArduino UnoLa scheda a 8 bit tollerante con cui la maggior parte delle persone scopre la robotica.
- SensoreMicroswitch a levaL'unico bit di sensazione che dice a un robot che ha già colpito qualcosa.
- AlimentazionePacco batteria e alimentazione del robotLa differenza tra un robot che funziona e uno che continua a riavviarsi.
Tutorial in questo percorso
- Principiante · 30 minTipi di pinza robotica e come dimensionare la forza di presaScegli il tipo di pinza, poi dimensiona la forza includendo il termine che tutti dimenticano: l'accelerazione.
- Intermedio · 25 minDue contatti: attrito e forza di chiusuraPerché l'oggetto schizza fuori per quanto tu stringa e cosa dice davvero il cono di attrito.
- Intermedio · 30 minPinza servo: forza, stallo e vantaggio della complianceIl comando regola una posizione, i limiti impongono forze e la rigidezza è il rapporto di scambio tra le due.
- Intermedio · 35 minMacchina a stati per prelievo, posizionamento e guastiAvvicinati, afferra, verifica, solleva e posa, e scopri che cosa fare quando la verifica fallisce.
- Avanzato · 22 min di letturaCinematica inversa di un braccio robotico a due segmentiScopri perché un braccio a due segmenti ha due soluzioni, dove può e non può raggiungere e cos'è davvero una singolarità.
- Intermedio · 18 min di letturaControlla i servomotori con PCA9685 (driver PWM I²C)Calibra la frequenza PWM e le larghezze d'impulso, poi muovi sedici servomotori da due pin I²C con alimentazione sicura.
- Intermedio · 40 minProfili di movimento: accelerazione trapezoidale e a curva SScala un movimento invece di comandarlo direttamente: profili trapezoidali, limiti di jerk e costo reale della curva S.
- Principiante · 17 min di letturaMacchine a stati finiti per il comportamento del robotSostituisci i condizionali annidati del robot con stati, eventi, transizioni, timeout e ripristino espliciti.
- Principiante · 30 minPerché il robot si riavvia all'avvio dei motoriIl riavvio che sembra un bug del codice è quasi sempre la batteria. Calcola il fabbisogno di corrente, poi misura il collasso.
- Principiante · 30 minPerché delay() blocca i robot: temporizzazione con millis()Un robot fermo dentro delay() è cieco. Sostituiscilo con millis() ed esegui correttamente il confronto durante l'overflow ciclico.
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
Qual è la parte più difficile di una costruzione di prelievo e posizionamento?
Non il braccio robotico né la cinematica — è il fatto che la pinza comanda una posizione mentre l'oggetto dipende da una forza. Con dita stampate rigide, l'intervallo utilizzabile tra far cadere un componente e schiacciarlo è di circa un decimo di millimetro, mentre un passo di un servomotore hobbistico muove le dita di circa mezzo millimetro. Nessun comando cade nell'intervallo. La soluzione è una molla o un elemento flessibile in serie, che amplia l'intervallo in proporzione a 1/k, ed è la decisione che può far riuscire o fallire l'intero progetto. Dimensionala nel simulatore della pinza prima di stampare qualsiasi cosa.
Perché il mio braccio robotico fa cadere il componente quando si muove?
Perché hai dimensionato la presa per il peso, ma il movimento richiede di più. La forza di presa necessaria è m(g + a)·SF/(μ·n), e su un braccio rapido il termine di accelerazione è maggiore della gravità. Una presa che trattiene 58 g fermo a 1.63 N richiede 1.93 N durante un sollevamento di 250 mm in 0.9 s e 2.59 N se lo esegui in 0.35 s — e rilascia circa 40 ms dopo l'inizio del movimento, prima che il braccio abbia percorso una distanza visibile, ed è per questo che appare come un guasto della pinza anziché come un errore aritmetico. Limita l'accelerazione con un profilo di movimento o afferra più forte; di solito il profilo è la soluzione più economica.
Come faccio a sapere se la pinza ha realmente prelevato qualcosa?
Un microswitch a leva sulla faccia interna di una dita, collegato a un pin di ingresso con pull-up. Circa cinquanta penny, un filo e una risposta digitale diretta. Mettilo sulla parte cedevole della dita in modo che scatti a una forza riproducibile, effettua l'eliminazione del rimbalzo in software (tre letture consecutive, non una) e leggilo dopo un'attesa di 300–400 ms, così non campioni l'oscillazione della dita. Anche la misura della corrente funziona e rileva inoltre uno schiacciamento, ma richiede una soglia calibrata e deriva quando la batteria si scarica.
Serve la cinematica inversa per questo progetto?
Non strettamente — puoi insegnare a mano delle pose e memorizzare gli angoli articolari, e per un vassoio e due contenitori fissi è davvero sufficiente. Ti serve la IK quando vuoi un avvicinamento e un allontanamento rettilinei, perché sono spostamenti cartesiani e gli angoli articolari insegnati a mano non te li danno. Poiché avvicinarsi in diagonale a un componente lo rovescia e sollevarlo lungo una curva lo trascina, la maggior parte delle costruzioni finisce per richiedere i tratti rettilinei, e ciò significa la IK.
Quanti servomotori e quanta potenza servono?
Cinque: base, spalla, gomito, polso e pinza. Sono più canali di quanti un Uno debba gestire temporizzando direttamente, quindi usa un PCA9685 su I²C. L'alimentazione è la parte che le persone sottovalutano — cinque servomotori hobbistici in movimento contemporaneamente richiedono ampere di sovracorrente iniziale e il regolatore da 5 V della scheda di sviluppo subirà un brownout, riavviando il controllore a metà presa. Fornisci ai servomotori un'alimentazione propria con massa comune e qualche centinaio di microfarad vicino alla scheda di sviluppo.
Quando è considerato finito?
Cinquanta cicli consecutivi con un contatore e un registro degli errori, senza supervisione. È un obiettivo molto migliore di un video con una sola presa riuscita, perché ti costringe a costruire il passo di verifica, il tentativo limitato e l'alimentazione che non subisce cali di tensione — che sono esattamente le tre cose che distinguono una dimostrazione da una macchina. Sotto il 95% esiste sempre una causa specifica, e il registro indica in quale stato si è verificato il fallimento.