checkFree

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

Описание

The 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 свойство косметической карты и смещение между задней осью транспортного средства и его центром.

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), так что все положения свободны от столкновения. Центр транспортного средства не входит в раздутую область ни в одном положении.

Входные параметры

свернуть все

Costmap, заданный как vehicleCostmap объект.

Положения транспортного средства, определенные как матрица <reservedrangesplaceholder4>-by-3 [x, y, Θ] векторы. 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-на-1 логический вектор. Элемент free является 1 (true), когда соответствующее транспортное средство помещается в vehiclePoses или указать на xyPoints без столкновения.

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

Совет

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

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

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

.
Введенный в R2018a