exponenta event banner

inflationCollisionChecker

Конфигурация проверки коллизий для карты затрат на основе инфляции

Описание

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

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

Создание

Описание

ccConfig = inflationCollisionChecker создает InflationCollisionChecker объект, ccConfig, которая содержит конфигурацию проверки на столкновение карты затрат транспортного средства. Этот объект использует одну окружность для охвата транспортного средства. Размеры транспортного средства соответствуют значениям по умолчанию 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.

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

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

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

Алгоритмы

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

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

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

  • VehicleDimensions - Габариты транспортного средства

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

Ссылки

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

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

.
Представлен в R2018b