Percorso di apprendimentoIntermedio

Inseguimento di percorsi per robot: un percorso di apprendimento

Affida a un robot un elenco di punti di passaggio e fallo percorrerli, riuscendo a dire in metri quanto bene ha fatto.

Pianificare e seguire sono problemi diversi, e quasi tutto il materiale robotico insegna solo il primo. A* ti dà una rotta; nulla al suo interno dice alle ruote cosa fare. Questo percorso è il gradino mancante: tutto ciò che sta tra un elenco di punti di passaggio e un robot che li percorre davvero.

Segui i nodi in ordine. Ognuno è qualcosa che il successivo presuppone, e saltarne uno produce un robot che vaga per un motivo che non riesci a isolare.

Prima di iniziare

Devi avere un robot a trazione differenziale che sai già comandare: due motori, un driver e un ciclo che viene eseguito a velocità costante. Il percorso di controllo dei motori copre tutto questo e questo percorso si aspetta che venga completato prima. Non serve alcuna teoria del controllo; pure pursuit è geometria, non PID.

Cosa saprai fare

  • Convertire i conteggi degli encoder delle ruote in una posa e dire quanto la posa deriva per ogni metro percorso sul tuo pavimento.
  • Fondere un giroscopio con un riferimento assoluto in un orientamento che non si allontana durante una missione.
  • Implementare pure pursuit a partire dalla formula della curvatura, in circa una dozzina di righe, e spiegare ognuna.
  • Scegliere una distanza di anticipo dal ritardo di controllo misurato sul robot invece che per tentativi ed errori, e programmarla in funzione della velocità.
  • Misurare l’errore trasversale al percorso rispetto alla verità di terreno e riportare RMS, caso peggiore e il punto del percorso in cui si trova l’errore.
  • Spiegare perché lo stesso controllore è quattordici volte peggiore con una posizione GPS grezza e correggerlo senza modificare il controllore.

Dove le persone si bloccano

Tarare il controllore quando il problema è la stima. Se il robot pensa di essere sul percorso, segnala errore zero e sterza con sicurezza verso una siepe. Misura rispetto a qualcosa di esterno prima di toccare un guadagno: un metro a nastro basta.

Credere a una simulazione senza ritardo. Un pure pursuit perfettamente cinematico migliora quando l’anticipo si riduce, quindi un modello senza ritardo raccomanda l’unica impostazione che oscilla sull’hardware reale. Inserisci una costante di tempo della sterzata e un ritardo di sensore in ogni modello su cui effettui la taratura.

Una ricerca globale del punto più vicino. È l’implementazione ovvia e fallisce silenziosamente su qualsiasi percorso che si ripiega, associando un segmento che il robot ha percorso un minuto prima. Traccia la lunghezza d’arco, cerca in una finestra attorno ad essa e non permettere mai che l’avanzamento torni indietro.

Risolvere un vertice ambiguo con il segmento entrante. Dopo una curva, entrambi i segmenti adiacenti si proiettano nello stesso punto alla stessa distanza. Se mantieni quello sbagliato, un controllore che sterza in base all’orientamento e all’errore laterale vede circa zero di entrambi mentre esce dritto dalla rotta. È il bug più silenzioso di questa pagina.

Costruiscilo come il rover GPS con punti di passaggio, che segue esattamente questa sequenza: prima all’interno con gli encoder, poi all’aperto con una posizione fusa.

Di cosa hai bisogno

Cosa Perché questo percorso ne ha bisogno Note
Encoder su entrambe le ruote La stima di posa che tutto il resto consuma Non sono opzionali: questo percorso riguarda sapere dove ti trovi
Un giroscopio o IMU Le ruote non possono misurare una rotazione attraversata con uno slittamento MPU-6050 basta
Un ciclo stabile Sia lo stimatore sia il controllore integrano nel tempo Intervallo fisso, oppure passa il tempo trascorso reale
Qualcosa con cui misurare Non puoi tarare il tracciamento senza una verità di terreno Una linea di gesso e un metro a nastro valgono più di qualsiasi telemetria
Un modulo GPS (solo metà per l’esterno) Gli ultimi due nodi All’interno non riuscirà a ottenere una posizione

Perché il percorso segue quest’ordine

Questo percorso è insolito perché i primi cinque nodi non riguardano affatto la sterzata. Essi costruiscono la stima di posa, perché un controllore di percorso che agisce su una posa sbagliata fallisce in un modo che sembra esattamente un controllore mal tarato: il robot segnala errore zero mentre entra in una siepe. Ottenere prima una stima corretta significa che, quando finalmente tarerai un guadagno, potrai credere a ciò che misuri.

