checkOccupied

Проверяйте автомобиль costmap на занятые положения или точки

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

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

Синтаксис

occ = checkOccupied(costmap,vehiclePoses)
occ = checkOccupied(costmap,xyPoints)
occMat = checkOccupied(costmap)

Описание

пример

occ = checkOccupied(costmap,vehiclePoses) проверки, заняты ли положения автомобиля.

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

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

Примеры

свернуть все

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

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

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

   0
   0
   0
   0
   0
   1
   1
   1
   1
   1
      ⋮

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

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

свернуть все

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

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

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

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

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

Объекты

Функции

Введенный в R2018a