inflationCollisionChecker

Строение проверки столкновения для косметики, основанная на инфляции

Описание

inflationCollisionChecker функция создает InflationCollisionChecker объект, который содержит строение проверки столкновения косметической карты транспортного средства. Косметика транспортного средства с этим строением раздувает размер препятствий в транспортное средство среде. Эта инфляция основана на указанной InflationCollisionChecker такие свойства, как размерности транспортного средства и радиус окружностей, необходимых для окружности транспортного средства. Для получения дополнительной информации см. «Алгоритмы». Алгоритмы планирования пути, такие как pathPlannerRRT, используйте это строение проверки столкновения с помощью карты costmap, чтобы избежать раздувания препятствий и планировать пути без столкновения через окружение.

Используйте InflationCollisionChecker объект, чтобы задать CollisionChecker свойство вашего vehicleCostmap объект. Это строение проверки столкновения влияет на возврат значения checkFree и checkOccupied функции, используемые vehicleCostmap. Эти значения указывают, является ли положение транспортного средства свободным или занятым.

Создание

Описание

ccConfig = inflationCollisionChecker создает InflationCollisionChecker объект, ccConfig, который содержит строение проверки столкновения косметической карты транспортного средства. Этот объект использует один круг, чтобы окружить транспортное средство. Размерности транспортного средства соответствуют значениям по умолчанию vehicleDimensions объект.

ccConfig = inflationCollisionChecker(vehicleDims) определяет размерности транспортного средства, где vehicleDims является vehicleDimensions объект. The vehicleDims вход устанавливает VehicleDimensions свойство ccConfig.

пример

ccConfig = inflationCollisionChecker(vehicleDims,numCircles) также определяет количество кругов, используемых для ограждения транспортного средства. The numCircles вход устанавливает NumCircles свойство ccConfig.

пример

ccConfig = inflationCollisionChecker(___,Name,Value) устанавливает CenterPlacements и InflationRadius свойства с использованием пар "имя-значение" и входов от любого из предыдущих синтаксисов. Заключайте каждое имя свойства в кавычки.

Пример: inflationCollisionChecker('CenterPlacements',[0.2 0.5 0.8],'InflationRadius',1.2)

Свойства

расширить все

Количество кругов, используемых для окружения транспортного средства и вычисления радиуса инфляции, заданное как положительное целое число. Типичные значения от 1 до 5.

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

  • Для более медленной, но более точной проверки столкновения увеличьте количество кругов. Этот подход полезен при планировании пути вокруг плотных углов или через узкие коридоры, такие как на парковке.

Нормированное размещение центров окружностей вдоль продольной оси транспортного средства, заданное как 1-бай- NumCircles вектор вещественных значений в области значений [0, 1].

  • Значение 0 помещает центр окружности в заднюю часть транспортного средства.

  • Значение 1 помещает центр окружности в переднюю часть транспортного средства.

Задайте CenterPlacements когда вы хотите выровнять круги с точными положениями на транспортном средстве. Если вы уйдете CenterPlacements не заданный, объект вычисляет центральные положения так, чтобы круги полностью окружали транспортное средство. Если вы меняете количество размещений по центру, NumCircles обновляется до количества элементов в CenterPlacements.

Размерности транспортного средства, используемые для вычисления радиуса инфляции, заданные как vehicleDimensions объект. По умолчанию в InflationCollisionChecker объект использует размерности vehicleDimensions по умолчанию объект. Размерности транспортного средства указаны в мировых единицах измерения.

Радиус инфляции, заданный как неотрицательное реальное число. По умолчанию объект вычисляет радиус инфляции на основе значений NumCircles, CenterPlacements, и VehicleDimensions. Для получения дополнительной информации см. «Алгоритмы».

Функции объекта

plotПостроение строения столкновения

Примеры

свернуть все

Планируйте путь автомобиля к узкому парковочному месту с помощью оптимизированного быстро исследующего алгоритма случайного дерева (RRT *). Попробуйте различные строения проверки столкновения в косметике, используемой планировщиком пути RRT *.

Загрузите и отобразите косметику парковки. Косметика является vehicleCostmap объект. По умолчанию vehicleCostmap использует строение проверки столкновения, которая раздувает препятствия на основе радиуса только одного окружности, окружающего транспортное средство. Косметика переполняет препятствия (контуры парковочного места).

