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.

controllerPurePursuit

Cree un controlador para seguir un conjunto de waypoints

Desde R2019b

Descripción

El controllerPurePursuit System object™ crea un objeto controlador utilizado para hacer que un vehículo con tracción diferencial siga un conjunto de puntos de referencia. El objeto calcula la velocidad lineal y angular del vehículo a partir de la posición actual indicada. Las subsiguientes llamadas al objeto con posiciones actualizadas proporcionan comandos de velocidad actualizados para el vehículo. Utilice las propiedades MaxAngularVelocity y DesiredLinearVelocity para actualizar las velocidades según el rendimiento del vehículo.

La propiedad LookaheadDistance calcula un punto de anticipación en la ruta, que es un objetivo local para el vehículo. El comando de velocidad angular se calcula a partir de este punto. Cambiar LookaheadDistance 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 look-ahead menor puede resultar en 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.

Para calcular los comandos de control de velocidad lineal y angular:

  1. Cree el objeto controllerPurePursuit y establezca sus propiedades.

  2. Llame al objeto con argumentos, como si fuera una función.

Para obtener más información sobre cómo funcionan los System objects, consulte What Are System Objects?

Creación

Descripción

ejemplo

controller = controllerPurePursuit crea un objeto de pure pursuit que utiliza el algoritmo de pure pursuit para calcular las entradas de velocidad lineal y angular para un vehículo con tracción diferencial.

controller = controllerPurePursuit(Name,Value) crea un objeto de pure pursuit con opciones adicionales especificadas por uno o más pares Name,Value . Name es el nombre de la propiedad y Value es el valor correspondiente. El nombre debe aparecer entre comillas simples (' '). Puede especificar varios argumentos de pares nombre-valor en cualquier orden como Name1,Value1,...,NameN,ValueN. Las propiedades no especificadas conservan sus valores predeterminados.

Ejemplo: controller = controllerPurePursuit('DesiredLinearVelocity', 0.5)

Propiedades

expandir todo

Velocidad lineal constante 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.

Tipos de datos: double

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 look-ahead menor sigue fielmente la ruta y realiza giros bruscos, pero podría crear oscilaciones en la ruta.

Tipos de datos: double

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.

Tipos de datos: double

Waypoints, especificados como un arreglo n por 2 de arreglo [x y] , donde n es el número de waypoints. Puedes generar los waypoints desde la clase mobileRobotPRM (Robotics System Toolbox) o desde otra fuente.

Tipos de datos: double

Uso

Descripción

ejemplo

[vel,angvel] = controller(pose) procesa la posición y orientación del vehículo, pose, y genera la velocidad lineal, vel, y la velocidad angular, angvel.

[vel,angvel,lookaheadpoint] = controller(pose) devuelve el punto de anticipación, que es una ubicación en la ruta utilizada para calcular los comandos de velocidad. Esta ubicación en la ruta se calcula utilizando la propiedad LookaheadDistance en el objeto controller .

Argumentos de entrada

expandir todo

Posición y orientación del vehículo, especificadas como un vector de 3 por 1 en el formato [x y theta]. La pose del vehículo es una posición x y y con orientación angular θ (en radianes) medida desde el eje x.

Argumentos de salida

expandir todo

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

Tipos de datos: double

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

Tipos de datos: double

Punto de anticipación en la ruta, devuelto como un vector [x y] . Este valor se calcula en base a la propiedad LookaheadDistance .

Funciones del objeto

Para utilizar una función de objeto, especifique System object como primer argumento de entrada. Por ejemplo, para liberar recursos del sistema de un System object llamado obj, use esta sintaxis:

release(obj)

expandir todo

infoInformación característica sobre el objeto controllerPurePursuit
stepEjecutar el algoritmo System object
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Ejemplos

contraer todo

Utilice el método info para obtener más información sobre un objeto controllerPurePursuit . La función info devuelve dos campos, RobotPose y LookaheadPoint, que corresponden a la posición y orientación actual del robot y el punto en la ruta utilizada para calcular las salidas de la última llamada del objeto.

Cree un objeto controllerPurePursuit .

pp = controllerPurePursuit;

Asigne waypoints.

pp.Waypoints = [0 0;1 1];

Calcule los comandos de control utilizando el objeto pp con la pose inicial [x y theta] dada como entrada.

[v,w] = pp([0 0 0]);

Obtenga más información.

s = info(pp)
s = struct with fields:
         RobotPose: [0 0 0]
    LookaheadPoint: [0.7071 0.7071]

Capacidades ampliadas

Historial de versiones

Introducido en R2019b