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.

binaryOccupancyMap

Crear cuadrícula de ocupación con valores binarios

Descripción

El binaryOccupancyMap crea un objeto de mapa de ocupación 2-D, que puede utilizar para representar y visualizar el espacio de trabajo de un robot, incluidos los obstáculos. La integración de datos de sensores y estimaciones de posición crea una representación espacial de las ubicaciones aproximadas de los obstáculos.

Las cuadrículas de ocupación se utilizan en algoritmos robóticos como la planificación de rutas. También se utilizan en aplicaciones de mapeo, como para encontrar rutas libres de colisiones, evitar colisiones y calcular la localización. Puede modificar su cuadrícula de ocupación para adaptarla a su aplicación específica.

Cada celda en la cuadrícula de ocupación tiene un valor que representa el estado de ocupación de esa celda. Una ubicación ocupada se representa como true (1) y una ubicación libre se representa como false (0).

El objeto realiza un seguimiento de tres marcos de referencia: mundial, local y cuadrícula. El origen del marco mundial está definido por GridLocationInWorld, que define la esquina inferior izquierda del mapa en relación con el marco mundial. La propiedad LocalOriginInWorld especifica la ubicación del origen del marco local en relación con el marco mundial. La primera ubicación de la cuadrícula con índice (1,1) comienza en la esquina superior izquierda de la cuadrícula.

Nota

Este objeto se denominaba anteriormente robotics.BinaryOccupancyGrid.

Creación

Descripción

ejemplo

map = binaryOccupancyMap crea una cuadrícula de ocupación binaria 2-D con un ancho y alto de 10 m. La resolución de cuadrícula predeterminada es una celda por metro.

ejemplo

map = binaryOccupancyMap(width,height) crea una cuadrícula de ocupación binaria 2-D que representa un espacio de trabajo de width y height en metros. La resolución de cuadrícula predeterminada es una celda por metro.

map = binaryOccupancyMap(width,height,resolution) crea una cuadrícula con la propiedad Resolution especificada en celdas por metro. El mapa está en coordenadas mundiales de forma predeterminada.

map = binaryOccupancyMap(rows,cols,resolution,"grid") crea una cuadrícula de tamaño de ocupación binaria 2-D (rows, cols).

ejemplo

map = binaryOccupancyMap(p) crea una cuadrícula a partir de los valores de la matriz p. El tamaño de la cuadrícula coincide con el tamaño de la matriz, y cada valor de celda se interpreta desde su ubicación en la matriz. p contiene cualquier tipo numérico o lógico con ceros (0) y unos (1).

map = binaryOccupancyMap(p,resolution) crea un mapa a partir de una matriz con la propiedad Resolution especificada en celdas por metro.

map = binaryOccupancyMap(sourcemap) crea un objeto usando valores de otro objeto binaryOccupancyMap .

map = binaryOccupancyMap(sourcemap,resolution) crea un objeto usando valores de otro objeto binaryOccupancyMap , pero vuelve a muestrear la matriz para tener la resolución especificada.

Argumentos de entrada

expandir todo

Ancho del mapa, especificado como un escalar positivo en metros.

Altura del mapa, especificada como un escalar positivo en metros.

Valores de cuadrícula del mapa, especificados como una matriz.

Objeto de mapa de ocupación, especificado como un objeto binaryOccupancyMap .

Propiedades

expandir todo

Esta propiedad o parámetro es de solo lectura.

Número de filas y columnas de la cuadrícula, almacenadas como un vector de dos elementos con el formato [rows cols].

Esta propiedad o parámetro es de solo lectura.

Resolución de la cuadrícula, almacenada como escalar en celdas por metro.

Esta propiedad o parámetro es de solo lectura.

Valores mínimos y máximos de x-coordenadas en el marco local, almacenados como un vector de dos elementos de la forma [min max]. El marco local está definido por la propiedad LocalOriginInWorld .

Esta propiedad o parámetro es de solo lectura.

