Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

show

Afficher une carte d'occupation en 3D

Depuis R2019b

Description

exemple

axes = show(map3D) affiche la carte d'occupation, map3D, dans les axes actuels, avec les étiquettes des axes représentant les coordonnées du monde.

La fonction affiche l'environnement 3D à l'aide de voxels 3D pour les zones dont les valeurs d'occupation sont supérieures à la valeur de propriété OccupiedThreshold spécifiée dans map3D. La couleur du tracé 3D est strictement basée sur la hauteur.

exemple

show(map3D,Name=Value) spécifie les options en utilisant un ou plusieurs arguments nom-valeur.

Exemples

réduire tout

Importez une carte d’occupation 3D.

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

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

Gonflez les zones occupées d'un rayon de 1 m. Affichez la carte.

inflate(map3D,1)
show(map3D)

Trouvez les points d'intersection des rayons et des cellules de carte occupées.

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

Tracez les points d'intersection et tracez les rayons de la pose aux points d'intersection.

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

Créez une carte d'occupation 3D et définissez 25 coordonnées aléatoires dans la carte d'occupation comme étant occupées.

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

Visualisez les voxels avec la valeur de profondeur de recherche par défaut, 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.

Diminuez la profondeur de recherche par incréments de 1 et notez que la résolution diminue à mesure que vous diminuez la profondeur de recherche.

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.

Arguments d'entrée

réduire tout

Carte d'occupation 3D, spécifiée comme objet occupancyMap3D .

Arguments nom-valeur

Spécifiez des paires d'arguments facultatives sous la forme Name1=Value1,...,NameN=ValueN, où Name est le nom de l'argument et Value est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l'ordre des paires n'a pas d'importance.

Avant R2021a, utilisez des virgules pour séparer chaque nom et valeur, et mettez Name entre guillemets.

Exemple : show(map,SearchDepth=14)

Axes utilisés pour tracer la carte, spécifiés comme un objet Axes ou UIAxes . Voir axes ou uiaxes.

Profondeur de recherche de voxel, spécifiée sous la forme d'un nombre entier compris dans la plage [0, 16], qui détermine le niveau de détail auquel la carte est affichée. La profondeur maximale est 16, correspondant aux voxels dont la longueur de bord est égale à 1/map.Resolution. Chaque niveau au-dessus de la profondeur maximale double cette taille minimale de voxel.

Arguments de sortie

réduire tout

Poignée d'axes pour la carte, renvoyée sous la forme d'un objet Axes ou UIAxes. Voir axes ou uiaxes.

Historique des versions

Introduit dans R2019b