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.
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.
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
Componenti
- TelaioSet di ruote MecanumRulli liberi a 45° trasformano quattro motori ordinari in un robot che si sposta lateralmente.
- AttuatoreMotore con encoder N20Un micromotore con ingranaggi metallici e un encoder sul retro, così il robot sa quanto è avanzato davvero.
- DriverDriver per motori TB6612FNGUn ponte H a MOSFET che conserva i volt che hai davvero pagato.
- ControllerESP32Un microcontrollore a doppio nucleo con Wi-Fi e Bluetooth: il passo in avanti senza fili rispetto a Uno.
- SensoreMPU-6050 IMUUn sensore di movimento a sei assi: ecco come il robot percepisce inclinazione, rotazione e accelerazione.
- AlimentazionePacco batteria e alimentazione del robotLa differenza tra un robot che funziona e uno che continua a riavviarsi.
Tutorial in questo percorso
- Principiante · 25 minTrazioni olonomiche: omni, mecanum e swerve a confrontoQuattro trazioni, tre gradi di libertà e ciò che ciascuna ti fa pagare per ottenerli.
- Intermedio · 35 minCinematica delle ruote Mecanum: quattro ruote, tre assiUn rullo a 45° determina l'intera matrice, e con esso una quarta equazione che quasi nessuno usa.
- Intermedio · 35 minControllo a ciclo chiuso della velocità delle ruote con encoderIl feed-forward fa il lavoro, l'integratore corregge e il robot alla fine viaggia dritto.
- Intermedio · 25 minControllo orientato al campo: avanti resta avantiRuota lo stick di meno dell'orientamento e il robot smetterà di contraddire chi lo guida.
- Principiante · 17 min di letturaLeggi gli encoder in quadratura per distanza e velocitàTrasforma gli impulsi di un encoder in quadratura in misure affidabili di direzione, distanza e velocità della ruota.
- Intermedio · 30 minSlittamento delle ruote: deriva e correzione dell'odometriaOgni pagina sull'odometria dice che lo slittamento rovina la stima. Ecco che cos'è e quanto costa.
- 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
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.