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.

plannerAStarGrid

A* planificador de ruta para mapa de cuadrícula

Desde R2020b

    Descripción

    El objeto plannerAStarGrid crea un planificador de ruta 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 usando 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 objeto binaryOccupancyMap o occupancyMap . La entrada map establece el valor de la propiedad Map .

    ejemplo

    planner = plannerAStarGrid(___,Name,Value) establece Propiedades usando 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 coste 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 coste general de moverse entre dos puntos cualesquiera en una cuadrícula, especificado como una de las siguientes funciones de coste predefinidas 'Chebyshev', 'Euclidean', 'EuclideanSquared', o 'Manhattan'.

    El coste de moverse entre dos puntos con coordenadas cartesianas (x1, y1) y (x2, y2) se calculan 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 coste 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 costes 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 coste heurístico entre un punto y el objetivo en una cuadrícula, especificado como una de las siguientes funciones de coste predefinidas 'Chebyshev', 'Euclidean', 'EuclideanSquared', o 'Manhattan'.

    El coste de moverse entre dos puntos con coordenadas cartesianas (x1, y1) y (x2, y2) se calculan 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 coste 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 costes 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

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

    Cuando habilita la propiedad TieBreaker , el planificador de ruta A* elige entre múltiples rutas de la misma longitud ajustando el valor del coste 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 ruta 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 ruta 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 usando 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 usando 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

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

    Historial de versiones

    Introducido en R2020b