copy
Cree una copia profunda del objeto de muestra de estado de MPNnet
Desde R2023b
Sintaxis
Descripción
Ejemplos
Realice muestreos informados con MPNet
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 () 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
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
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
sampler1
— Objeto de muestra de estado de MPNet
stateSamplerMPNET
objeto
Objeto de muestra de estado de MPNet, especificado como un objeto stateSamplerMPNET
.
Argumentos de salida
sampler2
— Copia del objeto de muestra de estado de MPNnet
stateSamplerMPNET
objeto
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
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)