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.

show

Mostrar mapa de ocupación en 3D

Desde R2019b

Descripción

ejemplo

axes = show(map3D) muestra el mapa de ocupación, map3D, en los ejes actuales, con las etiquetas de los ejes representando las coordenadas mundiales.

La función muestra el entorno 3D utilizando vóxeles 3D para áreas con valores de ocupación mayores que el valor de propiedad OccupiedThreshold especificado en map3D. El color del gráfico tridimensional se basa estrictamente en la altura.

ejemplo

show(map3D,Name=Value) especifica opciones utilizando uno o más argumentos de nombre-valor.

Ejemplos

contraer todo

Importe un mapa de ocupación en 3D.

map3D = importOccupancyMap3D("citymap.ot")
map3D = 
  occupancyMap3D with properties:

    ProbabilitySaturation: [1.0000e-03 0.9990]
               Resolution: 1
        OccupiedThreshold: 0.6500
            FreeThreshold: 0.2000

Inflar las zonas ocupadas en un radio de 1 m. Muestre el mapa.

inflate(map3D,1)
show(map3D)

Encuentre los puntos de intersección de los rayos y las celdas ocupadas del mapa.

numRays = 10;
angles = linspace(-pi/2,pi/2,numRays);
directions = [cos(angles); sin(angles); zeros(1,numRays)]';
sensorPose = [55 40 1 1 0 0 0];
maxrange = 15;
[intersectionPts,isOccupied] = rayIntersection(map3D,sensorPose,directions,maxrange)
intersectionPts = 10×3

   55.0000   32.0000    1.0000
   57.9118   32.0000    1.0000
   61.7128   32.0000    1.0000
   67.9904   32.5000    1.0000
   69.0000   37.5314    1.0000
   69.0000   42.4686    1.0000
   67.9904   47.5000    1.0000
   64.6418   51.4907    1.0000
   58.2757   49.0000    1.0000
   55.0000   49.0000    1.0000

isOccupied = 10×1

     1
     1
     1
    -1
     1
     1
    -1
    -1
     1
     1

Traza los puntos de intersección y traza los rayos desde la pose hasta los puntos de intersección.

hold on
plotTransforms(sensorPose(1:3),sensorPose(4:end),...
               'FrameSize',5,'MeshFilePath','groundvehicle.stl') % Vehicle sensor pose
for i = 1:numRays
    plot3([sensorPose(1),intersectionPts(i,1)],...
          [sensorPose(2),intersectionPts(i,2)],...
          [sensorPose(3),intersectionPts(i,3)],'-b') % Plot rays
    if isOccupied(i) == 1
        plot3(intersectionPts(i,1),intersectionPts(i,2),intersectionPts(i,3),'*r') % Intersection points
    end
end

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

Cree un mapa de ocupación tridimensional y establezca 25 coordenadas aleatorias en el mapa de ocupación como ocupadas.

map = occupancyMap3D;
rng(0);
for i = 1:25
    pt = (rand(1,3)-.5)*20;
    map.setOccupancy(pt,1);
end

Visualice los vóxeles con el valor de profundidad de búsqueda predeterminado, 16.

show(map)
axis equal
grid on

Figure contains an axes object. The axes object with title Occupancy Map, xlabel X [meters], ylabel Y [meters] contains an object of type patch.

Disminuya la profundidad de búsqueda en incrementos de 1 y observe que la resolución disminuye a medida que disminuye la profundidad de búsqueda.

show(map,SearchDepth=15)
axis equal
grid on

Figure contains an axes object. The axes object with title Occupancy Map, xlabel X [meters], ylabel Y [meters] contains an object of type patch.

show(map,SearchDepth=14)
axis equal
grid on

Figure contains an axes object. The axes object with title Occupancy Map, xlabel X [meters], ylabel Y [meters] contains an object of type patch.

show(map,SearchDepth=13)
axis equal
grid on

Figure contains an axes object. The axes object with title Occupancy Map, xlabel X [meters], ylabel Y [meters] contains an object of type patch.

Argumentos de entrada

contraer todo

Mapa de ocupación tridimensional, especificado como un objeto occupancyMap3D .

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.

Antes de R2021a, utilice comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: show(map,SearchDepth=14)

Ejes utilizados para trazar el mapa, especificados como un objeto Axes o UIAxes . Ver axes o uiaxes.

Profundidad de búsqueda de vóxel, especificada como un número entero en el rango [0, 16], que determina el nivel de detalle con el que se muestra el mapa. La profundidad máxima es 16, correspondiente a los vóxeles cuya longitud de borde es igual a 1/map.Resolution. Cada nivel por encima de la profundidad máxima duplica este tamaño mínimo de vóxel.

Argumentos de salida

contraer todo

Identificador de ejes para el mapa, devuelto como un objeto Axes o UIAxes. Ver axes o uiaxes.

Historial de versiones

Introducido en R2019b