Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

Pure Pursuit

Comandos de control de velocidad lineal y angular

Desde R2019b

  • Pure Pursuit block

Bibliotecas:
Robotics System Toolbox / Mobile Robot Algorithms
Navigation Toolbox / Control Algorithms

Descripción

El bloque Pure Pursuit calcula comandos de velocidad lineal y angular para seguir una ruta utilizando un conjunto de puntos de referencia y la pose actual de un vehículo con tracción diferencial. El bloque toma poses actualizadas para actualizar los comandos de velocidad para que el vehículo siga una ruta a lo largo de un conjunto de waypoints deseado. Utilice los parámetros Max angular velocity y Desired linear velocity para actualizar las velocidades según el rendimiento del vehículo.

El parámetro Lookahead distance calcula un punto de anticipación en la ruta, que es un objetivo local instantáneo para el vehículo. El comando de velocidad angular se calcula a partir de este punto. Cambiar Lookahead distance tiene un impacto significativo en el rendimiento del algoritmo. Una mayor distancia de anticipación da como resultado una trayectoria con menos obstáculos, pero puede provocar que el vehículo tome un atajo durante la ruta. Una distancia de anticipación menor puede producir oscilaciones en el seguimiento de la ruta, lo que causaría un comportamiento inestable. Para obtener más información sobre el algoritmo de búsqueda pura, consulte Controlador de Pure Pursuit.

Puertos

Entrada

expandir todo

Pose actual del vehículo, especificada como un vector [x y theta] , que corresponde a la posición y el ángulo de orientación x-y , theta. Los ángulos positivos se miden en el sentido contrario a las agujas del reloj desde el eje positivo x.

Waypoints, especificados como un arreglo de n-por-2 de pares [x y] , donde n es el número de waypoints. Puede generar los puntos de referencia utilizando planificadores de ruta como mobileRobotPRM (Robotics System Toolbox) o especificarlos como un arreglo en Simulink®.

Salida

expandir todo

Velocidad lineal, devuelta como un escalar en metros por segundo.

Tipos de datos: double

Velocidad angular, devuelta como un escalar en radianes por segundo.

Tipos de datos: double

Dirección objetivo del vehículo, devuelta como un escalar en radianes. La dirección de avance del vehículo se considera cero radianes, con ángulos positivos medidos en sentido contrario a las agujas del reloj. Esta salida se puede utilizar como entrada al puerto TargetDir para el bloque Vector Field Histogram .

Dependencias

Para habilitar este puerto, seleccione el parámetro Show TargetDir output port .

Parámetros

expandir todo

Velocidad lineal deseada, especificada como un escalar en metros por segundo. El controlador asume que el vehículo avanza a una velocidad lineal constante y que la velocidad angular calculada es independiente de la velocidad lineal.

Velocidad angular máxima, especificada como un escalar en radianes por segundo. El controlador satura la salida de velocidad angular absoluta a un valor determinado.

Distancia de anticipación, especificada como un escalar en metros. La distancia de anticipación cambia la respuesta del controlador. Un vehículo con una distancia de anticipación mayor produce rutas sin obstáculos pero realiza giros más abiertos en las esquinas. Un vehículo con una distancia de anticipación menor sigue fielmente la ruta y realiza giros bruscos, pero oscila a lo largo de la ruta. Para obtener más información sobre los efectos de la distancia de anticipación, consulte Controlador de Pure Pursuit.

Seleccione este parámetro para habilitar el puerto de salida TargetDir . Este puerto proporciona la dirección objetivo como un ángulo en radianes desde la posición de avance, con ángulos positivos medidos en sentido contrario a las agujas del reloj.

  • Interpreted execution — Simula el modelo usando el intérprete MATLAB® . Esta opción acorta el tiempo de inicio pero tiene una velocidad de simulación más lenta que Code generation. Este modo permite depurar el código fuente del bloque.

  • Code generation : simula el modelo utilizando el código C generado. La primera vez que ejecuta una simulación, Simulink genera código C para el bloque. El código C se reutiliza en simulaciones posteriores, siempre que el modelo no cambie. Esta opción requiere tiempo de inicio adicional, pero la velocidad de las simulaciones posteriores es comparable a Interpreted execution.

Ajustable: No

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.

Historial de versiones

Introducido en R2019b