Controlador de Pure Pursuit
Pure Pursuit es un algoritmo de seguimiento de rutas. Calcula la orden de curvatura que mueve al robot desde su posición actual hasta alcanzar un punto de anticipación situado delante del robot. La velocidad lineal se asume constante, por lo que puede modificar la velocidad lineal del robot en cualquier momento. Luego, el algoritmo desplaza el punto look-ahead por la ruta en base a la posición actual del robot hasta el último punto de la ruta. Es como si el robot estuviera persiguiendo un punto que tiene delante. La propiedad LookAheadDistance determina la distancia a la que se sitúa el punto look-ahead.
El objeto controllerPurePursuit no es un controlador tradicional, pero actúa como un algoritmo de seguimiento a la hora de realizar el seguimiento de la ruta. El controlador es único para una lista de waypoints especificada. Se puede especificar la velocidad lineal deseada y la curvatura máxima. Estas propiedades se determinan en base a las especificaciones del vehículo. Dada la pose (posición y orientación) del vehículo como dato de entrada, el objeto puede utilizarse para calcular las órdenes lineales y de curvatura para el robot. La forma en que el robot utiliza estos comandos depende del sistema que use, de modo que considere cómo los robots pueden ejecutar un movimiento con estos comandos. La última propiedad importante es LookAheadDistance, que informa al robot hasta qué punto de la ruta debe desplazarse. Esta propiedad se explica con más detalle en una de las secciones que aparecen luego.
Sistema de coordenadas de referencia
Es importante comprender el sistema de referencia de coordinadas que el algoritmo Pure Pursuit usa para las entradas y las salidas. La siguiente figura muestra el sistema de coordenadas de referencia. Los puntos de referencia de entrada son coordenadas [x y], que se utilizan para calcular la velocidad lineal del robot y los comandos de curvatura. La pose del robot está formada por una posiciónxy y un ángulo con el formato [x y theta]. Las direcciones positivas x e y se encuentran en las direcciones derecha y arriba, respectivamente (las líneas de color azul de la figura). El valor theta es la orientación angular del robot medida en radianes en el sentido contrario a las agujas del reloj desde el eje x (el robot se encuentra actualmente a 0 radianes).

Distancia de anticipación
La propiedad LookAheadDistance es la principal propiedad de ajuste del controlador. La distancia de anticipación indica hasta qué punto del camino debe mirar el robot desde su ubicación actual para calcular los comandos de curvatura. La siguiente figura muestra el robot y el punto look-ahead. Como muestra esta imagen, tenga en cuenta que la ruta real no coincide con la línea directa entre los waypoints.

La modificación de este parámetro puede afectar a la forma en que el robot sigue la ruta. Hay dos objetivos principales: recuperar la ruta y mantener la ruta. Para recuperar rápidamente la ruta entre waypoints, establezca una distancia LookAheadDistance menor y el robot se moverá nuevamente en dirección a la ruta. Sin embargo, como muestra la siguiente figura, el robot rebasa la ruta y oscila a lo largo de la ruta deseada. Para reducir las oscilaciones a lo largo de la ruta, establezca una distancia de anticipación mayor. Sin embargo, esto podría provocar curvaturas mayores cerca de las esquinas.

Debe ajustar la propiedad LookAheadDistance para la aplicación y el sistema del robot. Las diferentes velocidades lineales y curvaturas también afectarán a esta respuesta y deben tenerse en cuenta para el controlador de seguimiento de trayectoria.
Limitaciones
Existen algunas limitaciones que debe tener en cuenta respecto al algoritmo Pure Pursuit:
Como se ha indicado anteriormente, el controlador no puede seguir las rutas directas entre waypoints con exactitud. Los parámetros deben ajustarse para optimizar el rendimiento y converger con la ruta a lo largo del tiempo.
El algoritmo Pure Pursuit no estabiliza el robot en un punto. En la aplicación, debe aplicar un umbral de distancia a una ubicación objetivo para detener el robot cerca del objetivo deseado.
Referencias
[1] Coulter, R. Implementation of the Pure Pursuit Path Tracking Algorithm. Carnegie Mellon University, Pittsburgh, Pennsylvania, Jan 1990.