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.

robotics.PurePursuit

Crear controlador para seguir el conjunto de waypoints

Descripción

Crea un objeto controlador que se utiliza para hacer que un robot de accionamiento diferencial siga un conjunto de waypoints.robotics.PurePursuitSystem object™ El objeto computa las velocidades lineales y angulares para el robot dada la pose actual del robot. Las sucesivas llamadas al objeto con posturas actualizadas proporcionan comandos de velocidad actualizados para el robot. Utilice las propiedades y para actualizar las velocidades en función del rendimiento del robot.MaxAngularVelocityDesiredLinearVelocity

La propiedad calcula un punto de mirada anticipada en la ruta de acceso, que es un objetivo local para el robot.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 mirada anticipada da como resultado una trayectoria más suave para el robot, pero puede hacer que el robot corte las esquinas a lo largo del camino. Una distancia de mirada anticipada 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 búsqueda pura, consulte.Controlador de persecución puro

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, y realizar operaciones equivalentes.y = step(obj,x)y = obj(x)

Para calcular comandos de control de velocidad angular y lineal:

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

Creación

Descripción

ejemplo

controller = robotics.PurePursuit crea un objeto de persecución puro que utiliza el algoritmo de búsqueda pura para calcular las entradas de velocidad lineal y angular para un robot de accionamiento diferencial.

controller = robotics.PurePursuit(Name,Value) crea un objeto de búsqueda pura 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 dentro de 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 = robotics.PurePursuit('DesiredLinearVelocity', 0.5)

Propiedades

expandir todo

Velocidad lineal constante deseada, especificada como un escalar en metros por segundo. El controlador asume que el robot conduce a una velocidad lineal constante y que la velocidad angular calculada es independiente de la velocidad lineal.

Tipos de datos: double

La distancia de mirada anticipada, especificada como un escalar en metros. La distancia de mirada anticipada cambia la respuesta del controlador. Un robot con una mayor distancia de mirada hacia delante produce caminos lisos, pero toma giros más grandes en las esquinas. Un robot con una distancia de mirada 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, especifica un escalar en radianes por segundo. El controlador ssatura la salida de velocidad angular absoluta en el valor dado.

Tipos de datos: double

Waypoints, especificados como una matriz de pares-por-2, donde está el número de waypoints.n[x y]n Puede generar los waypoints desde la clase o desde otra fuente.PRM

Tipos de datos: double

Uso

Descripción

ejemplo

[vel,angvel] = controller(pose) procesa la posición y la orientación del robot, y emite la velocidad lineal, y la velocidad angular,.posevelangvel

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

Argumentos de entrada

expandir todo

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

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 mira hacia adelante en el camino, 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 primer argumento de entrada.System object Por ejemplo, para liberar los 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

expandir todo

Utilice el método para obtener más información sobre un objeto. Devuelve dos campos y, que corresponden a la posición actual y la orientación del robot y el punto en la ruta de acceso utilizado para calcular las salidas de la última llamada del objeto.infoPurePursuitinfoRobotPoseLookaheadPoint

Cree un objeto.PurePursuit

pp = robotics.PurePursuit;

Asignar 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 R2015a