exponenta event banner

checkOccupied

Проверка карты затрат на транспортное средство для занятых поз или точек

Описание

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

Для упрощения проверки на столкновение для позы транспортного средства, vehicleCostmap раздувает препятствия в соответствии с InflationRadius, как указано в CollisionChecker свойство карты затрат. Устройство контроля соударения вычисляет радиус надувания, заключая транспортное средство в набор перекрывающихся окружностей радиусом R, где центры этих окружностей лежат вдоль продольной оси транспортного средства. Радиус накачки - это минимальный R, необходимый для полного охвата транспортного средства в этих кругах. Поза транспортного средства свободна от столкновения, когда ни один из центров этих кругов не лежит на накачанной ячейке сетки. Для получения дополнительной информации см. алгоритм на vehicleCostmap справочная страница.

пример

occ = checkOccupied(costmap,vehiclePoses) проверяет, заняты ли позы транспортного средства.

occ = checkOccupied(costmap,xyPoints) проверка наличия точек (x, y) в xyPoints заняты.

occMat = checkOccupied(costmap) возвращает логическую матрицу, которая указывает, занята ли каждая ячейка карты затрат.

Примеры

свернуть все

Загрузить карту расходов с парковки.

data = load('parkingLotCostmap.mat');
parkMap = data.parkingLotCostmap;
plot(parkMap)

Создание позиций транспортного средства по прямолинейному пути. x и y - координаты (x, y) задней оси транспортного средства .theta - угол задней оси относительно оси X. Обратите внимание, что размеры транспортного средства хранятся в vehicleDimensions свойство costmap, и что имеется смещение между задней осью транспортного средства и его центром.

x = 6:0.25:10;
y = repmat(5,size(x));
theta = zeros(size(x));
vehiclePoses = [x',y',theta'];
hold on
plot(x,y,'b.')

Figure contains an axes. The axes contains 3 objects of type image, patch, line. This object represents Inflated Areas.

Проверьте, заняты ли позы.

occ = checkOccupied(parkMap,vehiclePoses)
occ = 17x1 logical array

   0
   0
   0
   0
   0
   1
   1
   1
   1
   1
      ⋮

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

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

свернуть все

Карта затрат, указанная как vehicleCostmap объект.

ТС представляет собой матрицу m-на-3 векторов [x, y, Start]. m - число поз.

x и y указывают местоположение транспортного средства в мировых единицах измерения, таких как счетчики. Это местоположение является центром задней оси транспортного средства.

Δ определяет угол ориентации транспортного средства в градусах относительно оси X. Λ положителен в направлении по часовой стрелке.

Пример: [3.4 2.6 0] определяет транспортное средство с центром задней оси (3,4, 2,6) и углом ориентации 0 градусов.

Точки, заданная как M-by-2 вещественная матрица, которая представляет координаты (x, y) M точек.

Пример: [3.4 2.6] указывает одну точку в (3.4, 2.6)

Пример: [3 2;3 3;4 7] указывает три точки: (3, 2), (3, 3) и (4, 7)

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

свернуть все

Поза или точка транспортного средства занята, возвращена как M-by-1 логический вектор. Элемент occ является 1 (true) когда соответствующее транспортное средство позирует в vehiclePoses или плоская точка в xyPoints занят.

Ячейка Costmap занята, возвращается в виде логической матрицы того же размера, что и сетка Costmap. Этот размер определяется MapSize имущества costmap. Элемент occMat является 1 (true), когда соответствующая ячейка находится в costmap занят.

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

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

.

См. также

Объекты

Функции

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