Encoder, poi odometria, poi slittamento, in quest’ordine. Ognuno corregge l’ottimismo del precedente. Gli encoder ti dicono che la ruota ha ruotato; l’odometria trasforma due movimenti delle ruote in una posa; lo slittamento ti dice quanto di quella posa è finzione e, in particolare, che l’errore sistematico cresce linearmente con la distanza mentre quello casuale cresce solo con la sua radice quadrata.

L’IMU si aggiunge prima del controllore perché l’orientamento è la parte della posa che conta di più per un robot seguilinea ed è quella che le ruote stimano peggio. Una rotazione su se stesso sfrega entrambi gli pneumatici quasi per definizione, quindi la manovra che cambia maggiormente l’orientamento è quella che l’odometria misura peggio. Un filtro complementare fonda la buona velocità a breve termine del giroscopio con la buona media a lungo termine di un riferimento assoluto, e il risultato è un orientamento che non si allontana.

I profili di movimento precedono pure pursuit perché un robot seguilinea comanda la velocità in modo continuo e un comando di velocità a gradino produce un robot che sobbalza e slitta, reintroducendo proprio l’errore di odometria che hai appena tenuto sotto controllo per tre nodi.

Pure pursuit, poi il laboratorio, poi l’errore trasversale. Il controllore richiede circa una dozzina di righe e la sua geometria è facile; difficile è scegliere l’anticipo e capire se il risultato sia buono. Il laboratorio serve a osservare il compromesso dell’anticipo e il nodo sull’errore trasversale serve a trasformare «guidare bene» in un numero con RMS e caso peggiore.

Il GPS viene per ultimo, e soltanto per ultimo. Non cambia nulla del controllore e cambia tutto della stima. Fallo per ultimo significa che, quando il tracciamento peggiora di quattordici volte, saprai già con certezza che il controllore non è la causa.

Punti di verifica: come sapere che una fase è stata compresa

Fase La verifica Cosa significa superarla
Encoder Spingi il robot per 2 m a mano lungo una linea di gesso I conteggi si convertono in 2000 mm entro il 2%, su entrambe le ruote
Odometria Percorri un quadrato di 1 m e torna al punto di partenza La posa riportata si chiude entro pochi centimetri e puoi indicare l’errore per metro
Slittamento Esegui una rotazione su se stesso e confronta l’orientamento del giroscopio con quello dell’odometria Divergono e puoi dire di quanto: quello scarto è lo sfregamento
Fusione dell’IMU Ruota lentamente il robot di 360°, poi lascialo fermo per due minuti L’orientamento torna a quello iniziale e non deriva da fermo
Profili di movimento Comanda una variazione di velocità a gradino, poi una con profilo Il movimento con profilo non fa stridere gli pneumatici; quello a gradino sì
Pure pursuit Segui una retta con un punto di partenza offset di 0.5 m Converge senza overshoot e puoi indicare l’anticipo in metri
Taratura dell’anticipo Dimezza deliberatamente l’anticipo Oscilla: ora conosci la modalità di guasto e perché un simulatore senza ritardo la nasconde
Errore trasversale al percorso Percorri un otto e registra l’errore rispetto alla verità di terreno Puoi riportare RMS e errore peggiore e dire dove lungo il percorso si trova il peggiore
GPS Registra una posizione statica per dieci minuti senza muoverti Vedi la deriva, in metri, che il tuo controllore inseguirebbe altrimenti

Dove si ferma questo percorso

Questo percorso prende un percorso dato e lo percorre. Non produce il percorso: quello è il percorso di pianificazione e mappatura, e insieme i due costituiscono lo stack di navigazione completo.

Si ferma anche prima di tre cose. L’evitamento degli ostacoli durante l’inseguimento, cioè reagire a qualcosa che compare su un percorso cui hai già impegnato il robot, richiede un pianificatore locale che opera sotto il robot seguilinea ed è un problema genuinamente più difficile di ciascuna metà separata. La sterzata Ackermann e quella omnidirezionale cambiano la geometria: pure pursuit si adatta facilmente a un robot simile a un’auto, ma il passaggio dalla curvatura alla velocità delle ruote qui presentato è specificamente per la trazione differenziale; per una base che può spostarsi lateralmente, inizia dalla trazione olonomica e nota che un robot olonomico può fare senza dubbio meglio di entrambi i controllori qui perché può correggere la posizione senza consumare l’orientamento. E il GPS RTK, che porta la posizione all’aperto dai metri ai centimetri, è ciò che rende davvero preciso l’inseguimento all’aperto: vale la pena sapere che esiste prima di concludere che la navigazione all’aperto sia semplicemente imprecisa.

