Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

Pure Pursuit Controller

Il puro inseguimento è un algoritmo di tracciamento del percorso. Calcola il comando di velocità angolare che sposta il robot dalla sua posizione attuale per raggiungere un punto di riferimento di fronte al robot. La velocità lineare è considerata costante, quindi è possibile modificare la velocità lineare del robot in qualsiasi punto. L'algoritmo sposta quindi il punto di previsione sul percorso in base alla posizione corrente del robot fino all'ultimo punto del percorso. Si può pensare a questo come a un robot che insegue costantemente un punto davanti a sé. La proprietà LookAheadDistance determina la distanza a cui viene posizionato il punto di sguardo anticipato.

L'oggetto controllerPurePursuit non è un controller tradizionale, ma funge da algoritmo di tracciamento per scopi di tracciamento del percorso. Il tuo controller è univoco e può essere associato a un elenco specifico di waypoint. È possibile specificare la velocità lineare e la velocità angolare massima desiderate. Queste proprietà vengono determinate in base alle specifiche del veicolo. Dato come input la posa (posizione e orientamento) del veicolo, l'oggetto può essere utilizzato per calcolare i comandi di velocità lineare e angolare per il robot. Il modo in cui il robot utilizza questi comandi dipende dal sistema in uso, quindi bisogna considerare come i robot possono eseguire un movimento dati questi comandi. L'ultima proprietà importante è LookAheadDistance, che indica al robot a quale punto del percorso deve dirigersi. Questa proprietà è spiegata più in dettaglio nella sezione sottostante.

Sistema di coordinate di riferimento

È importante comprendere il sistema di coordinate di riferimento utilizzato dall'algoritmo di inseguimento puro per i suoi input e output. La figura seguente mostra il sistema di coordinate di riferimento. I waypoint di input sono coordinate [x y], utilizzate per calcolare i comandi di velocità del robot. La posa del robot è composta da una posizione xy e da un angolo nella forma [x y theta]. Le direzioni positive x e y sono rispettivamente verso destra e verso l'alto (in blu nella figura). Il valore theta è l'orientamento angolare del robot misurato in senso antiorario in radianti dall'asse x (robot attualmente a 0 radianti).

Distanza di sguardo avanti

La proprietà LookAheadDistance è la proprietà di ottimizzazione principale del controller. La distanza di previsione indica la distanza lungo il percorso a cui il robot deve guardare dalla posizione attuale per calcolare i comandi di velocità angolare. La figura seguente mostra il robot e il punto di previsione. Come mostrato in questa immagine, si noti che il percorso effettivo non corrisponde alla linea retta tra i waypoint.

L'effetto della modifica di questo parametro può cambiare il modo in cui il robot traccia il percorso, con due obiettivi principali: recuperare il percorso e mantenerlo. Per riprendere rapidamente il percorso tra i waypoint, un piccolo LookAheadDistance farà sì che il robot si muova rapidamente verso il percorso. Tuttavia, come si può vedere nella figura sottostante, il robot oltrepassa il percorso e oscilla lungo il percorso desiderato. Per ridurre le oscillazioni lungo il percorso, è possibile scegliere una distanza di previsione maggiore, ma ciò potrebbe comportare curvature maggiori in prossimità degli angoli.

La proprietà LookAheadDistance deve essere ottimizzata per l'applicazione e il sistema robotico. Anche diverse velocità lineari e angolari influiranno su questa risposta e dovrebbero essere prese in considerazione per il controller che segue il percorso.

Limitazioni

Ci sono alcune limitazioni da notare riguardo a questo algoritmo di inseguimento puro:

  • Come mostrato sopra, il controller non può seguire esattamente percorsi diretti tra i waypoint. I parametri devono essere regolati per ottimizzare le prestazioni e convergere verso il percorso nel tempo.

  • Questo algoritmo di inseguimento puro non stabilizza il robot in un punto. Nella tua applicazione, dovresti applicare una soglia di distanza per la posizione di un obiettivo per arrestare il robot in prossimità dell'obiettivo desiderato.

Riferimenti

[1] Coulter, R. Implementation of the Pure Pursuit Path Tracking Algorithm. Carnegie Mellon University, Pittsburgh, Pennsylvania, Jan 1990.

Vedi anche

|