binaryOccupancyMap

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

Описание

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

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

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

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

Примечание

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

Создание

Описание

пример

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

пример

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

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

map = binaryOccupancyMap(rows,cols,resolution,"grid") создает 2D бинарную сетку заполнения размера (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)

Раздуйте занятые местоположения данным радиусом.

inflate(map, 0.5)
figure
show(map)

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

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

Установите местоположения сетки на свободные местоположения.

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

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

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

image = imread('imageMap.png');

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

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

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

grid = binaryOccupancyMap(bwimage);

show(grid)

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

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

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

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

imageBW = imageCropped < 100;
imshow(imageBW)

Создайте binaryOccupancyMap объект с помощью настроенного изображения карты.

map = binaryOccupancyMap(imageBW);
show(map)

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

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

Изменение поведения в будущем релизе

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

Представленный в R2015a