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.

robotics.BinaryOccupancyGrid clase

Paquete: robotics

Cree una rejilla de ocupación con valores binarios

Descripción

crea un objeto de cuadrícula de ocupación 2-D, que puede utilizar para representar y visualizar un espacio de trabajo de robot, incluidos los obstáculos.BinaryOccupancyGrid 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 rejillas 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 sin colisiones, realizar la evasión de colisiones y calcular la localización. Puede modificar la cuadrícula de ocupación para que se adapte 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)

Los dos sistemas de coordenadas soportados son coordenadas mundiales y de cuadrícula. El origen de las coordenadas del mundo está definido por, que define la esquina inferior izquierda del mapa.GridLocationInWorld El número y el tamaño de las ubicaciones de cuadrícula se definen mediante el.Resolution Además, la primera ubicación de cuadrícula con índice comienza en la esquina superior izquierda de la cuadrícula.(1,1)

Construcción

ejemplo

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

map = robotics.BinaryOccupancyGrid(width,height,resolution) crea una rejilla con especificado en celdas por metro.resolution El mapa está en coordenadas del mundo por defecto. Puede utilizar cualquiera de los argumentos de las sintaxis anteriores.

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

ejemplo

map = robotics.BinaryOccupancyGrid(p) crea una rejilla a partir de los valores de Matrix.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 unos (1).p

map = robotics.BinaryOccupancyGrid(p,resolution) crea un BinaryOccupancyGrid objeto con resolution especificado en celdas por metro.

Argumentos de entrada

expandir todo

Ancho del mapa, especificado como un doble en metros.

Tipos de datos: double

Altura del mapa, especificada como un doble en metros.

Tipos de datos: double

Resolución de rejilla, especificada como un doble en celdas por metro.

Tipos de datos: double

Rejilla de ocupación de entrada, especificada como una matriz de unos y ceros. El tamaño de la cuadrícula coincide con el tamaño de la matriz. Cada elemento de la matriz corresponde a una ubicación ocupada () o a una ubicación libre ().10

Propiedades

expandir todo

Número de filas y columnas de la cuadrícula, almacenada como un vector horizontal de dos elementos del formulario.[rows cols] Este valor es de solo lectura.

Resolución de rejilla, almacenada como un escalar en celdas por metro. Este valor es de solo lectura.

Tipos de datos: double

Valores mínimos y máximos de-coordenadas, 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 Este valor es de solo lectura.

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

coordenadas del mundo de la esquina inferior izquierda de la cuadrícula, especificado como un vector de dos elementos.[x,y]

Tipos de datos: double

Métodos

Ejemplos

contraer todo

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

map = robotics.BinaryOccupancyGrid(10,10,10);

Establecer la ocupación de lugares del mundo y Mostrar mapa.

map = robotics.BinaryOccupancyGrid(10,10,10); 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)

Obtener ubicaciones de cuadrícula de ubicaciones mundiales.

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

Establezca ubicaciones de cuadrícula en ubicaciones libres.

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

Este ejemplo muestra cómo convertir una imagen en una cuadrícula de ocupación binaria para usarla con Robotics System Toolbox®

% Import Image filepath = fullfile(matlabroot,'examples','robotics','imageMap.png'); image = imread(filepath);  % Convert to grayscale and then black and white image based on arbitrary % threshold. grayimage = rgb2gray(image); bwimage = grayimage < 0.5;  % Use black and white image as matrix input for binary occupancy grid grid = robotics.BinaryOccupancyGrid(bwimage);  show(grid)

Este ejemplo muestra cómo convertir un archivo que contiene un mapa de ROS en un mapa para su uso en MATLAB..pgmBinaryOccupancyGrid

Importar imagen utilizando.imread La imagen es bastante grande y se debe recortar a la zona 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)

Crear objeto mediante la imagen de mapa ajustada.BinaryOccupancyGrid

map = robotics.BinaryOccupancyGrid(imageBW); show(map)

Capacidades ampliadas

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

Introducido en R2015a