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)

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

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

inflate(map, 0.5)
figure
show(map)

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object contains an object of type image.

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

imageBW = imageCropped < 100;
imshow(imageBW)

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

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

map = binaryOccupancyMap(imageBW);
show(map)

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

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

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

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

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

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

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