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.

plan

Planifique la ruta entre los estados inicial y objetivo en la hoja de ruta

Desde R2022a

    Descripción

    path = plan(planner,startState,goalState) devuelve una ruta sin obstáculos como un objeto navPath entre el estado inicial y el estado objetivo dentro de una hoja de ruta que contiene un gráfico de red de nodos conectados.

    [path,solutionInfo] = plan(planner,startState,goalState) también devuelve solutionInfo como una estructura que contiene la información de la solución de la planificación de la ruta.

    ejemplo

    Ejemplos

    contraer todo

    Cree un mapa de ocupación a partir de un mapa de ejemplo y establezca la resolución del mapa en 10 celdas/metro.

    map = load("exampleMaps.mat").simpleMap;
    map = occupancyMap(map,10);

    Cree un espacio de estados y actualice los límites del espacio de estados para que sean los mismos que los límites del mapa.

    ss = stateSpaceSE2;
    ss.StateBounds = [map.XWorldLimits; map.YWorldLimits; [-pi pi]];

    Cree un validador de estado con stateSpaceSE2 usando el mapa y establezca la distancia de validación.

    sv = validatorOccupancyMap(ss,Map=map);
    sv.ValidationDistance = 0.01;

    Cree un objeto plannerPRM.

    planner = plannerPRM(ss,sv);

    Recuperar gráfico como un objeto dígrafo.

    graph = graphData(planner);

    Extraiga nodos y aristas del gráfico.

    edges = table2array(graph.Edges);
    nodes = table2array(graph.Nodes);

    Especifique los estados de inicio y objetivo.

    start = [0.5 0.5 0];
    goal = [2.5 0.2 0];

    Trazar mapa y gráfica.

    show(sv.Map)
    hold on
    plot(nodes(:,1),nodes(:,2),"*","Color","b","LineWidth",2)
    for i = 1:size(edges,1)
        % Samples states at distance 0.02 meters.
        states = interpolate(ss,nodes(edges(i,1),:), ...
                             nodes(edges(i,2),:),0:0.02:1);
        plot(states(:,1),states(:,2),"Color","b")
    end
    plot(start(1),start(2),"*","Color","g","LineWidth",3)
    plot(goal(1),goal(2),"*","Color","r","LineWidth",3)

    Planifique una ruta con la configuración predeterminada. Establezca el valor inicial rng para la repetibilidad.

    rng(100,"twister");
    [pthObj, solnInfo] = plan(planner,start,goal);

    Visualizar los resultados

    if solnInfo.IsPathFound
        interpolate(pthObj,1000);
        plot(pthObj.States(:,1),pthObj.States(:,2), ...
             "Color",[0.85 0.325 0.098],"LineWidth",2)
    else
        disp("Path not found")
    end
    hold off

    Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 103 objects of type image, line.

    Configure el generador de números aleatorios para obtener resultados repetibles.

    rng(1,"twister");

    Cargue un mapa de ocupación tridimensional de una manzana de la ciudad en el espacio de trabajo. Especifique el umbral para considerar las celdas libres de obstáculos.

    mapData = load("dMapCityBlock.mat");
    omap = mapData.omap;
    omap.FreeThreshold = 0.5;

    Infle el mapa de ocupación para agregar una zona de amortiguamiento para una operación segura alrededor de los obstáculos.

    inflate(omap,1)

    Cree un objeto de espacio de estados SE(3) con límites para las variables de estado.

    ss = stateSpaceSE3([0 220;0 220;0 100;inf inf;inf inf;inf inf;inf inf]);

    Cree un validador de estado de mapa de ocupación 3D utilizando el espacio de estado creado. Asigne el mapa de ocupación al objeto validador de estado. Especifique el intervalo de distancia de muestreo.

    sv = validatorOccupancyMap3D(ss, ...
         Map = omap, ...
         ValidationDistance = 0.1);

    Cree un planificador de ruta de hoja de ruta probabilístico con una distancia máxima de conexión aumentada.

    planner = plannerPRM(ss,sv);

    Especifique las poses de inicio y objetivo.

    start = [40 180 25 0.7 0.2 0 0.1];
    goal = [150 33 35 0.3 0 0.1 0.6];

    Planifique la ruta.

    [pthObj,solnInfo] = plan(planner,start,goal);

    Visualice la ruta planificada.

    show(omap)
    axis equal
    view([-10 55])
    hold on
    % Start state
    scatter3(start(1,1),start(1,2),start(1,3),"g","filled")
    % Goal state
    scatter3(goal(1,1),goal(1,2),goal(1,3),"r","filled")
    % Path
    plot3(pthObj.States(:,1),pthObj.States(:,2),pthObj.States(:,3), ...
          "r-",LineWidth=2)

    Figure contains an axes object. The axes object with title Occupancy Map, xlabel X [meters], ylabel Y [meters] contains 4 objects of type patch, scatter, line.

    Argumentos de entrada

    contraer todo

    Planificador de rutas, especificado como un objeto plannerPRM.

    Estado inicial de la ruta, especificado como un vector fila de valor real de elemento N. N es la dimensión del espacio de estados.

    Ejemplo: [1 1 pi/6]

    Tipos de datos: single | double

    Estado objetivo de la ruta, especificado como un vector fila de valor real de elemento N. N es la dimensión del espacio de estados.

    Ejemplo: [2 2 pi/3]

    Tipos de datos: single | double

    Argumentos de salida

    contraer todo

    Información de ruta planificada, devuelta como un objeto navPath.

    La información de la solución, devuelta como una estructura. La estructura contiene el campo:

    CampoDescripción
    IsPathFound

    Indica si se encuentra una ruta. Devuelve como 1 si se encuentra una ruta. De lo contrario, devuelve 0.

    Tipos de datos: struct

    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 R2022a

    Consulte también

    Objetos

    Funciones