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.

copy

Cree una copia profunda del objeto de muestra de estado de MPNnet

Desde R2023b

    Descripción

    ejemplo

    sampler2 = copy(sampler1) crea una copia profunda del objeto de muestra de estado de MPNet especificado.

    Ejemplos

    contraer todo

    Este ejemplo muestra cómo realizar un muestreo informado utilizando un MPNet previamente entrenado. Hasta un cierto número de iteraciones, un muestreador de estado de MPNnet predice muestras utilizando el MPNet previamente entrenado. Las muestras predichas utilizando MPNet están sesgadas hacia un subespacio que contiene una solución de ruta óptima. Después del número especificado de iteraciones, el muestreador cambia al enfoque de muestreo uniforme. Puede cambiar el número de iteraciones especificando la propiedad MaxLearnedSamples del objeto stateSamplerMPNET .

    Cargar MPNet previamente entrenado

    Cargue un archivo de datos que contenga un MPNet previamente entrenado en el espacio de trabajo de MATLAB® . El MPNet ha sido entrenado en varios mapas de laberintos 2-D con anchos y alturas de 10 metros y resoluciones de 2,5 celdas por metro. Cada mapa de laberinto contiene un ancho de paso de 5 celdas de cuadrícula y un espesor de pared de 1 celda de cuadrícula.

    data = load("mazeMapTrainedMPNET.mat")
    data = struct with fields:
          encodingSize: [9 9]
           lossWeights: [100 100 0]
            mazeParams: {[5]  [1]  'MapSize'  [10 10]  'MapResolution'  [2.5000]}
           stateBounds: [3x2 double]
        trainedNetwork: [1x1 dlnetwork]
    
    

    Crear mapa de laberinto para muestreo

    Cree un mapa de laberinto aleatorio para tomar muestras. El tamaño de la cuadrícula (MapSize×MapResolution) debe ser el mismo que el de los mapas utilizados para entrenar el MPNet.

    rng(10,"twister")
    map = mapMaze(5,1,MapSize=[12 12],MapResolution=2.0833);

    Especifique la pose inicial y la pose objetivo.

    start = [2 10 0];
    goal = [5 4 0];

    Visualice el mapa de entrada.

    figure
    show(map)
    hold on
    plot(start(1),start(2),plannerLineSpec.start{:})
    plot(goal(1),goal(2),plannerLineSpec.goal{:})
    legend(Location="bestoutside")
    hold off

    Figure contains an axes object. The axes object with title Binary Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Start, Goal.

    Crear muestra de estado de MPNnet

    Especifique los límites de estado y cree un objeto de espacio de estado SE(2).

    x = map.XWorldLimits;
    y = map.YWorldLimits;
    theta = [-pi pi];
    stateBounds = [x; y; theta];
    stateSpace = stateSpaceSE2(stateBounds);

    Configure el objeto mpnetSE2 para utilizar el MPNet previamente entrenado para predecir muestras de estado en un mapa aleatorio. Establezca los valores de propiedad EncodingSize del objeto mpnetSE2 al valor utilizado para entrenar la red.

    mpnet = mpnetSE2(Network=data.trainedNetwork,StateBounds=stateBounds,EncodingSize=data.encodingSize);

    Cree un muestreador de estado de MPNnet para calcular muestras de estado que se utilizarán en la planificación de movimiento. Especifique el entorno del mapa, la pose inicial y la pose objetivo como entradas al muestreador de estado. El valor predeterminado para MaxLearnedSamples es 50. Esto implica que las primeras 50 muestras devueltas por el muestreador de estado son muestras basadas en el aprendizaje, predichas mediante el MPNet previamente entrenado.

    sampler_orig = stateSamplerMPNET(stateSpace,mpnet,Environment=map,StartState=start,GoalState=goal)
    sampler_orig = 
      stateSamplerMPNET with properties:
    
                   StateSpace: [1x1 stateSpaceSE2]
        MotionPlanningNetwork: [1x1 mpnetSE2]
                  Environment: [1x1 binaryOccupancyMap]
                   StartState: [2 10 0]
                    GoalState: [5 4 0]
            MaxLearnedSamples: 50
                GoalThreshold: 1
    
    

    Espacio de estados de muestra utilizando MPNet State Sampler

    Genere 50 muestras de estado que se encuentran entre la pose inicial y la pose objetivo utilizando el muestreador de estado MPNet. En este caso, el muestreador de estado de MPNnet genera las 50 muestras utilizando el MPNet previamente entrenado.

    states_orig = sample(sampler_orig,50);

    Cree copias de MPNet State Sampler y varíe el máximo de muestras aprendidas

    Cree copias del objeto de muestra de estado predeterminado de MPNet. Modifique la propiedad de muestras máximas aprendidas del muestreador para estudiar su impacto en los resultados del muestreo.

    Establezca la propiedad MaxLearnedSamples en 10. En este caso, el muestreador de estado de MPNnet genera las primeras 10 muestras utilizando el MPNet previamente entrenado y las 40 muestras restantes utilizando el enfoque de muestreo uniforme.

    sampler_2 = copy(sampler_orig);
    sampler_2.MaxLearnedSamples = 10;

    Establezca la propiedad MaxLearnedSamples en 30. En este caso, el muestreador de estado de MPNnet genera las primeras 30 muestras utilizando el MPNet previamente entrenado y las 20 muestras restantes utilizando el enfoque de muestreo uniforme.

    sampler_3 = copy(sampler_orig);
    sampler_3.MaxLearnedSamples = 30;

    Espacio de estado de muestra utilizando el muestreador de estado MPNnet modificado

    Utilice cada uno de los muestreadores de estado de MPNnet modificados para generar el mismo número de muestras que el muestreador predeterminado. En este caso, utilícelos cada uno para generar 50 muestras.

    states_2 = sample(sampler_2,50);
    states_3 = sample(sampler_3,50);

    Trazar y comparar resultados de muestreo

    Cree una figura con espacio adecuado para mostrar gráficos para los tres muestreadores estatales.

    fig1 = figure(Position=[0,0,1200,300]);

    Trace la salida del muestreador de estado de MPNnet con el número máximo de muestras aprendidas establecido en 10.

    subplot(1,3,1,Parent=fig1)
    show(map)
    hold on
    plot(start(1),start(2),plannerLineSpec.start{:})
    plot(goal(1),goal(2),plannerLineSpec.goal{:})
    plot(states_2(:,1),states_2(:,2),plannerLineSpec.state{:})
    title("MaxLearnedSamples = 10")
    hold off

    Trazar la salida del muestreador de estado de MPNnet con el número máximo de muestras aprendidas establecido en 30.

    subplot(1,3,2,Parent=fig1)
    show(map)
    hold on
    plot(start(1),start(2),plannerLineSpec.start{:})
    plot(goal(1),goal(2),plannerLineSpec.goal{:})
    plot(states_3(:,1),states_3(:,2),plannerLineSpec.state{:})
    title("MaxLearnedSamples = 30")
    hold off

    Trazar la salida del muestreador de estado predeterminado de MPNet. El valor predeterminado para el número máximo de muestras aprendidas es 50. A medida que aumenta la cantidad máxima de muestras aprendidas para que coincida con la cantidad de muestras de estado a generar, las muestras de salida se enfocan más a lo largo de una ruta entre la pose inicial dada y la pose objetivo.

    subplot(1,3,3,Parent=fig1)
    show(map)
    hold on
    plot(start(1),start(2),plannerLineSpec.start{:})
    plot(goal(1),goal(2),plannerLineSpec.goal{:})
    plot(states_orig(:,1),states_orig(:,2),plannerLineSpec.state{:})
    title("MaxLearnedSamples = 50 (default)")
    hold off

    Figure contains 3 axes objects. Axes object 1 with title MaxLearnedSamples = 10, xlabel X [meters], ylabel Y [meters] contains 4 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Start, Goal, State. Axes object 2 with title MaxLearnedSamples = 30, xlabel X [meters], ylabel Y [meters] contains 4 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Start, Goal, State. Axes object 3 with title MaxLearnedSamples = 50 (default), xlabel X [meters], ylabel Y [meters] contains 4 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Start, Goal, State.

    Exploración adicional

    A partir de los resultados del muestreo, puede inferir que el muestreador de estado de MPNnet devuelve muestras de estado óptimo si el número máximo de muestras aprendidas es igual al número máximo de muestras que se van a calcular. Sin embargo, si MPNet se entrena en un conjunto de datos con menos entornos de mapas o muestras de rutas, la precisión de la predicción de la red disminuye. El muestreador de estado de MPNnet puede devolver una cantidad insuficiente de muestras aprendidas entre la pose inicial y la pose objetivo, y no puede usarlo para la planificación de rutas. En tales casos, el valor de MaxLearnedSamples debe ser menor que el número de muestras requeridas. Esto permite que el muestreador de estado de MPNnet cambie al enfoque de muestreo uniforme después de un número específico de iteraciones, garantizando así una solución de ruta.

    Argumentos de entrada

    contraer todo

    Objeto de muestra de estado de MPNet, especificado como un objeto stateSamplerMPNET .

    Argumentos de salida

    contraer todo

    Copia del objeto de muestra de estado de MPNnet, devuelta como un objeto stateSamplerMPNET .

    Capacidades ampliadas

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

    Historial de versiones

    Introducido en R2023b

    Consulte también

    Objetos

    Funciones