exponenta event banner

binaryOccupancyMap

Создание сетки занятости с двоичными значениями

Описание

binaryOccupancyMap создает объект карты занятости 2-D, который можно использовать для представления и визуализации рабочего пространства робота, включая препятствия. Интеграция данных датчиков и оценок положения создает пространственное представление приблизительных местоположений препятствий.

Сетки занятости используются в алгоритмах робототехники, таких как планирование пути. Они также используются в приложениях отображения, таких как поиск путей без столкновений, выполнение предотвращения столкновений и расчет локализации. Можно изменить сетку заполняемости в соответствии с конкретным приложением.

Каждая ячейка в сетке занятости имеет значение, представляющее состояние занятости этой ячейки. Занятое место представлено как true (1) и свободное местоположение представлено как false (0).

Объект отслеживает три опорные рамки: мировую, локальную и сетку. Начало мировой рамки определяется GridLocationInWorld, который определяет нижний левый угол карты относительно мировой рамки. LocalOriginInWorld свойство указывает местоположение начала локального фрейма относительно мирового фрейма. Первое расположение сетки с индексом (1,1) начинается в левом верхнем углу сетки.

Примечание

Этот объект был назван ранее robotics.BinaryOccupancyGrid.

Создание

Описание

пример

map = binaryOccupancyMap создает 2-D двоичную сетку заполняемости шириной и высотой 10 м. Разрешение сетки по умолчанию - одна ячейка на метр.

пример

map = binaryOccupancyMap(width,height) создает 2-D двоичную сетку занятости, представляющую рабочее пространство width и height в метрах. Разрешение сетки по умолчанию - одна ячейка на метр.

map = binaryOccupancyMap(width,height,resolution) создает сетку с помощью Resolution свойство, указанное в ячейках на метр. По умолчанию карта находится в координатах мира.

map = binaryOccupancyMap(rows,cols,resolution,"grid") создает 2-D двоичную сетку заполняемости размера (rows,cols).

пример

map = binaryOccupancyMap(p) создает сетку из значений в матрице p. Размер сетки соответствует размеру матрицы, причем каждое значение ячейки интерпретируется из ее расположения в матрице. p содержит любой числовой или логический тип с нулями (0) и единицами (1).

map = binaryOccupancyMap(p,resolution) создает карту из матрицы с помощью Resolution свойство, указанное в ячейках на метр.

map = binaryOccupancyMap(p,resolution) создает объект с помощью Resolution свойство, указанное в ячейках на метр.

map = binaryOccupancyMap(sourcemap) создает объект с использованием значений из другого binaryOccupancyMap объект.

map = binaryOccupancyMap(sourcemap,resolution) создает объект с использованием значений из другого binaryOccupancyMap объект, но выполняет повторную выборку матрицы с заданным разрешением.

Входные аргументы

развернуть все

Ширина карты, заданная как положительный скаляр в метрах.

Высота карты, заданная как положительный скаляр в метрах.

Отображение значений сетки, указанных как матрица.

Объект карты занятости, указанный как binaryOccupancyMap объект.

Свойства

развернуть все

Это свойство доступно только для чтения.

Количество строк и столбцов в сетке, хранящихся в виде двухэлементного горизонтального вектора формы [rows cols].

Это свойство доступно только для чтения.

Разрешение сетки, хранящееся в виде скаляра в ячейках на метр.

Это свойство доступно только для чтения.

Минимальное и максимальное значения координат x в локальном кадре, хранящиеся в виде двухэлементного горизонтального вектора формы [min max]. Локальный кадр определяется LocalOriginInWorld собственность.

Это свойство доступно только для чтения.

Минимальное и максимальное значения координат y в локальном кадре, хранящиеся в виде двухэлементного горизонтального вектора формы [min max]. Локальный кадр определяется LocalOriginInWorld собственность.

Это свойство доступно только для чтения.

Минимальное и максимальное значения координат x в мировом фрейме, хранящиеся в виде двухэлементного горизонтального вектора формы [min max]. Эти значения указывают мировой диапазон координат X в сетке.

Это свойство доступно только для чтения.

Минимальное и максимальное значения координат y, хранящиеся в виде двухэлементного вектора формы [min max]. Эти значения указывают мировой диапазон координат y в сетке.

Расположение нижнего левого угла сетки в мировых координатах, определяемое как двухэлементный вектор, [xGrid yGrid].

Местоположение начала локального кадра в мировых координатах, определяемое как двухэлементный вектор, [xLocal yLocal]. Используйте move используется для перемещения локальной рамы по мере перемещения транспортного средства.

Расположение нижнего левого угла сетки в локальных координатах, заданных как двухэлементный вектор, [xLocal yLocal].

Значение по умолчанию для неуказанных местоположений карты, включая области за пределами карты, указанное как 0 или 1.

Функции объекта

checkOccupancyПроверка значений заполняемости для местоположений
getOccupancyПолучение значения заполняемости местоположений
grid2localПреобразование индексов сетки в локальные координаты
grid2worldПреобразование индексов сетки в мировые координаты
inflateНадувать каждое занятое расположение сетки
insertRayВставить луч от наблюдения лазерного сканирования
local2gridПреобразование локальных координат в индексы сетки
local2worldПреобразование локальных координат в мировые
moveПереместить карту в мировой рамке
occupancyMatrixПреобразовать сетку занятости в матрицу
raycastВычисление индексов ячеек вдоль луча
rayIntersectionПоиск точек пересечения лучей и занятых ячеек карты
setOccupancyУстановка значения заполняемости местоположений
showПоказать значения матрицы занятости
syncWithСинхронизировать карту с перекрывающейся картой
world2gridПреобразование мировых координат в индексы сетки
world2localПреобразование мировых координат в локальные

Примеры

свернуть все

Создайте пустую карту размером 10 м x 10 м.

map = binaryOccupancyMap(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)

Figure contains an axes. The axes with title Binary Occupancy Grid contains an object of type image.

Надувать занятые места на заданный радиус.

inflate(map, 0.5)
figure
show(map)

Figure contains an axes. The axes with title Binary Occupancy Grid contains an object of type image.

Получите расположения сетки из мировых расположений.

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

Задайте свободные расположения сетки.

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

Figure contains an axes. The axes with title Binary Occupancy Grid contains an object of type image.

В этом примере показано, как преобразовать изображение в двоичную сетку занятости для использования с мэппингом и планированием путей.

Импорт изображения.

image = imread('imageMap.png');

Преобразование в градации серого, а затем черно-белое изображение на основе заданного порогового значения.

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

Черно-белое изображение используется в качестве матричного ввода для двоичной сетки занятости.

grid = binaryOccupancyMap(bwimage);

show(grid)

Figure contains an axes. The axes with title Binary Occupancy Grid contains an object of type image.

В этом примере показано, как преобразовать .pgm в файл в binaryOccupancyMap для использования в MATLAB.

Импорт изображения с помощью imread. Изображение довольно большое и должно быть обрезано до соответствующей области.

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

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

Неизвестные области (серые) должны быть удалены и рассматриваться как свободное пространство. Создайте логическую матрицу на основе порогового значения. В зависимости от изображения это значение может отличаться. Занятое пространство должно быть равно 1 (белое на изображении).

imageBW = imageCropped < 100;
imshow(imageBW)

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

Создать binaryOccupancyMap с использованием скорректированного изображения карты.

map = binaryOccupancyMap(imageBW);
show(map)

Figure contains an axes. The axes with title Binary Occupancy Grid contains an object of type image.

Вопросы совместимости

развернуть все

Изменение поведения в будущем выпуске

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2015a