Percorso di costruzioneIntermedioUn fine settimana

Costruisci un robot Mecanum che si muove lateralmente

Un robot che percorre lateralmente un quadrato di 1 m, torna entro 5 cm senza mai girare e continua a muoversi nella stessa direzione sul pavimento mentre lo fai ruotare.

Schema tecnico: Costruisci un robot Mecanum che si muove lateralmenteBASE_LINKVxVyωzFOUR WHEELS · THREE DEGREES OF FREEDOMROLLERS AT 45° MAKE AN X

Cosa stai costruendo

Un robot a quattro ruote che può muoversi in qualsiasi direzione sul pavimento senza prima girare e che può ruotare senza cambiare la direzione in cui si muove. Spingilo lateralmente lungo un corridoio in cui entra a stento; tieni una camera puntata su qualcosa mentre gli fai un giro intorno; correggi di 3 cm da una linea facendo 3 cm di passi, invece di uscire con un arco e rientrare con un altro.

È il primo robot di questo sito con tre velocità controllabili indipendentemente invece di due. È anche il primo la cui cinematica è genuinamente più difficile dei suoi sensori, ed è per questo che quasi tutta la costruzione riguarda motori, encoder e cicli di controllo.

Il test di accettazione è deliberatamente brutale: percorri un quadrato di 1 m spostandoti lateralmente e torna a casa entro 5 cm con l’orientamento invariato. Nessun robot a trazione differenziale può nemmeno tentare questo test.

Il numero da cui dipende il progetto

Tutto ciò che riguarda questa costruzione si riduce a una costante:

k = lx + ly

dove lx è metà del passo ruota (dall’asse anteriore a quello posteriore, dimezzato) e ly è metà della carreggiata (dalla ruota sinistra a quella destra, dimezzata). Nella costruzione di riferimento, 75 mm e 85 mm, quindi k = 0.160 m.

Quell’unico numero collega la rotazione alle ruote. Se sbagli, il robot guida comunque, ma un comando di pura rotazione si trascina sul pavimento e un puro spostamento laterale curva, perché rotazione e traslazione si contaminano. Misura da centro ruota a centro ruota, non sulla piastra del telaio, che di solito è più larga di quanto pensi.

Gli altri numeri che vale la pena scrivere sul telaio con un pennarello prima di iniziare:

Grandezza Costruzione di riferimento Da dove viene
Raggio ruota r 48.5 mm Ruote mecanum da 97 mm
Conteggi per giro ruota 1440 12 CPR × 30:1 × 4 bordi in quadratura
Metri per conteggio 212 µm 2πr ÷ 1440
Velocità massima ruota V_MAX 0.60 m/s Misurata su blocchi, poi ridotta del 15%
Tetto diagonale 0.424 m/s V_MAX ÷ √2 e nessun aggiornamento dei motori lo rimuove
Tetto di accelerazione 5.9 m/s² μg/√2 a μ = 0.85: la massa si cancella

Lista dei componenti

Componente Quantità Costo indicativo Note
Ruote mecanum, 80 o 97 mm 4 £28–70 Comprale come set di quattro: due ruote destre e due ruote sinistre
Motore con riduttore N20 ed encoder, 30:1 4 £9–14 ciascuno Abbinati. 100–250 rpm alla ruota è la fascia utile
H-bridge doppio TB6612FNG 2 £4–8 ciascuno Un L298N funziona e spreca ~3 V; su un pacco 2S è quasi tutta la velocità
Scheda di sviluppo ESP32 1 £6–12 Quattro canali PWM, quattro coppie di interrupt per encoder e telemetria Wi-Fi inclusa
IMU MPU6050 1 £2–4 Montalo in piano, lontano dai motori, sulla linea centrale del telaio
LiPo 2S, 1500–2200 mAh, 25C 1 £12–20 Dimensionata sulla corrente, non sulla capacità: quattro motori si bloccano a circa 5 A totali
BEC da 5 V o convertitore buck 1 £3–5 Non alimentare l’ESP32 dalla linea dei motori
Piastra del telaio, 200 × 180 mm 1 £10–25 Acrilico tagliato al laser, alluminio da 3 mm, oppure tagliala tu
Supporti motore, mozzi, fissaggi 1 set £8–15 Abbina il foro del mozzo all’albero del motore: 3, 4 o 6 mm
Condensatore elettrolitico di grandi dimensioni, 470 µF 2 £1 Uno su ciascuna linea dei motori del driver

