Main Content

Pure Pursuit

Comandos de control de velocidad lineal y angular

  • Biblioteca:
  • Robotics System Toolbox / Mobile Robot Algorithms

    Navigation Toolbox / Control Algorithms

  • Pure Pursuit block

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 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 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®.

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 la entrada al puerto TargetDir del bloque Vector Field Histogram (Navigation Toolbox).

Dependencias

Para activar 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 activar el puerto de salida de 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 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