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.

plan

Encuentra una ruta libre de obstáculos entre dos poses.

Desde R2019b

Descripción

ejemplo

path = plan(planner,start,goal) calcula una ruta libre de obstáculos entre las poses inicial y meta, especificada como vectores [x y theta] , utilizando el objeto de entrada plannerHybridAStar .

[path,directions] = plan(planner,start,goal) también devuelve la dirección del movimiento para cada pose a lo largo de la ruta, directions, como un vector columna. Un valor de 1 indica dirección hacia adelante y un valor de -1 indica dirección inversa. La función devuelve un vector columna vacío cuando el planificador no puede encontrar una ruta.

[path,directions,solutionInfo] = plan(planner,start,goal) también devuelve solutionInfo que contiene la información de la solución de la planificación de ruta como una estructura.

[___] = plan(___,"SearchMode",mode) especifica el modo del algoritmo de búsqueda mode además de cualquier combinación de argumentos de sintaxis anteriores.

Ejemplos

contraer todo

Planifique una ruta libre de colisiones para un vehículo a través de un estacionamiento utilizando el algoritmo Hybrid A*.

Crear y asignar mapa al validador de estado

Cargue los valores de costes de las celdas en el mapa de costes de vehículos de un estacionamiento.

load parkingLotCostVal.mat % costVal

Cree un binaryOccupancyMap con valores de coste.

resolution = 3;
map = binaryOccupancyMap(costVal,resolution);

Crea un espacio de estados.

ss = stateSpaceSE2;

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 un objeto de validación de estado para verificar colisiones.

sv = validatorOccupancyMap(ss);

Asigne el mapa al objeto del validador de estado.

sv.Map = map;

Planificar y visualizar la ruta

Inicialice el objeto plannerHybridAStar con el objeto validador de estado. Especifique las propiedades MinTurningRadius y MotionPrimitiveLength del planificador.

planner = plannerHybridAStar(sv, ...
                             MinTurningRadius=4, ...
                             MotionPrimitiveLength=6);

Defina las poses de inicio y meta para el vehículo como vectores [x, y, theta]. x e y especifican la posición en metros, y theta especifica el ángulo de orientación en radianes.

startPose = [4 9 pi/2]; % [meters, meters, radians]
goalPose = [30 19 -pi/2];

Planifica una ruta desde la pose inicial hasta la pose objetivo.

refpath = plan(planner,startPose,goalPose,SearchMode='exhaustive');     

Visualice la ruta usando la función show.

show(planner)

Figure contains an axes object. The axes object with title Hybrid A* Path Planner, xlabel X [meters], ylabel Y [meters] contains 8 objects of type image, line, scatter. These objects represent Reverse Motion Primitives, Forward Motion Primitives, Forward Path, Path Points, Orientation, Start, Goal.

Argumentos de entrada

contraer todo

Planificador de ruta híbrido A*, especificado como un objeto plannerHybridAStar .

Ubicación inicial de la ruta, especificada como un vector de 1 por 3 con el formato [x y theta]. x y y especifican la posición en metros, y theta especifica el ángulo de orientación en radianes.

Ejemplo: [5 5 pi/2]

Tipos de datos: double

Ubicación final de la ruta, especificada como un vector de 1 por 3 con el formato [x y theta]. x y y especifican la posición en metros, y theta especifica el ángulo de orientación en radianes.

Ejemplo: [45 45 pi/4]

Tipos de datos: double

Modo de algoritmo de búsqueda, especificado como una de estas opciones:

  • "greedy" : priorice encontrar una solución en el menor tiempo promedio.

  • "exhaustive" : aumente la cantidad de nodos en el conjunto abierto para optimizar la solución.

Ejemplo: plan(phastar,start,goal,"SearchMode","greedy")

Tipos de datos: string | char

Argumentos de salida

contraer todo

Ruta sin obstáculos, devuelta como un objeto navPath .

Dirección de movimiento para cada pose a lo largo de la ruta, devuelta como un vector columna de 1 s (hacia adelante) y –1 s (hacia atrás).

Tipos de datos: double

Información de la solución, devuelta como una estructura. Los campos de la estructura son:

Campos de solutionInfo

CamposDescripción
IsPathFoundIndica si se encuentra una ruta. Devuelve como 1 si se encuentra una ruta. En caso contrario, devuelve 0.
NumNodesNúmero de nodos en el árbol de búsqueda cuando finaliza el planificador (excluyendo el nodo raíz).
NumIterationsNúmero de iteraciones de planificación ejecutadas.

Tipos de datos: struct

Capacidades ampliadas

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

Historial de versiones

Introducido en R2019b

expandir todo