inflationCollisionChecker

Проверяющая столкновение настройка для costmap на основе инфляции

Описание

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

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

Создание

Описание

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

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

пример

ccConfig = inflationCollisionChecker(vehicleDims,numCircles) также указывает, что количество кругов раньше заключало транспортное средство. 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*) алгоритм. Попробуйте различные проверяющие столкновение настройки в costmap, используемом RRT* планировщик пути.

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

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

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

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

Используйте inflationCollisionChecker создать новую проверяющую столкновение настройку для costmap.

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

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

Задайте проверяющую столкновение настройку в CollisionChecker свойство costmap.

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

Отобразите costmap с новой проверяющей столкновение настройкой. Расширенные области уменьшаются.

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

Figure contains an axes object. The axes object 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 object. The axes object with title Collision Checking with Three Circles contains 11 objects of type image, patch, scatter, line, polygon. This object represents Inflated Areas.

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

Задайте размерности транспортного средства при помощи 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 object. The axes object 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 object. The axes object contains 20 objects of type line, polygon, scatter, text. These objects represent Circle, Circle centers.

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

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

Советы

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

Алгоритмы

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

  • NumCircles — Количество кругов раньше заключало транспортное средство

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

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

Для получения дополнительной информации о том, как эта проверяющая столкновение настройка задает раздутые области в costmap, смотрите раздел Algorithms vehicleCostmap.

Ссылки

[1] Циглер, J. и К. Стиллер. "Быстрая проверка столкновения интеллектуальное планирование движения транспортного средства". IEEE интеллектуальный симпозиум транспортного средства. 21-24 июня 2010.

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

Введенный в R2018b