Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

binaryOccupancyMap

Crea una griglia di occupazione con valori binari

Descrizione

binaryOccupancyMap crea un oggetto mappa di occupazione 2D, che puoi utilizzare per rappresentare e visualizzare l'area di lavoro di un robot, compresi gli ostacoli. L'integrazione dei dati dei sensori e delle stime di posizione crea una rappresentazione spaziale delle posizioni approssimative degli ostacoli.

Le griglie di occupazione vengono utilizzate negli algoritmi di robotica come la pianificazione del percorso. Vengono utilizzati anche nelle applicazioni di mappatura, ad esempio per trovare percorsi privi di collisioni, evitare collisioni e calcolare la localizzazione. Puoi modificare la griglia di occupazione per adattarla alla tua applicazione specifica.

Ogni cella nella griglia di occupazione ha un valore che rappresenta lo stato di occupazione di quella cella. Una posizione occupata è rappresentata come true (1) e una posizione libera è rappresentata come false (0).

L'oggetto tiene traccia di tre sistemi di riferimento: mondiale, locale e griglia. L'origine del frame mondiale è definita da GridLocationInWorld, che definisce l'angolo inferiore sinistro della mappa rispetto al frame mondiale. La proprietà LocalOriginInWorld specifica la posizione dell'origine del frame locale rispetto al frame mondiale. La prima posizione della griglia con indice (1,1) inizia nell'angolo in alto a sinistra della griglia.

Nota

In precedenza questo oggetto si chiamava robotics.BinaryOccupancyGrid .

Creazione

Descrizione

map = binaryOccupancyMap crea una griglia di occupazione binaria 2D con una larghezza e un'altezza di 10 m. La risoluzione predefinita della griglia è una cella per metro.

esempio

map = binaryOccupancyMap(width,height) crea una griglia di occupazione binaria 2D che rappresenta uno spazio di lavoro di width e height in metri. La risoluzione predefinita della griglia è una cella per metro.

esempio

map = binaryOccupancyMap(width,height,resolution) crea una griglia con la proprietà Resolution specificata in celle per metro. Per impostazione predefinita, la mappa è espressa in coordinate mondiali.

map = binaryOccupancyMap(rows,cols,resolution,"grid") crea una griglia di occupazione binaria 2D di dimensioni (rows,cols).

map = binaryOccupancyMap(p) crea una griglia dai valori nella matrice p. La dimensione della griglia corrisponde alla dimensione della matrice, con ogni valore di cella interpretato in base alla sua posizione nella matrice. p contiene qualsiasi tipo numerico o logico con zeri (0) e uni (1).

esempio

map = binaryOccupancyMap(p,resolution) crea una mappa da una matrice con la proprietà Resolution specificata in celle per metro.

map = binaryOccupancyMap(sourcemap) crea un oggetto utilizzando i valori di un altro oggetto binaryOccupancyMap.

map = binaryOccupancyMap(sourcemap,resolution) crea un oggetto utilizzando i valori di un altro oggetto binaryOccupancyMap, ma ricampiona la matrice per ottenere la risoluzione specificata.

map = binaryOccupancyMap(___,Name=Value) imposta le proprietà utilizzando uno o più argomenti nome-valore.

Argomenti di input

espandi tutto

Larghezza della mappa, specificata come uno scalare positivo in metri.

Altezza della mappa, specificata come uno scalare positivo in metri.

Valori della griglia della mappa, specificati come matrice.

Oggetto mappa occupazione, specificato come oggetto binaryOccupancyMap.

Proprietà

espandi tutto

proprietà è di sola lettura.

Numero di righe e colonne nella griglia, memorizzato come vettore a due elementi nella forma [rows cols] .

proprietà è di sola lettura.

Risoluzione della griglia, memorizzata come uno scalare in celle per metro.

proprietà è di sola lettura.

Valori minimo e massimo delle coordinate x nel sistema di riferimento locale, memorizzati come un vettore a due elementi della forma [min max] . Il frame locale è definito dalla proprietà LocalOriginInWorld.

proprietà è di sola lettura.

Valori minimo e massimo delle coordinate y nel sistema di riferimento locale, memorizzati come un vettore a due elementi della forma [min max] . Il frame locale è definito dalla proprietà LocalOriginInWorld.

proprietà è di sola lettura.

Valori minimo e massimo delle coordinate x nel sistema di riferimento mondiale, memorizzati come un vettore a due elementi della forma [min max] . Questi valori indicano l'intervallo mondiale delle coordinate x nella griglia.

proprietà è di sola lettura.

Valori minimo e massimo delle coordinate y, memorizzati come un vettore a due elementi della forma [min max] . Questi valori indicano l'intervallo mondiale delle coordinate y nella griglia.

Posizione dell'angolo inferiore sinistro della griglia in coordinate mondiali, specificato come vettore a due elementi, [xGrid yGrid].

Posizione dell'origine del sistema di riferimento locale in coordinate mondiali, specificata come vettore a due elementi, [xLocal yLocal] . Utilizzare la funzione move per spostare il frame locale mentre il veicolo si muove.

Posizione dell'angolo inferiore sinistro della griglia in coordinate locali, specificato come vettore a due elementi, [xLocal yLocal] .

Valore predefinito per posizioni della mappa non specificate, comprese le aree esterne alla mappa, specificate come 0 o 1.

Funzioni oggetto

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

Esempi

comprimi tutto

Crea una mappa vuota di 10 m x 10 m.

map = binaryOccupancyMap(10,10,10);

Imposta l'occupazione delle posizioni nel mondo e mostra la mappa.

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.

Aumenta le posizioni occupate in base a un raggio dato.

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.

Ottieni le posizioni della griglia dalle località del mondo.

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

Imposta le posizioni della griglia su posizioni libere.

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.

Questo esempio mostra come convertire un'immagine in una griglia di occupazione binaria da utilizzare con la mappatura e la pianificazione del percorso.

Importa immagine.

image = imread('imageMap.png');

Convertire l'immagine in scala di grigi e poi in bianco e nero in base al valore soglia specificato.

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

Utilizzare un'immagine in bianco e nero come input della matrice per la griglia di occupazione binaria.

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.

Questo esempio mostra come convertire un file .pgm in un oggetto binaryOccupancyMap da utilizzare in MATLAB.

Importa l'immagine usando imread . L'immagine è piuttosto grande e dovrebbe essere ritagliata nella zona interessata.

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.

Le aree sconosciute (in grigio) devono essere rimosse e trattate come spazio libero. Creare una matrice logica basata su una soglia. Questo valore potrebbe variare a seconda dell'immagine. Lo spazio occupato dovrebbe essere impostato su 1 (bianco nell'immagine).

imageBW = imageCropped < 100;
imshow(imageBW)

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

Crea l'oggetto binaryOccupancyMap utilizzando l'immagine della mappa modificata.

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.

Funzionalità estese

espandi tutto

Cronologia versioni

Introdotto in R2015a

espandi tutto