plan
Sintaxis
Descripción
devuelve un path
= plan(planner
,startState
,goalState
)path
desde el estado inicial hasta el estado objetivo.
[
también devuelve path
,solutionInfo
] = plan(planner
,startState
,goalState
)solutionInfo
que contiene la información de la solución de la planificación de ruta.
Ejemplos
Planificar la ruta entre dos estados
Crea un espacio de estados.
ss = stateSpaceSE2;
Cree un validador de estado basado en occupancyMap
utilizando el espacio de estado creado.
sv = validatorOccupancyMap(ss);
Cree un mapa de ocupación a partir de un mapa de ejemplo y establezca la resolución del mapa en 10 celdas/metro.
load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;
Establezca la distancia de validación para el validador.
sv.ValidationDistance = 0.01;
Actualice los límites del espacio de estados para que sean los mismos que los límites del mapa.
ss.StateBounds = [map.XWorldLimits;map.YWorldLimits;[-pi pi]];
Cree el planificador de rutas y aumente la distancia máxima de conexión.
planner = plannerRRT(ss,sv,MaxConnectionDistance=0.3);
Establezca los estados de inicio y objetivo.
start = [0.5 0.5 0]; goal = [2.5 0.2 0];
Planifique una ruta con la configuración predeterminada.
rng(100,'twister'); % for repeatable result [pthObj,solnInfo] = plan(planner,start,goal);
Visualiza los resultados.
show(map) hold on % Tree expansion plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-') % Draw path plot(pthObj.States(:,1),pthObj.States(:,2),'r-','LineWidth',2)
Planifique la ruta a través del mapa de ocupación 3-D utilizando RRT Planner
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 rutas RRT con una distancia máxima de conexión aumentada y un número máximo reducido de iteraciones. Especifique una función de objetivo personalizada que determine que una ruta alcanza el objetivo si la distancia euclidiana al objetivo está por debajo de un umbral de 1 metro.
planner = plannerRRT(ss,sv, ... MaxConnectionDistance = 50, ... MaxIterations = 1000, ... GoalReachedFcn = @(~,s,g)(norm(s(1:3)-g(1:3))<1), ... GoalBias = 0.1);
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];
Configure el generador de números aleatorios para obtener resultados repetibles.
rng(1,"twister");
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)
Argumentos de entrada
planner
— Planificador de rutas
plannerRRT
objeto | plannerRRTStar
objeto
Planificador de ruta, especificado como un objeto plannerRRT
o un objeto plannerRRTStar
.
startState
— Estado inicial de la ruta
N-elemento vector de valor real
Estado inicial de la ruta, especificado como un vector de valor real de elemento N. N es la dimensión del espacio de estados.
Ejemplo: [1 1 pi/6]
Ejemplo: [40 180 25 0.7 0.2 0 0.1]
Tipos de datos: single
| double
goalState
— Estado objetivo de la ruta
N-elemento vector de valor real
Estado objetivo de la ruta, especificado como un vector de valor real de elemento N. N es la dimensión del espacio de estados.
Ejemplo: [2 2 pi/3]
Ejemplo: [150 33 35 0.3 0 0.1 0.6]
Tipos de datos: single
| double
Argumentos de salida
path
— Objeto que contiene información de ruta planificada
navPath
objeto
Un objeto que contiene la información de la ruta planificada, devuelto como un objeto navPath
.
solutionInfo
— Información de la solución
estructura
Información de la solución, devuelta como una estructura. Los campos de la estructura son:
Campos de solutionInfo
Campos | Descripción |
---|---|
IsPathFound | Indica si se encuentra una ruta. Devuelve como 1 si se encuentra una ruta. En caso contrario, devuelve 0 . |
ExitFlag | Indica el estado de terminación del planificador, devuelto como
|
NumNodes | Número de nodos en el árbol de búsqueda cuando finaliza el planificador (excluyendo el nodo raíz). |
NumIterations | Número de rutinas de "extensión" ejecutadas. |
TreeData | Una colección de estados explorados que refleja el estado del árbol de búsqueda cuando finaliza el planificador. Tenga en cuenta que los valores NaN se insertan como delimitadores para separar cada borde individual. |
PathCosts | Contiene el coste de la ruta en cada iteración. El valor de las iteraciones cuando la ruta no ha alcanzado el objetivo se indica mediante Nota Este campo es aplicable solo para el objeto
|
Tipos de datos: structure
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Historial de versiones
Introducido en R2019b
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)