Percorso di costruzioneAvanzatoDue o tre fine settimana

Costruisci un rover GPS autonomo tra punti di passaggio

Un rover che percorre da solo un elenco salvato di punti di passaggio GPS attraverso un campo, mantiene la traiettoria entro un metro e si ferma se esce dal geofence.

Schema tecnico: Costruisci un rover GPS autonomo tra punti di passaggioLOOKAHEADGOAL POINTCOMMANDED PATH

Cosa stai costruendo

Un robot a cui consegni un elenco di coordinate: lo metti sull’erba e poi ti allontani.

Ogni altro robot mobile di questo sito reagisce a ciò che ha direttamente davanti: una linea, un muro, un ostacolo, un bordo. Questo esegue un piano, in un mondo senza punti di riferimento, usando un sensore che gli mente poche volte al minuto. Quella combinazione è ciò che lo rende la costruzione mobile più difficile qui e quella che insegna di più.

Le tre cose che lo decidono

Il robot seguilinea è la parte facile. Pure pursuit è dodici righe e un solo parametro. Con una stima perfetta della posizione mantiene 0.09 m di errore RMS sul percorso di laboratorio.

La stima della posizione è tutto il progetto. Lo stesso controllore, alimentato con un fix GPS a 1 Hz con rumore su scala metrica, mantiene 1.25 m: quattordici volte peggio, e richiede quattro volte e mezza più sterzata per farlo. Il controllore contribuisce per meno di un decimo dell’errore finale.

Quindi l’ordine di costruzione è: robot seguilinea al chiuso, stima all’aperto. Dimostra la sterzata dove la posizione è quasi esatta, poi vai a combattere il sensore. Fare entrambe le cose insieme produce un robot che vaga per motivi che non puoi separare.

Lista dei componenti

Componente Quantità Costo indicativo Note
Arduino Uno o Mega 1 $5–12 Un Mega vale la pena: quattro pin di interrupt per la decodifica completa ×4 degli encoder, più UART liberi
Modulo GPS (NEO-6M) 1 $8–12 Un NEO-M8N è il miglior aggiornamento qui: multi-constellazione e geometria migliore
MPU-6050 1 $2 Orientamento tra un fix e l’altro. Senza, il rover non sa in che direzione è rivolto
Motori N20 con encoder 2 $16 Gli encoder non sono opzionali in questa costruzione
TB6612FNG 1 $3
Telaio 2WD 1 $10–20 Ruote più grandi aiutano all’aperto; l’erba è crudele con una ruota da 65 mm
Pacco batteria 1 $10 2×18650 protette, oppure 3S con regolatore
Supporto per antenna alta 1 $2 L’antenna patch ha bisogno di cielo, non di una vista: il metallo sopra di essa costa satelliti

Totale: circa $55–80.

La scelta che cambia di più il progetto è il ricevitore. Un NEO-6M funziona ed è ciò che la maggior parte dei tutorial presuppone; un NEO-M8N vede GPS più GLONASS e Galileo, il che migliora la geometria dei satelliti e quindi l’HDOP. Vicino agli edifici e agli alberi, dove un rover guida davvero, è un miglioramento reale maggiore di quanto suggerisca la specifica di precisione.

Non saltare gli encoder per risparmiare $12. Tutto questo progetto è una navigazione stimata corretta da correzioni occasionali; senza encoder non c’è nulla da stimare e il rover si limita a inseguire il rumore del GPS.

Ordine di costruzione

1 — Regola il robot seguilinea nel simulatore. Un’ora nel laboratorio di inseguimento del percorso alla velocità che intendi percorrere. Trova l’anticipo in cui la curva dell’errore raggiunge il minimo; nota che si sposta quando cambi la velocità.

2 — Costruisci il gruppo di trazione e fai funzionare l’odometria. Encoder nell’odometria a trazione differenziale, poi percorri un quadrato di 2 m e vedi quanto lontano dal punto di partenza finisci. Quel numero è il tuo budget al chiuso.

3 — Fondi un orientamento. Un giroscopio alla frequenza del ciclo, corretto da qualcosa di assoluto. L’errore di orientamento è il termine che entrambi i controllori pesano di più ed è la prima cosa che l’odometria perde: il filtro complementare che stabilizza un robot bilanciato fa qui lo stesso lavoro.

