checkFree

Проверяйте транспортное средство costmap на положения без коллизий или точки

Описание

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

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

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

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

  • Величина затрат на каждого содержащего центр круга меньше FreeThreshold из costmap.

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

пример

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

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

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

Примеры

свернуть все

Загрузите 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

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

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

   1
   1
   1
   1
   1
   1
   1
   1
   1

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

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

свернуть все

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

Положения транспортного средства, заданные как m-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-by-1 логический вектор. Элемент free 1 TRUE) когда соответствующее положение транспортного средства в vehiclePoses или укажите в xyPoints без коллизий.

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

Советы

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

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

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

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

Объекты

Функции

Введенный в R2018a

Для просмотра документации необходимо авторизоваться на сайте