£90–170 totali. Le ruote e il quadruplo numero di motori sono ciò che trasforma i £50 di un robot a due ruote in questo.

Come si collega tutto

        2S LiPo ──┬── 470 µF ── TB6612FNG #1 ── FL motor ── FL encoder ─┐
                  │                         └── FR motor ── FR encoder ─┤
                  ├── 470 µF ── TB6612FNG #2 ── RL motor ── RL encoder ─┼── ESP32
                  │                         └── RR motor ── RR encoder ─┘   (4 PWM,
                  └── 5 V BEC ──────────────────────────────── ESP32 ──────  8 GPIO,
                                                                   │         I²C)
                                                   MPU6050 ── I²C ─┘

Tre decisioni di cablaggio non ovvie:

  • L’ESP32 ha un regolatore proprio. Quattro motori che partono insieme fanno crollare il pacco, e un controllore che condivide quella linea va in brown-out e si riavvia a metà comando. Sembra esattamente un blocco del firmware. Leggi il tutorial sul bilancio di alimentazione prima di dare la colpa al codice.
  • Un condensatore di grandi dimensioni su ciascun driver. 470 µF vicino alla scheda. Gli H-bridge assorbono a raffica e l’induttanza dei cavi trasforma quelle raffiche in picchi.
  • L’IMU va sulla linea centrale, in piano e il più lontano possibile dai motori. La deriva dello yaw è già abbastanza cattiva senza un campo magnetico di quattro motori.

Costruiscilo in traguardi

Ognuno ha un test. Non portare avanti un fallimento: su un robot a quattro motori i fallimenti si moltiplicano.

1. Ruote montate e controllo a X

Bullona le quattro ruote e mettiti direttamente sopra il robot. Segui la linea dei rulli che puoi vedere sopra ogni ruota.

Due viste dall'alto dello stesso robot a quattro ruote, con il muso in alto. Nel pannello superiore, intitolato corretto, una X, il braccio di rotazione lx più ly uguale a 160 millimetri, le linee ciano tratteggiate prolungate dai rulli visibili di ogni ruota si incrociano al centro del robot e formano una X. Nel pannello inferiore, intitolato sbagliato, una O, il braccio di rotazione valore assoluto di lx meno ly uguale a 10 millimetri, le stesse linee delle ruote contrassegnate in rosso formano invece un rombo attorno al robot e non passano mai per il centro. La didascalia dice di mettersi sopra il robot e seguire i rulli visibili sulla parte superiore.
Traguardo 1, e i cinque secondi più economici dell'intera costruzione. Prolunga i rulli che vedi sulla parte superiore di ogni ruota: devono incrociarsi nel centro del robot. Scarica SVG

Test: queste quattro linee puntano al centro del robot e disegnano una X. Se disegnano un rombo, scambia due ruote in diagonale. Risultato positivo: una X. È un controllo di cinque secondi che ti fa risparmiare una giornata.

2. Ogni motore singolarmente

Collega tutti e quattro e scrivi uno sketch che guidi una ruota alla volta al 40% per un secondo.

Test: richiama ciascuna e conferma che la ruota giusta giri nella giusta direzione. Risultato positivo: quattro ruote, quattro direzioni corrette, nessuna coppia scambiata. Correggi il cablaggio nell’hardware, non con segni meno nel codice: perderai il filo.