4 — Segui un percorso nastrato al chiuso. Nessun GPS. Traccia un percorso sul pavimento, esegui il pure pursuit sulla stima degli encoder e misura l’errore trasversale con un righello in dieci punti. Se al chiuso non resta sotto i 10 cm, all’aperto non resterà sotto un metro.

5 — Aggiungi il ricevitore e non collegarlo ancora al controllore. Registra i fix per dieci minuti mentre il rover resta fermo, e tracciali. Vedrai il rumore, la deviazione occasionale e come l’HDOP li segua entrambi. Quel grafico vale più di qualsiasi dato di un foglio dati.

6 — Fondi, non inseguire. Fai una navigazione stimata alla frequenza del ciclo; tira delicatamente la stima verso ogni buon fix. L’aritmetica e il filtro dell’HDOP sono qui. Rifiuta qualsiasi cosa con stato void o HDOP superiore a circa 2.5.

7 — Geofence, poi esci all’aperto. Distanza massima dall’inizio, timeout della missione, interruzione fisica. Poi una missione breve, sull’erba, mentre cammini accanto al rover.

Note hardware importanti

Monta l’antenna in alto, rivolta verso il cielo e lontana da tutto. Un’antenna patch ceramica sotto una piastra del telaio perde satelliti, e perdere satelliti significa una geometria peggiore anziché l’assenza di un fix: una risposta sbagliata ma sicura invece di un fallimento evidente.

Ruote più grandi di quanto ti suggerisca l’istinto da al chiuso. Erba, ghiaia e bordo del prato sono problemi di diametro delle ruote. Cambiano anche il fattore di scala dell’odometria, quindi ricalibra sulla superficie sulla quale guiderai davvero.

Tieni il magnetometro lontano dai motori, oppure omettilo. La corrente dei motori produce un campo che sovrasta quello terrestre. Se non puoi ottenere 15 cm di separazione, usa giroscopio più course-over-ground ed evita il problema.

Registra la missione. Un guasto all’aperto che non hai registrato è un guasto che non puoi fare debug: il robot era a 40 m e tu non stavi guardando la porta seriale. Una scheda SD o un log Wi-Fi di posa, fix, HDOP ed errore trasversale trasforma ogni corsa in una prova.

Aspettati che la prima corsa all’aperto finisca prima. È proprio a questo che serve il geofence, ed è un successo.

Che aspetto ha un buon risultato

Misura GPS grezzo in inseguimento Fuso con l’odometria
Errore trasversale, RMS 3–5 m 0.3–0.6 m
Errore trasversale, caso peggiore 8–12 m 1.0–1.5 m
Attività di sterzata Costante, correzioni ampie Fluida, occasionale
Tolleranza di arrivo al punto di passaggio 5 m, e anche quelli sono ottimistici 0.5–1 m
Dispersione della posizione statica, fermo Nuvola di 2–4 m N/A: l’odometria lo mantiene fermo

La prima colonna non indica un rover costruito male; è ciò che un fix a 2.5 m CEP a 1 Hz provoca in un controllore che gli crede. Il miglioramento di un ordine di grandezza nella seconda colonna viene dallo stimatore, non dal controllore: è lo stesso codice di pure pursuit, alimentato con una posa fusa.

Prima di scrivere il codice di navigazione, fai questo una volta: lascia il ricevitore fermo all’aperto per dieci minuti e registra ogni fix. La nuvola che ottieni è larga diversi metri e non si è mosso niente. Quel grafico è la cosa più utile che puoi osservare in questo progetto, perché spiega perché inseguire i fix grezzi non può funzionare e perché il fix è a monte del controllore.

Quando va storto

Sintomo Di solito
Oscilla lungo un tratto rettilineo all’aperto, ma va bene al chiuso Sta inseguendo i fix grezzi invece di fonderli
Oscilla anche al chiuso Anticipo troppo corto per il ritardo; regolalo di nuovo nel laboratorio
Taglia fuori ogni curva Anticipo troppo lungo: è il compromesso, non un bug
Posizione sicura ma fuori di decine di metri Geometria satellitare scarsa; non hai applicato il filtro sull’HDOP
Parte nella direzione sbagliata da fermo Nessun orientamento utilizzabile; il course-over-ground è rumore sotto ~1 m/s
Deriva costantemente da un lato Scala dell’odometria o larghezza della carreggiata sbagliate per questa superficie
Non succede nulla per i primi due minuti Avvio a freddo del GPS. Mostralo, non dare per scontato l’origine
Ha lasciato il campo Il geofence non è stato scritto prima della prova

