Сетки заполнения

Обзор

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

Сетки заполнения используются в алгоритмах робототехники, таких как планирование пути (см. mobileRobotPRM или plannerRRT (Navigation Toolbox)). Они используются в отображении приложений для интеграции информации о датчике в дискретной карте в планировании пути для нахождения путей без коллизий, и для локализации роботов в известной среде (см. monteCarloLocalization (Navigation Toolbox) или matchScans (Navigation Toolbox)). Можно создать карты с различными размерами и разрешениями, чтобы соответствовать определенному приложению.

Для 3-D карт заполнения смотрите occupancyMap3D (Navigation Toolbox).

Для 2D сеток заполнения существует два представления:

  • Бинарная сетка заполнения (см. binaryOccupancyMap)

  • Сетка заполнения вероятности (см. occupancyMap (Navigation Toolbox))

Бинарная сетка заполнения использует true значения, чтобы представлять занятую рабочую область (препятствия) и false значения, чтобы представлять свободную рабочую область. Эта сетка показывает, где препятствия и может ли робот переместиться через тот пробел. Используйте бинарную сетку заполнения, если емкость памяти является фактором в вашем приложении.

Сетка заполнения вероятности использует значения вероятности, чтобы создать более подробное представление карты. Это представление является предпочтительным методом для использования сеток заполнения. Эта сетка обычно упоминается как просто сетка заполнения. Каждая ячейка в сетке заполнения имеет значение, представляющее вероятность заполнения той ячейки. Значения близко к 1 представляют высокую уверенность, что ячейка содержит препятствие. Значения близко к 0 представляют уверенность, что ячейка не занята и свободное препятствие. Вероятностные значения могут дать лучшую точность объектов и улучшать производительность определенных приложений алгоритма.

Двоичный файл и сетки заполнения вероятности совместно используют несколько свойств и деталей алгоритма. Декартовы и мировые координаты применяются к обоим типам сеток заполнения. Функция инфляции также применяется к обеим сеткам, но каждая сетка реализует ее по-другому. Эффекты насыщения представления и вероятности логарифмических разногласий применяются к сеткам заполнения вероятности только.

Мир, сетка и локальные координаты

При работе с сетками заполнения в MATLAB® можно использовать или мир, локальные, или декартовы координаты.

Система координат абсолютной ссылки, в которой действует робот, упоминается как world frame в сетке заполнения. Большинство операций выполняется в мировой системе координат, и это - выбор по умолчанию при использовании функций MATLAB в этом тулбоксе. Мировые координаты используются в качестве системы координат абсолютной координаты с фиксированным источником, и точки могут быть заданы с любым разрешением. Однако все местоположения преобразованы в местоположения сетки из-за хранения данных и пределов разрешения самой карты.

local frame относится к эгоцентрической системе координат для транспортного средства, перемещающегося по карте. GridOriginInLocal и LocalOriginInWorld свойства задают источник сетки в локальных координатах и относительном местоположении локальной системы координат в мировых координатах. Можно настроить эту локальную систему координат с помощью move функция. Для примера с помощью локальной системы координат в качестве эгоцентрической карты, чтобы эмулировать транспортное средство перемещающиеся и передающие локальные препятствия, смотрите, Создают Эгоцентрические Карты Заполнения Используя Датчики Области значений (Navigation Toolbox).

Декартовы координаты задают фактическое разрешение сетки заполнения и конечные местоположения препятствий. Источник декартовых координат находится в верхнем левом углу сетки с первым местоположением, имеющим индекс (1,1). Однако GridLocationInWorld свойство сетки заполнения в MATLAB задает нижний левый угол сетки в мировых координатах. При создании объекта сетки заполнения, свойства, такие как XWorldLimits и YWorldLimits заданы входом widthвысота, и resolution. Этот рисунок показывает визуальное представление этих свойств и отношения между мировыми и декартовыми координатами.

Инфляция координат

И бинарные и нормальные сетки заполнения имеют опцию для расширения препятствий. Эта инфляция используется, чтобы добавить коэффициент безопасности на препятствиях и создать буферные зоны между роботом и препятствием в среде. inflate функция объекта сетки заполнения преобразует заданный radius к количеству ячеек, окруженных от resolution*radius значение. Каждый алгоритм использует это значение ячейки отдельно, чтобы изменить значения вокруг препятствий.

Бинарная сетка заполнения

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

Раздуйте препятствия в бинарной сетке заполнения

В этом примере показано, как создать карту, установите местоположения препятствия и раздуйте ее радиусом 1 м. Дополнительные графики на фигуре помогают проиллюстрировать инфляцию и сдвиг из-за преобразования в местоположения сетки.

Создайте бинарную сетку заполнения. Установите заполнение положения [5,5].

map = binaryOccupancyMap(10,10,5);
setOccupancy(map,[5 5], 1);

Раздуйте занятые пробелы на карте на 1 м.

inflate(map,1);
show(map)

Постройте исходное местоположение, преобразованное положение сетки и нарисуйте исходный круг. Вы видите из этого графика, что центр сетки [4.9 4.9], который смещен от [5 5] местоположение. Круг на 1 м нарисован оттуда, и заметьте, что любые ячейки, которые касаются этого круга, отмечены, как занято. Фигура увеличена масштаб к соответствующей области.

hold on
theta = linspace(0,2*pi);
x = 4.9+cos(theta); % x circle coordinates
y = 4.9+sin(theta); % y circle coordinates
plot(5,5,'*b','MarkerSize',10) % Original location
plot(4.9,4.9,'xr','MarkerSize',10) % Grid location center
plot(x,y,'-r','LineWidth',2); % Circle of radius 1m.
axis([3.6 6 3.6 6])
ax = gca;
ax.XTick = [3.6:0.2:6];
ax.YTick = [3.6:0.2:6];
grid on
legend('Original Location','Grid Center','Inflation')

Как вы видите от вышеупомянутой фигуры, даже ячейки, которые едва перекрываются с радиусом инфляции, помечены, как занято.

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

| (Navigation Toolbox) | (Navigation Toolbox)

Похожие темы