3. Encoder

Una rivoluzione di ogni ruota, girata a mano.

Test: stampa il conteggio. Risultato positivo: entro il 2% di 1440 e positivo quando la ruota gira in avanti. Un conteggio che salta o corre all’indietro significa che stai interrompendo su un canale invece di due, oppure leggi una volatile long senza disabilitare gli interrupt.

4. Cinematica su blocchi

Metti il robot su blocchi e comanda un puro spostamento laterale.

Test: le coppie diagonali si oppongono— anteriore-sinistra e posteriore-destra vanno in una direzione, anteriore-destra e posteriore-sinistra nell’altra. Risultato positivo: esattamente questo schema. Poi comanda una pura rotazione: il lato sinistro in una direzione, quello destro nell’altra. Se una ruota non concorda, è nell’angolo sbagliato e il passo 1 ti ha mentito.

5. Un ciclo di velocità

Regola il feed-forward e poi PI su una sola ruota, su blocchi e poi sotto carico.

Test: comanda 0.3 m/s e premi un dito sul pneumatico. Risultato positivo: la velocità si mantiene e il PWM aumenta visibilmente. Fallo bene una volta; le altre tre sono copie con il proprio kS e kV.

6. Tutte e quattro, in linea retta

Quattro cicli, 100 Hz, sul pavimento. Percorri 3 m dritto.

Test: misura la deriva laterale alla fine. Risultato positivo: meno di 20 mm e ripetibile in tre corse. In anello aperto sono tipicamente 80–200 mm e diversi ogni volta.

7. Spostamento laterale di 1 m

Test: guida esattamente un metro di lato e misura sia la distanza sia la variazione di orientamento. Risultato positivo: entro 5 cm, orientamento entro 3°. Una curva costante significa che la costante k è sbagliata; una curva casuale significa che un ciclo di velocità non sta tenendo.

8. IMU e orientamento al campo

Calibra il bias all’avvio e aggiungi il pulsante di reset dell’orientamento.

Test: tieni il comando in avanti e gira il robot a mano per una rotazione completa. Risultato positivo: continua a viaggiare nella stessa direzione sul pavimento. Da fermo, lo yaw deriva meno di 3° al minuto.

9. Il quadrato

Il test di accettazione. Percorri 1 m in avanti, 1 m a destra, 1 m indietro, 1 m a sinistra, senza comandare rotazioni da nessuna parte.

Test: distanza dal punto di partenza e variazione di orientamento. Risultato positivo: entro 5 cm e 3°.

Che aspetto ha un buon risultato

Misura Primo tentativo, anello aperto Regolato, anello chiuso
Deriva laterale su 3 m dritti 80–200 mm, variabile con la batteria Meno di 20 mm, ripetibile
Accuratezza dello spostamento laterale di 1 m 10–20 cm, con una curva visibile Entro 5 cm
Variazione di orientamento sul quadrato per spostamento laterale 10–30° Meno di 3°
Velocità diagonale massima Qualunque velocità sopravviva al clipping 0.42 m/s: il tetto √2, raggiunto pulitamente
Velocità mentre il pacco scende da 8.4 a 7.0 V Scende ~17% Invariata finché i motori non saturano
Errore dell’odometria sul quadrato Non vale la pena misurarlo 2–5 cm su un buon pavimento, molto peggio su uno polveroso

Quell’ultima riga è onesta, non deludente. Su questo gruppo di trazione i rulli che scivolano sono il meccanismo, quindi l’odometria è il numero più debole del robot anche quando tutto funziona. Metti questa aspettativa nel progetto invece di inseguirla.

Note hardware importanti

La chiralità di una ruota è una proprietà del set. Due ruote singole ordinate separatamente dalla stessa scheda sono molto spesso della stessa chiralità. Controlla prima di forare qualsiasi cosa.

