Contenido principal

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

stateSamplerUniform

Muestreador de estado uniforme para planificación de movimiento basada en muestreo

Desde R2023b

    Descripción

    El objeto stateSamplerUniform genera muestras de estado distribuidas uniformemente utilizando la función de objeto sampleUniform del objeto de espacio de estado. Los planificadores de rutas como plannerRRT, plannerRRTStar y plannerBiRRT utilizan el objeto stateSamplerUniform como muestreador predeterminado.

    Creación

    Descripción

    sampler = stateSamplerUniform crea un muestreador de estados asociado con un objeto stateSpaceSE2 con configuraciones predeterminadas.

    ejemplo

    sampler = stateSamplerUniform(stateSpace) crea un muestreador de estados asociado con el objeto de espacio de estados especificado. El muestreador admite todos los objetos de espacio de estado derivados mediante la clase nav.StateSpace.

    ejemplo

    Propiedades

    expandir todo

    Definición de espacio de estados, especificada como un objeto stateSpaceSE2 o un objeto de una subclase de la clase nav.StateSpace.

    Funciones del objeto

    sampleEstados de muestra del muestreador de estado uniforme
    copyCree una copia profunda del objeto de muestra de estado uniforme

    Ejemplos

    contraer todo

    Utilice el espacio de estado predeterminado como entrada

    Cree una muestra de estado uniforme con propiedades predeterminadas. De forma predeterminada, el muestreador utiliza el espacio de estado SE(2) como espacio de configuración para la planificación del movimiento. Los límites de las variables de estado [x, y, theta] en el espacio de estado predeterminado son [-100 100; -100 100; -3.1416 3.1416]. Los valores de x y y están en metros. theta está en radianes.

    sampler = stateSamplerUniform;

    Verifique los límites del espacio de estados de entrada.

    bounds = sampler.StateSpace.StateBounds
    bounds = 3×2
    
     -100.0000  100.0000
     -100.0000  100.0000
       -3.1416    3.1416
    
    

    Muestreo del espacio de estado de entrada. Establezca el número de muestras a seleccionar en 10.

    states = sample(sampler,10);

    Verifique las variables de estado muestreadas.

    disp(states)
       62.9447   81.1584   -2.3437
       82.6752   26.4718   -2.5287
      -44.3004    9.3763    2.8746
       92.9777  -68.4774    2.9568
       91.4334   -2.9249    1.8867
      -71.6227  -15.6477    2.6121
       58.4415   91.8985    0.9785
      -92.8577   69.8259    2.7269
       35.7470   51.5480    1.5276
      -21.5546   31.0956   -2.0660
    

    Utilice el espacio de estado personalizado como entrada

    Defina un espacio de estado SE(2) personalizado especificando los límites de las variables de estado [x, y, theta]. Los valores de x y y están en metros. theta está en radianes.

    ss = stateSpaceSE2([-1 1; -2 2; -pi/2 pi/2]);

    Cree una muestra de estado uniforme con el espacio de estado personalizado como entrada.

    sampler = stateSamplerUniform(ss);

    Muestreo del espacio de estado de entrada. Establezca el número de muestras a seleccionar en 10.

    states = sample(sampler,10);

    Verifique las variables de estado muestreadas.

    disp(states)
        0.4121   -1.8727   -0.7008
       -0.9077   -1.6115    1.0162
        0.3897   -0.7316    1.4144
       -0.9311   -0.2450   -0.3721
        0.5310    1.1808   -0.9837
       -0.0205   -0.2177    0.4597
        0.4187    1.0187   -0.7036
        0.3594    0.6204   -1.0599
       -0.7620   -0.0065    1.4443
       -0.3192    0.3411   -0.8677
    

    Muestreo de un espacio de estados para la planificación del movimiento utilizando una distribución uniforme y luego use los estados muestreados para encontrar una ruta óptima entre dos puntos en el espacio de estados de entrada. Utilice un planificador de ruta RRT para calcular una ruta óptima entre los dos puntos.

    Crear muestra de estado uniforme

    Cargue una cuadrícula de ocupación de probabilidad en el espacio de trabajo MATLAB® .

    load("exampleMaps.mat","simpleMap");

    Cree un mapa de ocupación a partir de la cuadrícula de ocupación de entrada.

    map = occupancyMap(simpleMap);

    Define los límites inferior y superior de las variables de espacio de estados x, y y theta del mapa de ocupación.

    x = map.XWorldLimits;
    y =  map.YWorldLimits;
    theta = [-pi pi];

    Cree un objeto SE(2) de espacio de estados utilizando las variables de estado especificadas.

    stateSpace = stateSpaceSE2([x; y; theta]);

    Cree un muestreador de estado uniforme para muestrear uniformemente el espacio de estado especificado.

    sampler = stateSamplerUniform(stateSpace); 

    Configurar el planificador de rutas RRT

    Verifique la validez de los estados en el espacio de estados de entrada utilizando un validador de estados.

    stateValidator = validatorOccupancyMap(stateSpace,Map=map); 

    Configure el planificador de rutas RRT. Utilice el muestreador de estado uniforme para muestrear el espacio de estado de entrada.

    planner = plannerRRT(stateSpace,stateValidator,StateSampler=sampler); 

    Encuentre la ruta óptima entre dos estados

    Especifique el punto inicial y el punto objetivo en el espacio de estado de entrada.

    start = [5 5 0];
    goal = [20 15 0]; 

    Calcule la ruta óptima entre el punto inicial y el punto objetivo utilizando el planificador de rutas RRT.

    [path,info] = plan(planner,start,goal);

    Visualizar los resultados

    Mostrar el mapa de ocupación.

    figure
    show(map)
    hold on

    Traza el punto inicial y el punto objetivo. Especifique el color y las propiedades de línea predeterminados para trazar los puntos de inicio y destino utilizando las funciones plannerLineSpec.start y plannerLineSpec.goal, respectivamente.

    plot(start(1),start(2),plannerLineSpec.start{:}); 
    plot(goal(1),goal(2),plannerLineSpec.goal{:}); 

    Trace el árbol de búsqueda para visualizar los estados explorados para encontrar la ruta óptima. Utilice la función plannerLineSpec.tree para especificar el color predeterminado y las propiedades de línea para trazar el árbol de búsqueda.

    plot(info.TreeData(:,1),info.TreeData(:,2),plannerLineSpec.tree{:})

    Si el planificador ha encontrado una ruta óptima entre los estados inicial y objetivo, trace los resultados. Utilice la función plannerLineSpec.path para especificar el color predeterminado y las propiedades de línea para trazar la ruta.

    if info.IsPathFound
        plot(path.States(:,1),path.States(:,2),plannerLineSpec.path{:})
        legend
    else
        disp("Path not found. Try modifying the planner parameters."); 
    end

    Figure contains an axes object. The axes object with title 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 Start, Goal, Tree, Path.

    Historial de versiones

    Introducido en R2023b