copy
Crear una copia profunda del objeto del planificador de rutas de MPNet
Desde R2024a
Sintaxis
Descripción
crea una copia profunda del objeto planificador MPNet con las mismas propiedades.plannerCopy = copy(planner)
Ejemplos
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: [3×2 double]
trainedNetwork: [1×1 dlnetwork]
Establezca el valor de semilla para generar resultados repetibles.
rng(70,"twister")Cree un mapa de laberinto para la planificación del movimiento
Crea un mapa de laberinto aleatorio para planificar el movimiento. El tamaño de la cuadrícula () debe ser el mismo que el de los mapas utilizados para entrenar MPNet.
map = mapMaze(5,1,MapSize=[12 12],MapResolution=2.0833);
Crear validador de estado
Cree un objeto validador de estado para utilizar en la planificación del movimiento.
stateSpace = stateSpaceSE2(data.stateBounds); stateValidator = validatorOccupancyMap(stateSpace,Map=map); stateValidator.ValidationDistance = 0.1;
Seleccionar estados de inicio y objetivo
Seleccione un estado inicial y objetivo utilizando la función sampleStartGoal.
[startStates,goalStates] = sampleStartGoal(stateValidator,500);
Calcular la distancia entre los estados inicial y objetivo generados.
stateDistance= distance(stateSpace,startStates,goalStates);
Seleccione dos estados que estén más alejados entre sí como inicio y objetivo para la planificación del movimiento.
[dist,index] = max(stateDistance); start = startStates(index,:); goal = goalStates(index,:);
Crear un planificador de rutas de MPNet
Configure el objeto mpnetSE2 para utilizar el MPNet entrenado previamente para la planificación de rutas. Establezca los valores de la propiedad EncodingSize del objeto mpnetSE2 en los valores utilizados para entrenar la red.
mpnet = mpnetSE2(Network=data.trainedNetwork,StateBounds=data.stateBounds,EncodingSize=data.encodingSize);
Cree un planificador de rutas MPNet utilizando el validador de estado y el MPNet entrenado previamente. Planifique una ruta entre los estados de inicio y destino seleccionados utilizando el planificador de rutas MPNet.
planner{1} = plannerMPNET(stateValidator,mpnet);
[pathObj1,solutionInfo1] = plan(planner{1},start,goal)pathObj1 =
navPath with properties:
StateSpace: [1×1 stateSpaceSE2]
States: [6×3 double]
NumStates: 6
MaxNumStates: Inf
solutionInfo1 = struct with fields:
IsPathFound: 1
LearnedStates: [50×3 double]
BeaconStates: [2×3 double]
ClassicalStates: [20×3 double]
Crear una copia del Planificador de rutas de MPNet
Cree una copia de la primera instancia del planificador de rutas MPNet.
planner{2} = copy(planner{1});Modificar el enfoque clásico de planificación de rutas
Especifique el planificador RRT bidireccional (Bi-RRT) como el enfoque de planificación de ruta clásico para el planificador de ruta MPNet. Establezca el valor de distancia máxima de conexión en 1.
classicalPlanner = plannerBiRRT(stateSpace,stateValidator,MaxConnectionDistance=1);
planner{2}.ClassicalPlannerFcn = @classicalPlanner.plan;Planifique una ruta entre los estados de inicio y destino seleccionados utilizando el planificador de rutas MPNet modificado.
[pathObj2,solutionInfo2] = plan(planner{2},start,goal)pathObj2 =
navPath with properties:
StateSpace: [1×1 stateSpaceSE2]
States: [5×3 double]
NumStates: 5
MaxNumStates: Inf
solutionInfo2 = struct with fields:
IsPathFound: 1
LearnedStates: [50×3 double]
BeaconStates: [2×3 double]
ClassicalStates: [7×3 double]
Visualizar resultados
Establezca las propiedades de línea y marcador para mostrar los estados de inicio y objetivo utilizando las funciones plannerLineSpec.start y plannerLineSpec.goal, respectivamente.
sstate = plannerLineSpec.start(DisplayName="Start state",MarkerSize=6); gstate = plannerLineSpec.goal(DisplayName="Goal state",MarkerSize=6);
Establezca las propiedades de línea y marcador para mostrar los resultados calculados mediante la función plannerLineSpec.path.
ppath1 = plannerLineSpec.path(LineWidth=1,Marker="o",MarkerSize=8,MarkerFaceColor="white",DisplayName="Path computed using RRT* for classical path planning"); ppath2 = plannerLineSpec.path(LineWidth=1,Marker="o",MarkerSize=8,MarkerFaceColor="red",DisplayName="Path computed using Bi-RRT for classical path planning");
Grafique las rutas calculadas. Se puede inferir que el planificador de rutas MPNet ofrece mejores resultados cuando se utiliza el planificador de rutas Bi-RRT para la planificación de rutas clásica.
figure show(map) hold on plot(pathObj1.States(:,1),pathObj1.States(:,2),ppath1{:}) plot(pathObj2.States(:,1),pathObj2.States(:,2),ppath2{:}) plot(start(1),start(2),sstate{:}) plot(goal(1),goal(2),gstate{:}) legend(Location="southoutside") hold off
![Figure contains an axes object. The axes object with title Binary Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 5 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Path computed using RRT* for classical path planning, Path computed using Bi-RRT for classical path planning, Start state, Goal state.](../../examples/nav/win64/ModifyClassicalPlanningApproachForMPNetPlannerExample_01.png)
Argumentos de entrada
Planificador de rutas, especificado como un objeto plannerMPNET.
Argumentos de salida
Copia del planificador de rutas, devuelto como un objeto plannerMPNET.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Historial de versiones
Introducido en R2024a
Consulte también
Objetos
Funciones
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)