Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

binaryOccupancyMap

Crear cuadrícula de ocupación con valores binarios

Descripción

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

Las cuadrículas de ocupación se utilizan en algoritmos de robótica, como la planificación de rutas. También se utilizan en aplicaciones de mapeo, como para encontrar rutas sin colisiones, realizar la evitación de colisiones y calcular la localización. Puede modificar su cuadrícula de ocupación para que se ajuste a su aplicación específica.

Cada celda de 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 y una ubicación libre se representa como .true (1)false (0)

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

Nota

Este objeto se denominaba anteriormente .robotics.BinaryOccupancyGrid

Creación

Descripción

ejemplo

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

ejemplo

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

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

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

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, con cada valor de celda interpretado desde su ubicación en la matriz. contiene cualquier tipo numérico o lógico con ceros (0) y (1).p

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

map = binaryOccupancyMap(p,resolution) crea un objeto con la proeprty especificada en celdas por metro.Resolution

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

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

Argumentos de entrada

expandir todo

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

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

Asignar valores de cuadrícula, especificados como una matriz.

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

Propiedades

expandir todo

Esta propiedad es de solo lectura.

Número de filas y columnas en la cuadrícula, almacenadas como un vector horizontal de dos elementos del formulario.[rows cols]

Esta propiedad es de solo lectura.

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

Esta propiedad es de solo lectura.

Valores mínimos y máximos de -coordinates en el marco local, almacenados como un vector horizontal de dos elementos del formulario.x[min max] El marco local se define por propiedad.LocalOriginInWorld

Esta propiedad es de solo lectura.

Valores mínimos y máximos de -coordinates en el marco local, almacenados como un vector horizontal de dos elementos del formulario.y[min max] El marco local se define por propiedad.LocalOriginInWorld

Esta propiedad es de solo lectura.

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

Esta propiedad es de solo lectura.

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

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 vector de dos elementos, .[xLocal yLocal] Utilice la función para cambiar el cuadro local a medida que se mueve su vehículo.move

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 o .01

Funciones del objeto

checkOccupancyCheck occupancy values for locations
getOccupancyGet occupancy value of locations
grid2localConvert grid indices to local coordinates
grid2worldConvert grid indices to world coordinates
inflateInflate each occupied grid 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
showShow occupancy grid values
syncWithSync map with overlapping map
world2gridConvert world coordinates to grid indices
world2localConvert world coordinates to local coordinates

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 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)

Inflar las ubicaciones ocupadas por un radio determinado.

inflate(map, 0.5) figure show(map)

Obtenga ubicaciones de cuadrícula de ubicaciones mundiales.

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

Establezca las ubicaciones de cuadrícula en ubicaciones libres.

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

En este ejemplo se muestra cómo convertir una imagen en una cuadrícula de ocupación binaria para usarla con la asignación y la planificación de rutas.

Importar imagen.

image = imread('imageMap.png');

Convierta a escala de grises y, a continuación, imagen en blanco y negro en función del valor de umbral especificado.

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

Utilice la imagen en blanco y negro como entrada de matriz para la cuadrícula de ocupación binaria.

grid = binaryOccupancyMap(bwimage);  show(grid)

En este ejemplo se muestra cómo convertir un archivo en un objeto para su uso en MATLAB..pgmbinaryOccupancyMap

Importar imagen usando .imread La imagen es bastante grande y debe recortarse al área relevante.

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

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

imageBW = imageCropped < 100; imshow(imageBW)

Cree un objeto utilizando una imagen de mapa ajustada.binaryOccupancyMap

map = binaryOccupancyMap(imageBW); show(map)

Consideraciones de compatibilidad

expandir todo

Cambio de comportamiento en versión futura

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Introducido en R2015a