exponenta event banner

updateOccupancy

Интеграция вероятностных наблюдений в местоположениях

Описание

updateOccupancy(map,occMatrix) вероятностно интегрирует матрицу значений занятости, occMatrix, с текущей матрицей занятости occupancyMap объект map. Размер матрицы должен быть равен GridSize свойство карты.

пример

updateOccupancy(map,locations,obs) вероятностно интегрирует значения наблюдений, obs, в ячейки карты занятости, соответствующие матрице n-by-2 мировых координат locations. Значения наблюдений определяются на основе модели инверсного датчика.

updateOccupancy(map,xy,obs,'world') вероятностно интегрирует значения наблюдений, obs, в ячейки, соответствующие матрице n-by-2 мировых координат xy.

updateOccupancy(map,xy,obs,'local') вероятностно интегрирует значения наблюдений, obs, в ячейки, соответствующие матрице n-by-2 локальных координат xy.

updateOccupancy(map,ij,obs,'grid') вероятностно интегрирует значения наблюдений, obs, в ячейки, соответствующие матрице n-by-2 индексов сетки ij.

updateOccupancy(map,bottomLeft,obsMatrix) вероятностно интегрирует матрицу m-на-n значений наблюдения, obsMatrix, в субрегион на карте. Укажите левый нижний угол субрегиона в качестве мирового положения, bottomLeft. Субрегион простирается на m строк вверх и на n столбцов справа от указанного положения.

updateOccupancy(map,bottomLeft,obsMatrix,'world') вероятностно интегрирует матрицу m-на-n значений наблюдения, obsMatrix, в субрегион на карте. Укажите левый нижний угол субрегиона в качестве мирового положения, bottomLeft. Субрегион простирается на m строк вверх и на n столбцов справа от указанного положения.

updateOccupancy(map,bottomLeft,obsMatrix,'local') вероятностно интегрирует матрицу m-на-n значений наблюдения, obsMatrix, в субрегион на карте. Укажите нижний левый угол субрегиона в качестве локального положения. bottomLeft. Субрегион простирается на m строк вверх и на n столбцов справа от указанного положения.

updateOccupancy(map,topLeft,obsMatrix,'grid') вероятностно интегрирует матрицу m-на-n значений наблюдения, obsMatrix, в субрегион на карте. Укажите левый верхний угол субрегиона в качестве индекса сетки. topLeft. Субрегион простирается на m строк вниз и на n столбцов справа от указанного индекса.

Примеры

свернуть все

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

map = occupancyMap(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];

pvalues = [0.2; 0.4; 0.6; 0.8; 1];

updateOccupancy(map,[x y],pvalues)
figure
show(map)

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

Надувайте занимаемые площади на радиус 0,5 м. Большие значения заполняемости заменяют меньшие значения.

inflate(map,0.5)
figure
show(map)

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

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

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

Задайте значения заполняемости для расположений сетки.

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

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

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

свернуть все

Представление карты, указанное как occupancyMap объект. Этот объект представляет среду транспортного средства. Объект содержит матричную сетку с каждым значением, представляющим вероятность занятости этой ячейки. Значения, близкие к 1 представляют высокую вероятность того, что ячейка содержит препятствие. Значения, близкие к 0 представляют высокую вероятность того, что ячейка не занята и не содержит препятствий.

Матрица значений занятости, заданная как матрица. Размер матрицы должен быть равен GridSize свойство карты.

Значения занятости могут быть любого числового типа со значениями от 0 до 1. Если матрица является логической, значения занятости по умолчанию - 0,7 (true) и 0,4 (false) используются.

Пример: updateOccupancy(map,ones(map.GridSize)*0.6)

Типы данных: single | double | logical

Местоположения ячеек в мировых координатах, указанные как матрица n-by-2 со строками вида [x y], где n - число мировых координат. Функция игнорирует расположения за пределами границ карты.

Пример: updateOccupancy(map,[1 1; 3 3; 5 5],false)

Типы данных: single | double

Расположение нижнего левого угла матрицы наблюдения, заданного как двухэлементный вектор формы [xCoord yCoord]. Местоположение находится в мировых или локальных координатах на основе синтаксиса.

Пример: updateOccupancy(map,[2 2],[0.2 0.4; 0.6 0.8],'world')

Типы данных: single | double

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

Пример: updateOccupancy(map,[2 2],[0.2 0.4; 0.6 0.8],'grid')

Типы данных: single | double

Мировые или локальные координаты, заданные в виде матрицы n-by-2 со строками формы [x y], где n - число координат.

Пример: updateOccupancy(map,[2 2; 4 4; 6 6],[0.2; 0.4; 0.6],'world')

Типы данных: single | double

Позиции сетки, заданные как матрица n-by-2 со строками формы [i j] в [rows cols] формат, где n - количество позиций сетки.

Пример: updateOccupancy(map,[2 2; 4 4; 6 6],[0.2; 0.4; 0.6],'grid')

Типы данных: single | double

Значения вероятностного наблюдения, указанные как числовой или логический скаляр или числовой или логический n-элементный вектор-столбец того же размера, что и locations, xy, или ij.

obs значения могут быть любым значением от 0 до 1, но если obs - логический вектор, значения наблюдения по умолчанию 0,7 (true) и 0,4 (false) используются. Если obs является числовым или логическим скаляром, значение применяется ко всем координатам в locations, xy, или ij. Эти значения коррелируют с моделью инверсного датчика для литья лучей.

Пример: updateOccupancy(map,[2 2; 4 4; 6 6],[0.2; 0.4; 0.6],'local')

Типы данных: single | double | logical

Матрица значений вероятностного наблюдения, заданная в виде m-на-n числовой или логической матрицы.

Значения наблюдения могут быть любого числового типа со значением от 0 до 1. Если матрица логическая, значения наблюдения по умолчанию 0,7 (true) и 0,4 (false) используются.

Пример: updateOccupancy(map,[2 2],[0.2 0.4; 0.6 0.8])

Типы данных: single | double | logical

Подробнее

свернуть все

Инверсная модель датчика

Инверсная модель датчика определяет, как значения устанавливаются вдоль луча от считывания датчика диапазона до препятствий на карте. NaN значения диапазона игнорируются. Значения диапазона больше maxrange не обновляются.

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

Представлен в R2019b