Percorso di apprendimento

Il percorso

Segui i nodi in ordine: ognuno sblocca il successivo una volta completato. I tuoi progressi vengono salvati su questo dispositivo.

0 / 11 completati

100%
Obiettivo

Porta a termine una missione

Abilità sbloccata

Domande comuni

Domande frequenti

Qual è la differenza tra pianificazione e inseguimento di un percorso?

La pianificazione produce una rotta; l'inseguimento fa guidare le ruote lungo quella rotta. A* ti dà un elenco di punti di passaggio e non dice assolutamente nulla su sterzata, velocità o cosa fare quando il robot si trova mezzo metro a sinistra rispetto al punto previsto. L'inseguimento del percorso è la metà mancante: sapendo dove il robot crede di essere e dove passa il percorso, decidi cosa devono fare le ruote in questo istante. La maggior parte del materiale robotico insegna a fondo la pianificazione e quasi per nulla l'inseguimento, ed è per questo che un robot con un piano corretto vaghi così spesso.

Come scelgo la distanza di anticipo del pure pursuit?

Dal ritardo di controllo misurato sul tuo robot, non per tentativi ed errori. L'anticipo deve essere abbastanza lontano da consentire al robot di arrivarci fisicamente, dato il tempo necessario alla sterzata per rispondere: troppo corto e il robot oscilla, troppo lungo e taglia gli angoli. Misura il tempo tra il comando di una sterzata e la sterzata effettiva, moltiplicalo per la velocità e parti da lì. Poi programma il valore in funzione della velocità: lo stesso robot richiede un anticipo più lungo a 1 m/s che a 0.2 m/s, perché il ritardo a quella velocità vale più distanza.

Perché il mio robot seguilinea funziona nella simulazione ma oscilla sul robot?

Quasi certamente perché la simulazione non ha ritardo. Un modello di pure pursuit puramente cinematico migliora monotonicamente quando l'anticipo si riduce, quindi tararlo su quel modello raccomanda l'anticipo più breve, che è proprio l'impostazione che oscilla sull'hardware. Ogni modello su cui effettui la taratura deve includere una costante di tempo della sterzata e un ritardo di sensore, altrimenti ti insegnerà con sicurezza l'opposto di ciò che serve al robot reale.

Pure pursuit o Stanley: quale controllore di percorso devo usare?

Pure pursuit per robot a trazione differenziale e percorsi lisci; Stanley quando l'accuratezza di tracciamento sull'asse anteriore conta più della fluidità. Pure pursuit sterza verso un punto più avanti sul percorso, il che la rende tollerante e naturalmente fluida, al costo di tagliare gli angoli. Stanley combina direttamente l'errore di orientamento e quello trasversale al percorso: segue più precisamente, ma tollera meno una stima di posa rumorosa. Per un piccolo robot al chiuso, pure pursuit è quasi sempre la prima scelta giusta.

Perché il tracciamento del mio robot è molto peggio all'aperto con il GPS?

Perché il controllore è corretto e la stima di posa non lo è. Una posizione GPS di consumo è precisa a pochi metri e si aggiorna a 1–10 Hz, mentre l'odometria delle ruote è precisa a centimetri e si aggiorna alla velocità con cui la leggi. Se dai allo stesso controllore una posizione che salta di due metri tra un aggiornamento e l'altro, inseguirà i salti. Il problema non è nel controllore: è nel fondere il GPS con l'odometria e una fonte di orientamento, così la posa vista dal controllore è fluida, e nel lasciare che il GPS corregga la deriva lenta invece di comandare il ciclo rapido.

Perché il mio robot esce dalla rotta subito dopo una curva?

È il vertice ambiguo, il bug più silenzioso dell'intero percorso. Subito dopo una curva, entrambi i segmenti adiacenti del percorso si proiettano nello stesso punto alla stessa distanza, quindi una ricerca ingenua del punto più vicino può associare il segmento che il robot ha già percorso. Un controllore che sterza in base all'orientamento e all'errore laterale vede allora circa zero di entrambi mentre esce dritto dalla rotta, dichiarando un tracciamento perfetto per tutto il tempo. Traccia la lunghezza d'arco lungo il percorso, cerca solo in una finestra attorno all'ultima posizione e non permettere mai che l'avanzamento torni indietro.