Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

plannerAStarGrid

A* planificador de ruta para mapa de cuadrícula

    Descripción

    El objeto plannerAStarGrid crea un planificador de rutas A*. El planificador realiza una búsqueda A* en un mapa de ocupación y encuentra la ruta libre de obstáculos más corto entre las ubicaciones especificadas de la cuadrícula de inicio y meta según lo determinado por el coste heurístico.

    Creación

    Descripción

    planner = plannerAStarGrid crea un objeto plannerAStarGrid con un objeto binaryOccupancyMap utilizando un ancho y alto de 10 metros y una resolución de cuadrícula de 1 celda por metro.

    planner = plannerAStarGrid(map) crea un objeto plannerAStarGrid utilizando el objeto de mapa especificado map. Especifique map como un objeto binaryOccupancyMap o occupancyMap. La entrada map establece el valor de la propiedad Map.

    ejemplo

    planner = plannerAStarGrid(___,Name,Value) establece Propiedades utilizando uno o más pares nombre-valor. Las propiedades no especificadas tienen valores predeterminados. Encierre el nombre de cada propiedad entre comillas.

    Por ejemplo, plannerAStarGrid(map,'GCost','Manhattan') crea un objeto planificador de ruta A* utilizando la función de costo de Manhattan.

    Propiedades

    expandir todo

    Representación del mapa, especificada como un objeto binaryOccupancyMap o occupancyMap. Este objeto representa el entorno del robot como una cuadrícula de ocupación. El valor de cada celda de la cuadrícula indica la ocupación de la ubicación asociada en el mapa.

    Ejemplo: planner.Map = binaryOccupancyMap(zeros(50,50));

    El costo general de moverse entre dos puntos cualesquiera en una cuadrícula, especificado como una de las siguientes funciones de costo predefinidas 'Chebyshev', 'Euclidean', 'EuclideanSquared' o 'Manhattan'.

    El costo de moverse entre dos puntos con coordenadas cartesianas (x1,y1) y (x2,y2) se calcula de la siguiente manera:

    • Chebyshev

      d=max(|x2x1|,|y2y1|)

    • Euclidean

      d=(x2x1)2+(y2y1)2

    • Euclidean Squared

      d=(x2x1)2+(y2y1)2

    • Manhattan

      d=|x2x1|+|y2y1|

    Nota

    Puede utilizar las funciones de costes predefinidas o una función de costes personalizada. Para utilizar una función de costo personalizada, consulte la propiedad GCostFcn.

    Ejemplo: planner = plannerAStarGrid(map,'GCost','Manhattan');

    Ejemplo: planner.GCost = 'Chebyshev';

    Tipos de datos: string | char

    Función GCost personalizada, especificada como identificador de función. El identificador de función debe aceptar dos entradas de pose como vectores [row column] y devolver un escalar de tipo doble.

    Nota

    Puede utilizar las funciones de costes predefinidas o una función de costes personalizada. Para utilizar las funciones de costo predefinidas, consulte la propiedad GCost.

    Ejemplo: planner = plannerAStarGrid(map,'GCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    Ejemplo: planner.GCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    Tipos de datos: function_handle

    El costo heurístico entre un punto y el objetivo en una cuadrícula, especificado como una de las siguientes funciones de costo predefinidas 'Chebyshev', 'Euclidean', 'EuclideanSquared' o 'Manhattan'.

    El costo de moverse entre dos puntos con coordenadas cartesianas (x1,y1) y (x2,y2) se calcula de la siguiente manera:

    • Chebyshev

      d=max(|x2x1|,|y2y1|)

    • Euclidean

      d=(x2x1)2+(y2y1)2

    • Euclidean Squared

      d=(x2x1)2+(y2y1)2

    • Manhattan

      d=|x2x1|+|y2y1|

    Nota

    Puede utilizar las funciones de costes predefinidas o una función de costes personalizada. Para utilizar una función de costo personalizada, consulte la propiedad HCostFcn.

    Ejemplo: planner = plannerAStarGrid(map,'HCost','Manhattan');

    Ejemplo: planner.HCost = 'Chebyshev';

    Tipos de datos: string | char

    Función HCost personalizada, especificada como identificador de función. El identificador de función debe aceptar dos entradas de pose como vectores [row column] y devolver un escalar de tipo doble.

    Nota

    Puede utilizar las funciones de costes predefinidas o una función de costes personalizada. Para utilizar las funciones de costo predefinidas, consulte la propiedad HCost.

    Ejemplo: planner = plannerAStarGrid(map,'HCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    Ejemplo: planner.HCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    Tipos de datos: function_handle

    Activa o desactiva el modo de desempate, especificado como 'on' o 'off'.

    Cuando habilita la propiedad TieBreaker, el planificador de rutas A* elige entre múltiples rutas de la misma longitud ajustando el valor del costo heurístico.

    Ejemplo: planner = plannerAStarGrid(map,'TieBreaker','on');

    Ejemplo: planner.TieBreaker = 'off';

    Tipos de datos: string | char

    Alternar el modo de búsqueda diagonal, especificado como 'on' o 'off'.

    Cuando establece esta propiedad en 'on', el planificador de rutas A* busca en dirección diagonal junto con las otras cuatro direcciones de la cuadrícula. Cuando establece esta propiedad en 'off', el planificador de rutas A* busca solo en las cuatro direcciones de la cuadrícula.

    Tipos de datos: char | string

    Funciones del objeto

    planEncuentra la ruta más corta y libre de obstáculos entre dos puntos
    showTrazar y visualizar los nodos explorados A* y la ruta planificada

    Ejemplos

    contraer todo

    Planifique la ruta más corta sin colisiones a través de un mapa de cuadrícula de obstáculos utilizando el algoritmo de planificación de ruta A*.

    Genere un objeto binaryOccupancyMap con obstáculos dispersos aleatoriamente utilizando la función mapClutter.

    rng('default');
    map = mapClutter;

    Utilice el mapa para crear un objeto plannerAStarGrid.

    planner = plannerAStarGrid(map);

    Definir los puntos de inicio y meta.

    start = [2 3];
    goal = [248 248];

    Planifique una ruta desde el punto de inicio hasta el punto de destino.

    plan(planner,start,goal);

    Visualice la ruta y los nodos explorados utilizando la función de objeto show.

    show(planner)

    Figure contains an axes object. The axes object with title AStar, xlabel Columns, ylabel Rows contains 8 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Path, Start, Goal, GridsExplored.

    Capacidades ampliadas

    expandir todo

    Generación de código C/C++
    Genere código C y C++ mediante MATLAB® Coder™.

    Historial de versiones

    Introducido en R2020b