Valores mínimos y máximos de y-coordenadas en el marco local, almacenados como un vector de dos elementos de la forma [min max]. El marco local está definido por la propiedad LocalOriginInWorld .

Esta propiedad o parámetro es de solo lectura.

Valores mínimos y máximos de x-coordenadas en el marco mundial, almacenados como un vector de dos elementos de la forma [min max]. Estos valores indican el rango mundial de las coordenadas x en la cuadrícula.

Esta propiedad o parámetro es de solo lectura.

Valores mínimos y máximos de y-coordenadas, almacenados como un vector de dos elementos de la forma [min max]. Estos valores indican el rango mundial de las coordenadas y en la cuadrícula.

Ubicación de la esquina inferior izquierda de la cuadrícula en coordenadas mundiales, especificada como un vector de dos elementos, [xGrid yGrid].

Ubicación del origen del marco local en coordenadas mundiales, especificada como un vector de dos elementos, [xLocal yLocal]. Utilice la función move para cambiar el marco local a medida que se mueve su vehículo.

Ubicación de la esquina inferior izquierda de la cuadrícula en coordenadas locales, especificada como un vector de dos elementos, [xLocal yLocal].

Valor predeterminado para ubicaciones de mapa no especificadas, incluidas áreas fuera del mapa, especificadas como 0 o 1.

Funciones del objeto

copyCrear copia del mapa de ocupación binario
checkOccupancyConsultar si las localidades están libres u ocupadas
getOccupancyObtener valor de ocupación de ubicaciones
grid2localConvertir los índices de la cuadrícula en coordenadas locales
grid2worldConvertir los índices de la cuadrícula en coordenadas del mundo real
inflateAgrandar cada ubicación ocupada
insertRayInsertar rayo de observación con escaneo láser.
local2gridConvertir coordenadas locales a índices de cuadrícula
local2worldConvertir coordenadas locales a coordenadas mundiales
moveMover mapa en el marco mundial
occupancyMatrixConvierta una cuadrícula de ocupación en una matriz
raycastCalcular índices de celdas a lo largo de un rayo.
rayIntersectionEncuentra puntos de intersección de rayos y celdas de mapa ocupadas.
setOccupancyEstablecer el valor de ocupación de las ubicaciones
showMostrar mapa de ocupación binario
syncWithSincronizar mapa con mapa superpuesto
world2gridConvertir coordenadas mundiales a índices de cuadrícula
world2localConvertir coordenadas mundiales a coordenadas locales

Ejemplos

contraer todo

Cree un mapa vacío de 10 m x 10 m.

map = binaryOccupancyMap(10,10,10);

Establezca la ocupación de las ubicaciones del mundo real y muestre el mapa.

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.

Agrande las ubicaciones ocupadas con un radio determinado.

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.

Obtenga las ubicaciones de la cuadrícula a partir de las ubicaciones del mundo real.

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

Establezca las ubicaciones de la cuadrícula como ubicaciones libres.

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.

Este ejemplo muestra cómo convertir una imagen en una cuadrícula de ocupación binaria para usarla en mapeo y planificación de rutas.

Importar imagen.

image = imread('imageMap.png');

Convierta a escala de grises y luego a imagen en blanco y negro según el valor de umbral dado.

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

Utilice una imagen en blanco y negro como entrada de matriz para la cuadrícula de ocupación 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.

Este ejemplo muestra cómo convertir un archivo .pgm en un objeto binaryOccupancyMap para usar en MATLAB.

Importar imagen usando imread. La imagen es bastante grande y debe recortarse en el área correspondiente.

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

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

Las áreas desconocidas (grises) deben eliminarse y tratarse como espacio libre. Cree una matriz lógica basada en un umbral. Dependiendo de su imagen, este valor podría ser diferente. El espacio ocupado debe establecerse en 1 (blanco en la imagen).

imageBW = imageCropped < 100;
imshow(imageBW)

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

Cree el objeto binaryOccupancyMap usando la imagen del mapa ajustada.

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.

Capacidades ampliadas

Historial de versiones

Introducido en R2015a

expandir todo