Controlador de Pure Pursuit
Pure Pursuit es un algoritmo de seguimiento de trayectorias. Calcula la orden de curvatura que mueve al robot desde su posición actual hasta alcanzar un punto lookahead 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 lookahead por la trayectoria en base a la posición actual del robot hasta el último punto de la trayectoria. 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 lookahead.
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 trayectoria. 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 trayectoria 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 marco 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ón xy 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 lookahead
La propiedad LookAheadDistance es la principal propiedad de ajuste del controlador. La distancia lookahead indica hasta qué punto de la trayectoria debe mirar el robot desde su ubicación actual para calcular los comandos de curvatura. La siguiente figura muestra el robot y el punto lookahead. Como muestra esta imagen, tenga en cuenta que la trayectoria 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 trayectoria. Hay dos objetivos principales: recuperar la trayectoria y mantener la trayectoria. Para recuperar rápidamente la trayectoria entre waypoints, establezca una distancia LookAheadDistance menor y el robot se moverá nuevamente en dirección a la trayectoria. Sin embargo, como muestra la siguiente figura, el robot rebasa la trayectoria y oscila a lo largo de la trayectoria deseada. Para reducir las oscilaciones a lo largo de la trayectoria, establezca una distancia lookahead 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 trayectorias directas entre waypoints con exactitud. Los parámetros deben ajustarse para optimizar el rendimiento y converger con la trayectoria 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.
Consulte también
stateEstimatorPF | controllerVFH (Navigation Toolbox)