Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

binaryOccupancyMap

Belegungsraster mit Binärwerten erstellen

Beschreibung

binaryOccupancyMap erstellt ein zweidimensionales Belegungskartenobjekt, mit dem Sie einen Roboterarbeitsbereich einschließlich Hindernissen darstellen und visualisieren können. Durch die Integration von Sensordaten und Positionsschätzungen entsteht eine räumliche Darstellung der ungefähren Standorte der Hindernisse.

Belegungsraster werden in Roboteralgorithmen wie beispielsweise der Pfadplanung verwendet. Sie werden außerdem in Kartierungsanwendungen verwendet, beispielsweise zum Suchen kollisionsfreier Pfade, zum Vermeiden von Kollisionen und zum Berechnen der Lokalisierung. Sie können Ihr Belegungsraster an Ihren spezifischen Anwendungszweck anpassen.

Jede Zelle im Belegungsraster hat einen Wert, der den Belegungsstatus dieser Zelle darstellt. Ein belegter Standort wird als true (1) und ein freier Standort als false (0) dargestellt.

Das Objekt verfolgt drei Referenzrahmen: Welt, Lokal und Raster. Der Ursprung des Weltrahmens wird durch GridLocationInWorld definiert, das die untere linke Ecke der Karte relativ zum Weltrahmen definiert. Die Eigenschaft LocalOriginInWorld gibt die Position des Ursprungs des lokalen Frames relativ zum Welt-Frame an. Die erste Rasterposition mit dem Index (1,1) beginnt in der oberen linken Ecke des Rasters.

Hinweis

Dieses Objekt hieß zuvor robotics.BinaryOccupancyGrid.

Erstellung

Beschreibung

map = binaryOccupancyMap erstellt ein zweidimensionales binäres Belegungsraster mit einer Breite und Höhe von 10m. Die Standardrasterauflösung beträgt eine Zelle pro Meter.

Beispiel

map = binaryOccupancyMap(width,height) erstellt ein zweidimensionales binäres Belegungsraster, das einen Arbeitsraum von width und height in Metern darstellt. Die Standardrasterauflösung beträgt eine Zelle pro Meter.

Beispiel

map = binaryOccupancyMap(width,height,resolution) erstellt ein Raster mit der Eigenschaft Resolution, angegeben in Zellen pro Meter. Die Karte ist standardmäßig in Weltkoordinaten angegeben.

map = binaryOccupancyMap(rows,cols,resolution,"grid") erstellt ein zweidimensionales binäres Belegungsraster der Größe (rows,cols).

map = binaryOccupancyMap(p) erstellt ein Raster aus den Werten in der Matrix p. Die Größe des Rasters entspricht der Größe der Matrix, wobei jeder Zellenwert anhand seiner Position in der Matrix interpretiert wird. p enthält jeden numerischen oder logischen Typ mit Nullen (0) und Einsen (1).

Beispiel

map = binaryOccupancyMap(p,resolution) erstellt eine Karte aus einer Matrix mit der Resolution-Eigenschaft, angegeben in Zellen pro Meter.

map = binaryOccupancyMap(sourcemap) erstellt ein Objekt unter Verwendung von Werten eines anderen binaryOccupancyMap-Objekts.

map = binaryOccupancyMap(sourcemap,resolution) erstellt ein Objekt unter Verwendung von Werten eines anderen binaryOccupancyMap-Objekts, reskaliert die Matrix jedoch neu, um die angegebene Auflösung zu erreichen.

map = binaryOccupancyMap(___,Name=Value) legt Eigenschaften mithilfe eines oder mehrerer Name-Wert-Argumente fest.

Eingabeargumente

alle erweitern

Kartenbreite, angegeben als positiver Skalar in Metern.

Kartenhöhe, angegeben als positiver Skalar in Metern.

Kartenrasterwerte, angegeben als Matrix.

Belegungsplanobjekt, angegeben als binaryOccupancyMap-Objekt.

Eigenschaften

alle erweitern

Diese Eigenschaft ist schreibgeschützt.

Anzahl der Zeilen und Spalten im Raster, gespeichert als Vektor mit zwei Elementen der Form [rows cols].

Diese Eigenschaft ist schreibgeschützt.

Rasterauflösung, gespeichert als Skalar in Zellen pro Meter.

Diese Eigenschaft ist schreibgeschützt.

Minimale und maximale Werte der x-Koordinaten im lokalen Rahmen, gespeichert als Vektor mit zwei Elementen der Form [min max]. Der lokale Rahmen wird durch die Eigenschaft LocalOriginInWorld definiert.

Diese Eigenschaft ist schreibgeschützt.

Minimale und maximale Werte der y-Koordinaten im lokalen Rahmen, gespeichert als Vektor mit zwei Elementen der Form [min max]. Der lokale Rahmen wird durch die Eigenschaft LocalOriginInWorld definiert.