Ogni rullo deve girare liberamente. Fai scattare ciascuno a mano prima di montare le ruote. Un rullo bloccato trasforma quell’angolo in una normale ruota puntata di 45° fuori asse, a intermittenza, il che si legge esattamente come un bug software.

Le ruote mecanum sono pesanti. 180–400 g ciascuna, quindi fino a 1.6 kg del robot sono ruote, ed è massa rotante agli estremi dei bracci di momento. Rende il robot pigro ed è il motivo per cui il tetto di accelerazione conta.

Il pavimento è un componente. Cemento lucidato e vinile sono intorno a μ = 0.8. Un pavimento di palestra polveroso, uno strato di spray per capelli usato su un altro robot o una giunzione nel linoleum lo dimezzano localmente, e il robot cambierà comportamento mentre lo attraversa. Guarda cosa fa μ = 0.25 prima di dare la colpa alla regolazione.

Quando va storto

Sintomo Causa Soluzione
In avanti va bene, lateralmente curva e ruota Una ruota è nell’angolo sbagliato Controllo a X; il residuo cinematico sarà grande e stabile
Si sposta lateralmente nel verso opposto al comando Tutte e quattro le ruote sono specchiate Scambia la coppia sinistra con quella destra
Ruotando sul posto si sposta anche k sbagliata, oppure misurata sul telaio Rimisura da centro ruota a centro ruota
Il robot si resetta quando partono tutti e quattro i motori Brown-out, non un blocco Regolatore separato per l’ESP32; condensatori di grandi dimensioni; controlla la resistenza interna del pacco
Diagonale molto più lenta della rettilinea Il tetto √2: funziona come progettato Niente da correggere
Si inclina in curva con qualsiasi controllo automatico Clipping per motore invece di ridimensionare il comando Ridimensiona in base alla ruota peggiore
Va bene a mano, disperato in autonomia Odometria, non controllo IMU per l’orientamento; corse brevi; valuta ruote passive
Una ruota è sempre satura Comando eccessivo, oppure quel motore è il più debole Abbassa V_MAX a ciò che tutte e quattro possono davvero tenere
I conteggi dell’encoder derivano per minuti Bordi mancati ad alta velocità Interrompi su entrambi i canali; controlla che la ISR sia breve

Da dove proseguire

Ruote passive. Due o tre ruote omnidirezionali non alimentate su supporti a molla, con i propri encoder. Non trasmettono coppia e quindi non slittano, e trasformano il numero peggiore di questo robot nel migliore.

Inseguimento di percorsi olonomici. Pure pursuit e Stanley presuppongono un robot che sterza. Una base che può spostarsi lateralmente può fare meglio: traccia posizione e orientamento indipendentemente, perché hai attuatori separati per entrambi.

Una telecamera su una base che mantiene l’orientamento. L’abbinamento naturale: una catena di visione è molto più facile quando la telecamera può restare puntata sul bersaglio mentre la base si riposiziona. È questo il motivo per cui esiste la trazione olonomica.

ROS 2. Questo gruppo di trazione è il primo per cui il cmd_vel, il cui linear.y è ignorato esplicitamente da un robot a trazione differenziale, finalmente significa qualcosa. Sostituire la funzione di conversione da twist a ruote con la versione Mecanum a quattro righe è quasi tutto il lavoro.

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 / 17 completati

100%
Obiettivo

Un robot che percorre un quadrato lateralmente e torna a casa

L'intero progetto

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

Posso costruirlo con un Arduino Uno?

Non comodamente, e il motivo è il numero di pin, non la potenza di calcolo. Quattro ruote richiedono quattro uscite PWM e quattro encoder in quadratura richiedono quattro coppie di pin con interrupt. Un Uno ha sei pin PWM distribuiti su tre timer — e nel momento in cui usi la libreria Servo o tone(), due smettono di funzionare — e soltanto due pin di interrupt esterni. Puoi arrangiarti con gli interrupt al cambio pin e rinunciare a un encoder, ma passerai il fine settimana a litigare con la scheda invece che con il robot. Un ESP32 o un Mega 2560 costa qualche sterlina in più ed elimina completamente il problema. Questa costruzione usa un ESP32 perché offre anche telemetria Wi-Fi, davvero utile quando stai regolando quattro cicli di controllo contemporaneamente.

