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.

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 estados. Los planificadores de rutas como plannerRRT, plannerRRTStar y plannerBiRRT usan el objeto stateSamplerUniform como muestra predeterminada.

    Creación

    Descripción

    ejemplo

    sampler = stateSamplerUniform crea un muestreador de estado asociado con un objeto stateSpaceSE2 con configuración predeterminada.

    ejemplo

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

    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 probabilidad de ocupación 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);

    Defina los límites inferior y superior de las variables del 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 predeterminado y las propiedades de línea para trazar los puntos inicial y objetivo 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