Main Content

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 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 look-ahead 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.

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 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 look-ahead mayor produce rutas sin obstáculos pero realiza giros más abiertos en las esquinas. Un vehículo con una distancia look-ahead 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 (Navigation Toolbox).

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 look-ahead, especificada como un escalar en metros. La distancia look-ahead cambia la respuesta del controlador. Un vehículo con una distancia look-ahead mayor produce rutas sin obstáculos pero realiza giros más abiertos en las esquinas. Un vehículo con una distancia look-ahead 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: simula el modelo utilizando el intérprete MATLAB®. Esta opción reduce el tiempo de inicio, pero ofrece una velocidad de simulación inferior a la obtenida mediante 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 la obtenida mediante 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

expandir todo