Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Controlador de Pure Pursuit

Pure Pursuit es un algoritmo de seguimiento de rutas. Calcula el comando de velocidad angular que desplaza al robot desde su posición actual para alcanzar un punto look-ahead situado delante de él. 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 función de 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. Puede especificar la velocidad lineal y la velocidad angular máximas que desee. Estas propiedades se determinan en función de las especificaciones del vehículo. Dada la pose (posición y orientación) del vehículo como entrada, el objeto se puede usar para calcular los comandos de las velocidades lineales y angulares del 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 marco de coordinadas de referencia que el algoritmo Pure Pursuit usa para las entradas y las salidas. La siguiente figura muestra el sistema de coordenadas de referencia. Los waypoints de entrada son coordenadas [x y] que se usan para calcular los comandos de velocidad del robot. 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 look-ahead

La propiedad LookAheadDistance es la principal propiedad de ajuste del controlador. La distancia look-ahead es la distancia a la que el robot debería mirar desde su ubicación actual para calcular los comandos de velocidad angular. 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 look-ahead 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. Esta respuesta también dependerá de la velocidad lineal y la angular. Considere estas velocidades para el controlador de seguimiento de rutas.

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.

Consulte también

| (Navigation Toolbox)