Contenido principal

Pure Pursuit

Comandos de control lineal y de curvatura

  • 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 curvatura para seguir una trayectoria usando un conjunto de waypoints y la pose actual de un vehículo tipo automóvil o con tracción diferencial. El bloque toma poses actualizadas para actualizar los comandos de velocidad lineal y curvatura para que el vehículo siga una trayectoria a lo largo de un conjunto de waypoints deseado. Use los parámetros Max curvature y Desired linear velocity para actualizar la curvatura y la velocidad lineal, respectivamente, basándose en el rendimiento del vehículo.

El parámetro y el puerto de distancia lookahead calculan un punto lookahead en la trayectoria, que es un objetivo local instantáneo para el vehículo. El comando de curvatura se calcula a partir de este punto. Cambiar la distancia lookahead tiene un impacto significativo en el rendimiento del algoritmo. Una mayor distancia lookahead da como resultado una trayectoria más suave, pero puede provocar que el vehículo tome un atajo durante la trayectoria. Una distancia lookahead menor puede producir oscilaciones en el seguimiento de la trayectoria, 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 trayectorias 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 curvatura calculada es independiente de la velocidad lineal.

Dependencias

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

Distancia lookahead, especificada como un escalar en metros por segundo. La distancia lookahead cambia la respuesta del controlador. Un vehículo con una distancia lookahead mayor produce trayectorias sin obstáculos pero realiza giros más abiertos en las esquinas. Un vehículo con una distancia lookahead menor sigue fielmente la trayectoria y realiza giros bruscos, pero oscila a lo largo de la trayectoria. Para obtener más información sobre los efectos de la distancia lookahead, 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

Curvatura, devuelta como escalar real positivo en 1/metros. Puede calcular la velocidad angular multiplicando la curvatura por la velocidad lineal.

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 curvatura calculada es independiente de la velocidad lineal.

Dependencias

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

Curvatura máxima, especificada como escalar real positivo en 1/metros. El controlador satura la salida de curvatura absoluta al valor especificado.

Seleccione este parámetro para habilitar la entrada de distancias lookahead 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 lookahead, especificada como un escalar en metros. La distancia lookahead cambia la respuesta del controlador. Un vehículo con una distancia lookahead mayor produce trayectorias sin obstáculos pero realiza giros más abiertos en las esquinas. Un vehículo con una distancia lookahead menor sigue fielmente la trayectoria y realiza giros bruscos, pero oscila a lo largo de la trayectoria. Para obtener más información sobre los efectos de la distancia lookahead, 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

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