Quanto costa costruire un robot mecanum?

Circa £90–170 a seconda della dimensione delle ruote e della qualità dei motori, all'incirca il doppio di un robot equivalente a due ruote. Gli aumenti sono prevedibili: quattro ruote mecanum invece di quattro ruote semplici sono la voce più grande, quattro motori invece di due, quattro canali H-bridge, quattro cavi per encoder e una batteria più grande perché quattro motori con riduttore bloccati richiedono il doppio della corrente peggiore. L'aggiornamento del controllore è quello che sorprende le persone: prevedilo all'inizio, non dopo aver forato il telaio.

Perché il mio robot mecanum va bene in avanti ma ruota quando si sposta lateralmente?

Una ruota è nell'angolo sbagliato, e questo è di gran lunga l'errore di costruzione mecanum più comune. In avanti sembra normale perché le componenti laterali si annullano comunque; lo spostamento laterale lo scopre, perché la ruota montata male spinge di traverso rispetto al comando invece che nella sua direzione. Mettiti sopra il robot, guarda dritto in basso e segui i rulli visibili sulla parte superiore di ogni ruota: queste quattro linee dovrebbero puntare al centro del robot e disegnare una X. Se disegnano un rombo, scambia due ruote in diagonale. Puoi vedere esattamente cosa fa una ruota montata al contrario, prima di possederne una, nella preimpostazione del simulatore con una ruota montata al contrario.

Mi serve l'IMU?

Per i test autonomi, no: il robot percorerrà il suo quadrato anche senza. Per guidarlo a mano, sì, entro circa dieci secondi dal momento in cui prendi il controllore. Un robot con trazione olonomica può essere rivolto in una direzione mentre si muove in un'altra, quindi una persona perde subito il senso di dove sia finito il movimento laterale. Il controllo orientato al campo risolve il problema con una matrice di rotazione e deve ricevere un angolo yaw da qualche fonte. È un componente da £2 e sei righe di codice, e ogni squadra che l'ha saltato lo ha aggiunto dopo la prima volta che qualcuno ha portato il robot contro un tavolo.

Quanto è accurata l'odometria su una base mecanum?

È peggio di quella dei robot a due ruote di questo sito, e non è un problema di regolazione. I rulli che scivolano sono il modo in cui avviene il movimento laterale, quindi un encoder della ruota misura la ruota e non necessariamente il pavimento. Prevedi che la navigazione stimata in avanti sia all'incirca buona come per qualsiasi robot a trazione differenziale e quella laterale nettamente peggiore: qualche percento su un buon pavimento, molto di più su uno polveroso. Pianificalo: usa l'IMU per l'orientamento, mantieni brevi le corse autonome e, se il robot deve davvero sapere dove si trova, aggiungi ruote omnidirezionali non alimentate che non trasmettono coppia e quindi non scivolano.

Questo robot può spingere gli oggetti?

Male. Una ruota mecanum può mordere solo lungo l'asse del rullo a 45 gradi, l'attrito limita l'intero vettore di forza e solo la componente lungo la direzione di rotolamento ti sposta davvero: ottieni circa il 71% della trazione che lo stesso robot avrebbe con ruote semplici, prima ancora di considerare che la gomma dei rulli di solito aderisce peggio di un pneumatico. Aggiungere peso non aiuta, perché più massa compra proporzionalmente più attrito e proporzionalmente più inerzia, e i due effetti si annullano esattamente. Se spingere è il punto, costruisci invece un mini sumo robot con ruote semplici: vincerà ogni volta.