exponenta event banner

checkFree

Проверка карты стоимости транспортного средства на наличие безударных поз или точек

Описание

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

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

Поза транспортного средства свободна от столкновения при соблюдении следующих условий:

  • Ни один из центров круга транспортного средства не лежит на накачанной сетке.

  • Стоимость каждого элемента, содержащего центр круга, меньше значения FreeThreshold карты расходов.

Для получения дополнительной информации см. алгоритм на vehicleCostmap справочная страница.

пример

free = checkFree(costmap,vehiclePoses) проверяет, свободны ли позы транспортного средства от столкновения с препятствиями на карте расходов.

free = checkFree(costmap,xyPoints) проверка наличия точек (x, y) в xyPoints свободны от столкновения с препятствиями на карте затрат.

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

Примеры

свернуть все

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

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

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

x = 4:0.25:6;
y = 3:0.25:5;
theta = repmat(45,size(x));
vehiclePoses = [x',y',theta'];
hold on
plot(x,y,'b.')
hold off

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

Первые несколько координат (x, y) задней оси находятся в пределах надутой области. Однако это не означает столкновения, поскольку центр транспортного средства может находиться вне надутой области. Проверьте, свободны ли позы от столкновений.

free = checkFree(parkMap,vehiclePoses)
free = 9x1 logical array

   1
   1
   1
   1
   1
   1
   1
   1
   1

Все значения free равны 1 (true), так что все позы свободны от столкновений. Центр транспортного средства не входит в надутую зону ни в какой позе.

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

свернуть все

Карта затрат, указанная как 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 логический вектор. Элемент free является 1 (true) когда соответствующее транспортное средство позирует в vehiclePoses или точка в xyPoints не имеет коллизий.

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

Совет

  • Если указано небольшое значение InflationRadius который не полностью охватывает транспортное средство, то checkFree может сообщать о занятых представлениях как свободных от столкновений. Во избежание этой ситуации значение по умолчанию: InflationRadius полностью закрывает транспортное средство.

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

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

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