Contenido principal

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

  • Pure Pursuit block

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

Descripción

El bloque Pure Pursuit calcula los comandos de velocidad lineal y angular para seguir una ruta usando un conjunto de waypoints y la pose actual de un vehículo de 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. Use los parámetros Max angular velocity y Desired linear velocity para actualizar las velocidades en función del rendimiento del vehículo.

El parámetro y el puerto de distancia look-ahead calculan un punto look-ahead 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 la distancia look-ahead tiene un impacto significativo en el rendimiento del algoritmo. Una mayor distancia look-ahead 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 Pure Pursuit, consulte Controlador de Pure Pursuit.

Ejemplos

Puertos

Entrada

expandir todo

Pose del vehículo actual, especificada como un vector [x y theta], que corresponde a la posición x-y, y el ángulo de orientación, theta. Los ángulos positivos se miden en sentido contrario a las agujas del reloj a partir del 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 waypoints usando planificadores de rutas como mobileRobotPRM (Robotics System Toolbox) o especificarlos como un arreglo en Simulink®.

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.

Dependencias

Para habilitar este puerto, seleccione el parámetro Specify desired linear velocity from input port.

Distancia look-ahead, especificada como un escalar en metros por segundo. La distancia look-ahead 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 look-ahead, consulte Controlador de Pure Pursuit.

Dependencias

Para habilitar este puerto, seleccione el parámetro Specify lookahead distance from input port.

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 usar como el valor de entrada para el puerto TargetDir del bloque Vector Field Histogram.

Dependencias

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

Parámetros

expandir todo

Seleccione este parámetro para habilitar la entrada de las velocidades lineales deseadas en el puerto de entrada Desired Linear Velocity.

Borre este parámetro para especificar la velocidad lineal deseada usando el parámetro Desired linear velocity (m/s)

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.

Dependencias

Para habilitar este parámetro, borre el parámetro Specify desired linear velocity from input port.

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.

Seleccione este parámetro para habilitar la entrada de distancias look-ahead en el puerto de entrada Lookahead Distance.

Borre este parámetro para especificar la velocidad lineal deseada usando el parámetro Lookahead distance (m)

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 look-ahead, consulte Controlador de Pure Pursuit.

Dependencias

Para habilitar este parámetro, borre el parámetro Specify lookahead distance from input port.

Seleccione este parámetro para habilitar el puerto de salida Target Direction. 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 — Simular el modelo utilizando 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 — Simular modelo usando 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

expandir todo

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

Historial de versiones

Introducido en R2019b

expandir todo