Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

controllerPurePursuit

Crear controlador para seguir el conjunto de waypoints

Descripción

Crea un objeto de controlador utilizado para hacer que un vehículo de conducción diferencial siga un conjunto de waypoints.controllerPurePursuitSystem object™ El objeto calcula las velocidades lineales y angulares del vehículo dada la postura actual. Las llamadas sucesivas al objeto con poses actualizadas proporcionan comandos de velocidad actualizados para el vehículo. Utilice las propiedades y para actualizar las velocidades en función del rendimiento del vehículo.MaxAngularVelocityDesiredLinearVelocity

La propiedad calcula un punto de búsqueda en la ruta de acceso, que es un objetivo local para el vehículo.LookaheadDistance El comando de velocidad angular se calcula en función de este punto. El cambio tiene un impacto significativo en el rendimiento del algoritmo.LookaheadDistance Una mayor distancia de búsqueda hacia delante da como resultado una trayectoria más suave para el vehículo, pero puede hacer que el vehículo corte las esquinas a lo largo de la trayectoria. Una distancia de mirada anticipada baja puede dar lugar a oscilaciones en el seguimiento de la ruta, causando un comportamiento inestable. Para obtener más información sobre el algoritmo de persecución pura, consulte .Controlador de persecución pura

Nota

A partir de R2016b, en lugar de utilizar el método para realizar la operación definida por el , puede llamar al objeto con argumentos, como si fuera una función.stepSystem object Por ejemplo, realizar operaciones equivalentes.y = step(obj,x)y = obj(x)

Para calcular comandos de control de velocidad lineal y angular:

  1. Cree el controllerPurePursuit objeto y establecer 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 objetos del sistema, consulte .¿Qué son los objetos del sistema? (MATLAB)

Creación

Descripción

ejemplo

controller = controllerPurePursuit crea un objeto de persecución puro que utiliza el algoritmo de persecución puro para calcular las entradas de velocidad lineal y angular para un vehículo de accionamiento diferencial.

controller = controllerPurePursuit(Name,Value) crea un objeto de persecución puro 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 par 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 escalar en metros por segundo. El controlador asume que el vehículo conduce a una velocidad lineal constante y que la velocidad angular calculada es independiente de la velocidad lineal.

Tipos de datos: double

Distancia de mirada anticipada, especificada como un escalar en metros. La distancia de búsqueda anticipada cambia la respuesta del controlador. Un vehículo con una mayor distancia de mirada hacia adelante produce caminos suaves, pero toma giros más grandes en las esquinas. Un vehículo con una distancia más pequeña sigue el camino de cerca y toma giros bruscos, pero potencialmente creando oscilaciones en el camino.

Tipos de datos: double

Velocidad angular máxima, especificada un escalar en radianes por segundo. El controlador satura la salida de velocidad angular absoluta en el valor dado.

Tipos de datos: double

Waypoints, especificado como una matriz -by-2 de pares, donde está el número de waypoints.n[x y]n Puede generar los waypoints desde la clase o desde otro origen.mobileRobotPRM

Tipos de datos: double

Uso

Descripción

ejemplo

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

[vel,angvel,lookaheadpoint] = controller(pose) devuelve el punto de búsqueda anticipada, que es una ubicación en la ruta de acceso utilizada para calcular los comandos de velocidad. Esta ubicación de la ruta de acceso se calcula mediante la propiedad del objeto.LookaheadDistancecontroller

Argumentos de entrada

expandir todo

Posición y orientación del vehículo, especificado como un vector 3 por 1 en la forma.[x y theta] La postura del vehículo es una posición y una posición con orientación angular (en radianes) medida desde el eje.xyx

Argumentos de salida

expandir todo

Velocidad lineal, especificada como escalar en metros por segundo.

Tipos de datos: double

Velocidad angular, especificada como escalar en radianes por segundo.

Tipos de datos: double

Punto de búsqueda hacia delante en la ruta de acceso, devuelto como un vector.[x y] Este valor se calcula en función de la propiedad.LookaheadDistance

Funciones del objeto

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

release(obj)

expandir todo

infoCharacteristic information about controllerPurePursuit object
stepRun System object algorithm
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 para obtener más información sobre un objeto.infocontrollerPurePursuit La función devuelve dos campos y , que corresponden a la posición y orientación actuales del robot y al punto de la ruta de acceso utilizado para calcular las salidas de la última llamada del objeto.infoRobotPoseLookaheadPoint

Cree un objeto.controllerPurePursuit

pp = controllerPurePursuit;

Asigne waypoints.

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

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

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

Obtenga información adicional.

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

Capacidades ampliadas

Introducido en R2019b