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.

predict

Predecir muestras de estado usando MPNet

Desde R2023b

    Descripción

    statePred = predict(mpnet,start,goal) predice la próxima muestra de estado entre un estado inicial y un estado objetivo en un solo entorno. Para esta sintaxis, las redes de planificación de movimiento (MPNet) deben haber sido entrenadas en un solo entorno utilizando poses iniciales y poses de objetivo aleatorias. El entorno de prueba de entrada debe ser el mismo que el entorno de formación.

    ejemplo

    statePred = predict(mpnet,start,goal,environment) predice la próxima muestra de estado entre un estado inicial y un estado objetivo en el entorno de prueba especificado mediante el uso de un MPNet previamente entrenado. En este caso, MPNet debe haber sido entrenado en múltiples entornos para poses iniciales y de meta aleatorias. Para esta sintaxis, el entorno de prueba de entrada puede ser un entorno diferente a cualquiera en el que se haya entrenado el planificador. Sin embargo,

    • El tamaño de la cuadrícula del entorno de prueba debe ser el mismo que el de los entornos utilizados para la capacitación.

    • El entorno de prueba debe tener la misma distribución de datos que los entornos de formación.

    Nota

    Para encontrar todas las muestras entre una pose inicial y una pose final, debes utilizar iterativamente la función predict. En cada iteración, el estado predicho se convierte en la nueva pose inicial para predecir el siguiente estado.

    Nota

    Para ejecutar esta función, necesitará Deep Learning Toolbox™.

    ejemplo

    Ejemplos

    contraer todo

    Cargue un archivo de datos que contenga un MPNet previamente entrenado en el espacio de trabajo de MATLAB® . El MPNet ha sido entrenado en un único mapa para un vehículo Dubins. Puede utilizar este MPNet previamente entrenado para encontrar muestras de estado entre cualquier pose inicial y pose objetivo en el mapa utilizado para el entrenamiento.

    inputData = load("officeMapTrainedMPNET.mat")
    inputData = struct with fields:
          encodingSize: 0
           lossWeights: [100 100 10]
            officeArea: [1×1 occupancyMap]
        trainedNetwork: [1×1 dlnetwork]
    
    

    Lea el mapa utilizado para entrenar la red.

    map = inputData.officeArea;

    Especifique los límites de las variables del espacio de estados correspondientes al mapa de entrada.

    x = map.XWorldLimits;
    y = map.YWorldLimits;
    theta = [-pi pi];
    stateBounds = [x; y; theta];

    Configure el objeto mpnetSE2 para utilizar el MPNet entrenado previamente para predecir muestras de estado entre una pose inicial y una pose objetivo. Establezca el valor EncodingSize en 0.

    mpnet = mpnetSE2(Network=inputData.trainedNetwork,StateBounds=stateBounds,EncodingSize=0);

    Especifique la pose inicial y la pose objetivo.

    start = [0 -6 0];
    goal = [10 3 0];

    Muestre el mapa de entrada y trace las poses inicial y final.

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

    Figure contains an axes object. The axes object with title 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.

    Utilice la función predict de forma iterativa para encontrar muestras de estado entre las poses inicial y final. Utilice la suma de la distancia absoluta entre el estado predicho y la pose objetivo como criterio para calcular muestras hasta el punto objetivo. Especifique el umbral del valor de distancia como 1. Para cada nueva iteración, considere la muestra de estado predicho como la nueva pose inicial. Calcule las muestras de estado hasta que la distancia entre la muestra de estado predicha y la pose objetivo sea mayor que 1. Trazar las muestras de estado predichas.

    goalDistance = abs(start(1)-goal(1)) + abs(start(2)-goal(2));
    while goalDistance > 1
        statenext = predict(mpnet,start,goal,map);
        start = statenext;
        goalDistance = abs(start(1)-goal(1)) + abs(start(2)-goal(2));
        plot(statenext(1),statenext(2),plannerLineSpec.state{:})
        legend("off")
    end

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

    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. Puede utilizar este MPNet previamente entrenado para encontrar muestras de espacio de estados en un mapa de laberinto aleatorio con las mismas especificaciones que las del conjunto de datos de entrenamiento.

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

    Cree un mapa de laberinto aleatorio para probar el MPNet previamente entrenado. El tamaño de la cuadrícula (MapSize×MapResolution) debe ser el mismo que el de los datos de entrenamiento.

    rng(100,"twister") % Set the seed
    testMap = mapMaze(5,1,MapSize=[20 20],MapResolution=1.25);

    Especifique la pose inicial y la pose objetivo.

    start = [1 3 0];
    goal = [18 18 0];

    Especifique los límites de las variables del espacio de estados que definen el mapa de prueba.

    x = testMap.XWorldLimits;
    y =  testMap.YWorldLimits;
    theta = [-pi pi];
    stateBounds = [x; y; theta];

    Configure el objeto mpnetSE2 para utilizar el MPNet entrenado previamente para predecir muestras de estado en un mapa aleatorio.

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

    Muestre el mapa de prueba de entrada y trace las poses inicial y final.

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

    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.

    Utilice la función predict de forma iterativa para encontrar muestras de estado entre las poses inicial y final. Utilice la suma de la distancia absoluta entre el estado predicho y la pose objetivo como criterio para calcular muestras hasta el punto objetivo. Especifique el umbral del valor de distancia como 1. Para cada nueva iteración, considere la muestra de estado predicho como la nueva pose inicial. Calcule las muestras de estado hasta que la distancia entre la muestra de estado predicha y la pose objetivo sea mayor que 1. Trazar las muestras de estado predichas.

    goalDistance = abs(start(1)-goal(1)) + abs(start(2)-goal(2));
    while goalDistance > 1
        statenext = predict(mpnet,start,goal,testMap);
        start = statenext;
        goalDistance = abs(start(1)-goal(1)) + abs(start(2)-goal(2));
        plot(statenext(1),statenext(2),plannerLineSpec.state{:})
        legend("off")
    end

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

    Argumentos de entrada

    contraer todo

    Redes de planificación de movimiento, especificadas como un objeto mpnetSE2.

    Pose inicial, especificada como un vector de tres elementos con la forma [x y θ].

    Tipos de datos: double

    Estado objetivo, especificado como un vector de tres elementos con la forma [x y θ].

    Tipos de datos: double

    Entorno codificado, especificado como un objeto binaryOccupancyMap o occupancyMap. El entorno codificado es un mapa de prueba de dimensiones iguales a las de los mapas utilizados para entrenar la red.

    Argumentos de salida

    contraer todo

    Se predice el próximo estado, devuelto como un vector de tres elementos con la forma [x, y, θ].

    Tipos de datos: double

    Referencias

    [1] Qureshi, Ahmed Hussain, Yinglong Miao, Anthony Simeonov, and Michael C. Yip. “Motion Planning Networks: Bridging the Gap Between Learning-Based and Classical Motion Planners.” IEEE Transactions on Robotics 37, no. 1 (February 2021): 48–66. https://doi.org/10.1109/TRO.2020.3006716.

    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 R2023b

    Consulte también

    Objetos

    Funciones