data = load('parkingLotCostmap.mat');
costmap = data.parkingLotCostmap;

figure
plot(costmap)
title('Collision Checking with One Circle')

Figure contains an axes. The axes with title Collision Checking with One Circle contains 2 objects of type image, patch. This object represents Inflated Areas.

Использование inflationCollisionChecker для создания нового строения проверки столкновения для косметики.

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

  • Для определения размерностей транспортного средства используйте vehicleDimensions объект.

Задайте строение проверки столкновения в CollisionChecker свойство косметики.

vehicleDims = vehicleDimensions(4.5,1.7);  % 4.5 m long, 1.7 m wide
numCircles = 3;
ccConfig = inflationCollisionChecker(vehicleDims,numCircles);
costmap.CollisionChecker = ccConfig;

Отображение косметики с новым строением проверки столкновения. Увеличенные площади уменьшаются.

figure
plot(costmap)
title('Collision Checking with Three Circles')

Figure contains an axes. The axes with title Collision Checking with Three Circles contains 2 objects of type image, patch. This object represents Inflated Areas.

Определите задачу планирования: транспортное средство начинается около левого входа на парковку и заканчивается парковочным местом.

startPose = [11 10 0];   % [meters, meters, degrees]
goalPose = [31.5 17 90]; 

Использование pathPlannerRRT объект для планирования пути к парковочному месту. Постройте график запланированного пути.

planner = pathPlannerRRT(costmap);
refPath = plan(planner,startPose,goalPose);

hold on
plot(refPath)
hold off

Figure contains an axes. The axes with title Collision Checking with Three Circles contains 11 objects of type image, patch, scatter, line, polygon. This object represents Inflated Areas.

Создайте строение проверки столкновения для косметики. Вручную укажите центры окружностей так, чтобы они полностью охватывали транспортное средство.

Определите размерности транспортного средства при помощи vehicleDimensions объект.

length = 5; % meters
width = 2; % meters
vehicleDims = vehicleDimensions(length,width);

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

distFromSide = 0.175;
centerPlacements = [distFromSide 0.5 1-distFromSide];
inflationRadius = 1.2;

Создайте и отобразите строение проверки столкновения.

ccConfig = inflationCollisionChecker(vehicleDims, ...
    'CenterPlacements',centerPlacements,'InflationRadius',inflationRadius);

figure
plot(ccConfig)

Figure contains an axes. The axes contains 20 objects of type line, polygon, scatter, text. These objects represent Circle, Circle centers.

В этом строении углы транспортного средства не заключаются в окружности. Чтобы полностью окружить транспортное средство, увеличьте радиус инфляции. Отображение обновлённого строения.

ccConfig.InflationRadius = 1.3;
plot(ccConfig)

Figure contains an axes. The axes contains 20 objects of type line, polygon, scatter, text. These objects represent Circle, Circle centers.

Используйте это строение проверки столкновения, чтобы создать косметику размером 10 на 20 метров.

costmap = vehicleCostmap(10,20,0.1,'CollisionChecker',ccConfig);

Совет

  • Чтобы визуально проверить, что круги полностью окружают транспортное средство, используйте plot функция. Если круги не полностью окружают транспортное средство, некоторые свободные положения возвращаются checkFree (или незанятые положения, возвращенные checkOccupied) может на самом деле столкнуться.

Алгоритмы

The InflationRadius свойство InflationCollisionChecker определяет величину в мировых единицах измерения, на которую надувать препятствия. По умолчанию InflationRadius равен радиусу наименьшего набора перекрывающихся кругов, необходимого для полного окружения транспортного средства, как определяется следующими свойствами:

  • NumCircles - Количество окружностей, используемых для ограждения транспортного средства

  • CenterPlacements - Размещение центров окружностей вдоль продольной оси транспортного средства

  • VehicleDimensions - Размерности транспортного средства

Для получения дополнительной информации о том, как это строение проверки столкновения задаёт раздутые области в косметике, смотрите раздел «Алгоритмы» vehicleCostmap.

Ссылки

[1] Циглер, Дж., и К. Стиллер. «Быстрая проверка столкновения для интеллектуального планирования движения транспортного средства». IEEE Intelligent Vehicle Symposium. 21 - 24 июня 2010 года.

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

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