Sei degli otto riguardano più il rilevamento che il controllo: è la stessa distribuzione del micromouse e del robot per la copertura, e per la stessa ragione: l’algoritmo è la parte piccola.

Per seguire l’intera sequenza in ordine, segui il percorso di apprendimento per l’inseguimento del percorso; per la versione al chiuso dello stesso problema, il robot per la copertura della stanza ha bisogno di un piano e non di una posizione assoluta.

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

100%
Percorso

Inseguimento del percorso e navigazione

Percorso di apprendimento

Apri il percorso
Costruzione

Segui prima un percorso al chiuso

Costruzione

Costruzione

Imponi il geofence prima della prima prova sul campo

Costruzione

Obiettivo

Percorri una missione da solo

Obiettivo

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

Perché costruire il robot seguilinea al chiuso prima di aggiungere il GPS?

Perché se costruisci entrambe le cose insieme e il robot vagola, non puoi capire quale metà è sbagliata. Al chiuso con gli encoder la stima della posizione è precisa entro pochi centimetri su un percorso nastrato, quindi ogni errore che vedi è del controllore. Regola l'anticipo lì, misura l'errore trasversale con un righello e solo dopo introduci un sensore rumoroso, in ritardo e ogni tanto sicuro di sé ma sbagliato. Ogni ora spesa in quest'ordine viene ripagata due volte.

Quanto può essere preciso nella realtà un rover GPS hobbistico?

Circa un metro di errore trasversale in una buona giornata, ed è il ricevitore a determinarlo, non il controllore. Misurato con lo stesso pure pursuit sullo stesso percorso, una stima perfetta della posizione dà 0.09 metri di errore RMS e un fix a 1 Hz con rumore su scala metrica dà 1.25: il controllore contribuisce quindi per meno di un decimo del totale. Se ti serve di meglio, l'aggiornamento è un ricevitore più veloce e multi-constellazione, poi RTK, non altra regolazione.

Mi serve anche un magnetometro oltre al giroscopio?

Ti serve un riferimento assoluto per l'orientamento e hai tre opzioni. Un magnetometro lo fornisce da fermo, ma richiede calibrazione del ferro duro e morbido e odia trovarsi vicino ai motori. Un giroscopio è eccellente per decine di secondi e poi deriva. Il course-over-ground del GPS è assoluto e gratuito, ma ha significato solo sopra circa un metro al secondo. La risposta usuale per un rover è un giroscopio per la frequenza del ciclo, corretto dal course-over-ground quando il robot si muove abbastanza velocemente da potergli credere: è ciò che fa questa costruzione, ed evita del tutto la calibrazione.

A che velocità deve viaggiare?

Più lentamente di quanto consentano i motori, e il simulatore ti dirà perché. Il miglior errore trasversale ottenibile aumenta con la velocità, qualunque cosa tu regoli: 0.05 metri a 1 m/s diventano 0.23 a 3 m/s in laboratorio con una stima perfetta della posizione. All'aperto domina comunque il ricevitore, quindi c'è poco da guadagnare dalla velocità e moltissimo da perdere alla prima prova sul campo. Parti a 0.5 m/s.

Che cosa gli impedisce di finire in una strada o in uno stagno?

Un geofence che scrivi prima della prima corsa all'aperto: una distanza massima dall'inizio della missione, controllata in cima al ciclo, che ferma i motori incondizionatamente. Aggiungi un timeout della missione e un'interruzione fisica a tua portata: un interruttore a urto sul piano superiore funziona e non richiede un collegamento radio. Sono dieci righe di codice e la differenza tra un bug e un robot in acqua.

Posso usare un ESP32 invece di un Uno?

Sì, e per questo progetto è la scelta migliore. Ottieni una seconda porta seriale hardware per il GPS senza software serial, molta più memoria per un elenco di punti di passaggio, una matematica in virgola mobile non dolorosa e Wi-Fi per registrare la missione su un portatile, lo strumento di debug più utile che un robot da esterno possa avere. L'Uno funziona; l'ESP32 elimina tre fastidi.