Diese Eigenschaft ist schreibgeschützt.

Minimale und maximale Werte der x-Koordinaten im Weltrahmen, gespeichert als zweielementiger Vektor der Form [min max]. Diese Werte geben den weltweiten Bereich der x-Koordinaten im Raster an.

Diese Eigenschaft ist schreibgeschützt.

Minimale und maximale Werte der y-Koordinaten, gespeichert als zweielementiger Vektor der Form [min max]. Diese Werte geben den weltweiten Bereich der y-Koordinaten im Raster an.

Position der unteren linken Ecke des Rasters in Weltkoordinaten, angegeben als Vektor mit zwei Elementen, [xGrid yGrid].

Position des Ursprungs des lokalen Rahmens in Weltkoordinaten, angegeben als Vektor mit zwei Elementen, [xLocal yLocal]. Verwenden Sie die Funktion move, um den lokalen Rahmen zu verschieben, während sich Ihr Fahrzeug bewegt.

Position der unteren linken Ecke des Rasters in lokalen Koordinaten, angegeben als Vektor mit zwei Elementen, [xLocal yLocal].

Standardwert für nicht angegebene Kartenstandorte, einschließlich Bereiche außerhalb der Karte, angegeben als 0 oder 1.

Objektfunktionen

copyCreate copy of binary occupancy map
checkOccupancyCheck if locations are free or occupied
getOccupancyGet occupancy value of locations
grid2localConvert grid indices to local coordinates
grid2worldConvert grid indices to world coordinates
inflateInflate each occupied location
insertRayInsert ray from laser scan observation
local2gridConvert local coordinates to grid indices
local2worldConvert local coordinates to world coordinates
moveMove map in world frame
occupancyMatrixConvert occupancy grid to matrix
raycastCompute cell indices along a ray
rayIntersectionFind intersection points of rays and occupied map cells
setOccupancySet occupancy value of locations
showDisplay binary occupancy map
syncWithSync map with overlapping map
world2gridConvert world coordinates to grid indices
world2localConvert world coordinates to local coordinates

Beispiele

alle reduzieren

Erstellen Sie eine leere Karte im Format 10 x 10m.

map = binaryOccupancyMap(10,10,10);

Belegung weltweiter Standorte festlegen und Karte anzeigen.

x = [1.2; 2.3; 3.4; 4.5; 5.6];
y = [5.0; 4.0; 3.0; 2.0; 1.0];

setOccupancy(map, [x y], ones(5,1))
figure
show(map)

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

Erhöhen Sie die Anzahl besetzter Standorte um einen bestimmten Radius.

inflate(map, 0.5)
figure
show(map)

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

Erhalten Sie Rasterstandorte von Standorten weltweit.

ij = world2grid(map, [x y]);

Legen Sie Rasterpositionen auf freie Positionen fest.

setOccupancy(map, ij, zeros(5,1), 'grid')
figure
show(map)

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

Dieses Beispiel zeigt, wie ein Bild zur Verwendung bei der Kartenerstellung und Pfadplanung in ein binäres Belegungsraster konvertiert wird.

Bild importieren.

image = imread('imageMap.png');

Konvertieren Sie das Bild basierend auf dem angegebenen Schwellenwert in Graustufen und dann in Schwarzweiß.

grayimage = rgb2gray(image);
bwimage = grayimage < 0.5;

Verwenden Sie ein Schwarzweißbild als Matrixeingabe für das binäre Belegungsraster.

grid = binaryOccupancyMap(bwimage);

show(grid)

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

Dieses Beispiel zeigt, wie eine .pgm-Datei in ein binaryOccupancyMap-Objekt zur Verwendung in MATLAB konvertiert wird.

Bild mit imread importieren. Das Bild ist recht groß und sollte auf den relevanten Bereich zugeschnitten werden.

image = imread('playpen_map.pgm');
imageCropped = image(750:1250,750:1250);
imshow(imageCropped)

Figure contains an axes object. The hidden axes object contains an object of type image.

Unbekannte Bereiche (grau) sollten entfernt und als freier Speicherplatz behandelt werden. Erstellen Sie eine logische Matrix basierend auf einem Schwellenwert. Dieser Wert kann je nach Bild unterschiedlich sein. Der belegte Speicherplatz sollte auf 1 (weiß im Bild) gesetzt werden.

imageBW = imageCropped < 100;
imshow(imageBW)

Figure contains an axes object. The hidden axes object contains an object of type image.

Erstellen Sie ein binaryOccupancyMap-Objekt mithilfe des angepassten Kartenbildes.

map = binaryOccupancyMap(imageBW);
show(map)

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

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt in R2015a

alle erweitern