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

Planificar una ruta cinemáticamente factible entre dos estados.

Desde R2021b

    Descripción

    ejemplo

    path = plan(planner,startState,goalState) intenta encontrar una ruta válida entre startState y goalState.

    La planificación se realiza con base en el propagador de estados, el cual aprovecha un modelo cinemático y controladores del sistema para buscar el espacio de configuración. El planificador devuelve un objeto navPathControl , path, que contiene el propagador utilizado durante la planificación y una secuencia de estados, controles, estados objetivo y duraciones de control.

    [___,solutionInfo] = plan(planner,startState,goalState) también devuelve la información de la solución solutionInfo de la planificación de ruta.

    [___] = plan(planner,startState,goalSampleFcn) toma un identificador de función que produce una configuración de objetivo cuando se llama. El identificador de función no debe recibir entradas y generar un estado objetivo cuyo tamaño coincida con startState.

    Ejemplos

    contraer todo

    Planifique rutas de control para un modelo cinemático de bicicleta con el objeto mobileRobotPropagator . Especifique un mapa para el entorno, establezca límites estatales y defina una ubicación de inicio y objetivo. Planifique una ruta utilizando el algoritmo RRT basado en control, que utiliza un propagador de estado para planificar el movimiento y los comandos de control necesarios.

    Establecer parámetros de estado y propagador de estado

    Cargue una matriz de mapa ternario y cree un objeto occupancyMap . Cree el propagador de estado usando el mapa. De forma predeterminada, el propagador de estado utiliza un modelo cinemático de bicicleta.

    load('exampleMaps','ternaryMap')
    map = occupancyMap(ternaryMap,10);
    
    propagator = mobileRobotPropagator(Environment=map); % Bicycle model

    Establezca los límites estatales en el espacio de estados según los límites del mundo del mapa.

    propagator.StateSpace.StateBounds(1:2,:) = ...
                        [map.XWorldLimits; map.YWorldLimits];

    Planificar ruta

    Cree el planificador de ruta a partir del propagador de estado.

    planner = plannerControlRRT(propagator);

    Especifique los estados de inicio y objetivo.

    start = [10 15 0];
    goal  = [40 30 0];

    Planificar una ruta entre los estados. Para obtener resultados repetibles, reinicie el generador de números aleatorios antes de planificar. La función plan genera un objeto navPathControl , que contiene los estados, los comandos de control y las duraciones.

    rng("default")
    path = plan(planner,start,goal)
    path = 
      navPathControl with properties:
    
        StatePropagator: [1x1 mobileRobotPropagator]
                 States: [192x3 double]
               Controls: [191x2 double]
              Durations: [191x1 double]
           TargetStates: [191x3 double]
              NumStates: 192
            NumSegments: 191
    
    

    Visualizar resultados

    Visualice el mapa y trace los estados de la ruta.

    show(map)
    hold on
    plot(start(1),start(2),"rx")
    plot(goal(1),goal(2),"go")
    plot(path.States(:,1),path.States(:,2),"b")
    hold off

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

    Muestra las entradas de control [v psi] de velocidad de avance y ángulo de dirección.

    plot(path.Controls)
    ylim([-1 1])
    legend(["Velocity (m/s)","Steering Angle (rad)"])

    Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Velocity (m/s), Steering Angle (rad).

    Argumentos de entrada

    contraer todo

    Planificador de rutas, especificado como un objeto plannerControlRRT .

    Estado inicial de la ruta, especificado como un vector de elemento s. s es el número de variables de estado en el espacio de estados. Por ejemplo, un robot en el espacio SE(2) tiene un vector de estado de [x y theta].

    Ejemplo: [1 1 pi/6]

    Tipos de datos: single | double

    Estado objetivo de la ruta, especificado como un vector de elemento s. s es el número de variables de estado en el espacio de estados. Por ejemplo, un robot en el espacio SE(2) tiene un vector de estado de [x y theta].

    Ejemplo: [2 2 pi/3]

    Tipos de datos: single | double

    Función de muestra de estado objetivo, especificada como identificador de función. El identificador de función no debe recibir entradas y generar un estado objetivo cuyo tamaño coincida con startState.

    Ejemplo:

    Tipos de datos: function_handle

    Argumentos de salida

    contraer todo

    Información de ruta planificada, devuelta como un objeto navPathControl .

    Información de la solución, devuelta como una estructura. La estructura contiene estos campos:

    CampoDescripción
    IsPathFoundIndica si se encuentra una ruta. Devuelve como 1 si se encuentra una ruta. De lo contrario, devuelve como 0.
    ExitFlag

    Indica el estado de finalización del planificador, devuelto como una de estas opciones:

    • 1 — Objetivo alcanzado con éxito

    • 2 — Se superó el número máximo de iteraciones

    • 3 — Se superó el número máximo de nodos

    • 4 — Se superó el tiempo máximo de planificación

    NumTreeNodeNúmero de nodos en el árbol de búsqueda cuando el planificador termina excluyendo el nodo raíz.
    NumIterationsNúmero de estados objetivo propagados.
    PlanningTimeTiempo transcurrido durante la planificación, devuelto como escalar en segundos.
    TreeInfoColección de estados explorados que refleja el estado del árbol de búsqueda cuando finaliza el planificador. Tenga en cuenta que el planificador inserta valores NaN como delimitadores para separar cada borde individual.

    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 R2021b

    Consulte también

    Objetos

    Funciones