Пробел планирования представления Costmap вокруг транспортного средства
vehicleCostmap объект создает costmap, который представляет пространство поиска планирования вокруг транспортного средства. costmap содержит информацию о среде, такой как препятствия или области, которые не может пересечь транспортное средство. Чтобы проверять на столкновения, costmap раздувает препятствия с помощью радиуса инфляции, заданного в CollisionChecker свойство. costmap используется алгоритмами планирования пути, такими как pathPlannerRRT, найти, что пути без коллизий для транспортного средства следуют.
costmap хранится как 2D сетка ячеек, часто названных occupancy grid или occupancy map. Каждая ячейка сетки в costmap имеет значение в области значений [0, 1] представление стоимости навигации через ту ячейку сетки. Состоянием каждой ячейки сетки является free, occupied или unknown, как определено FreeThreshold и OccupiedThreshold свойства.
Следующий рисунок показывает costmap с демонстрационными затратами и состояниями ячейки сетки.

costmap = vehicleCostmap( создает транспортное средство costmap использование величины затрат в матричном C)C.
costmap = vehicleCostmap( создает транспортное средство costmap из карты заполнения occMap)occMap. Использование этого синтаксиса требует Navigation Toolbox™.
costmap = vehicleCostmap(___,'MapLocation', задает в mapLocation)mapLocation нижние левые угловые координаты costmap. Задайте 'MapLocation',mapLocation после любых из предыдущих входных параметров и в любом порядке среди Name,Value парные аргументы.
costmap = vehicleCostmap(___, использование Name,Value)Name,Value парные аргументы, чтобы задать FreeThreshold, OccupiedThreshold, CollisionChecker, и CellSize свойства. Например, vehicleCostmap(C,'CollisionChecker',ccConfig) использует inflationCollisionChecker объект, ccConfig, представлять форму транспортного средства и проверку на столкновения. После того, как вы создадите объект, можно обновить все эти свойства кроме CellSize.
checkFree | Проверяйте транспортное средство costmap на положения без коллизий или точки |
checkOccupied | Проверяйте транспортное средство costmap на занятые положения или точки |
getCosts | Получите величину затрат на ячейки в транспортном средстве costmap |
setCosts | Установите величину затрат на ячейки в транспортном средстве costmap |
plot | Постройте транспортное средство costmap |
Упростить проверку то, является ли положение транспортного средства в столкновении, vehicleCostmap раздувает размер препятствий. Проверяющий столкновение алгоритм выполняет эти шаги:
Вычислите радиус инфляции, в мировых единицах измерения, от размерностей транспортного средства. Радиус инфляции по умолчанию равен радиусу самого маленького набора перекрывающихся кругов, требуемых полностью заключать транспортное средство. Центральные точки кругов простираются вдоль продольной оси транспортного средства. Увеличение числа кругов уменьшает радиус инфляции, который включает более точную проверку столкновения.
| Радиус инфляции, один центр | Радиус инфляции, три центра |
|---|---|
|
|
|
Преобразуйте радиус инфляции во многие ячейки сетки, R. Окружите значения нецелого числа R до следующего самого большого целого числа.
Раздуйте размер препятствий с помощью R. Пометьте все ячейки в расширенной области, как занято.
Схемы отображают занятые ячейки темно-красным. Ячейки в расширенной области окрашены светло-красные. Чистая черная линия показывает исходный радиус инфляции. В схеме слева, R равняется 3. В схеме справа, R равняется 2.
| Расширенные ячейки сетки, один центр | Расширенные ячейки сетки, три центра |
|---|---|
|
|
|
Проверяйте, лежат ли центральные точки транспортного средства на расширенных ячейках сетки.
Если какая-либо центральная точка находится на расширенной ячейке сетки, то положение транспортного средства занято. checkOccupied функция возвращает true. Занятое положение не обязательно означает столкновение. Например, транспортное средство может лечь на расширенную ячейку сетки, но не на ячейку сетки, которая на самом деле занята.
Если никакие центральные точки не лежат на расширенных ячейках сетки, и величина затрат на каждую ячейку, содержащую центральную точку, меньше FreeThreshold, затем положение транспортного средства свободно. checkFree функция возвращает true.
Если никакие центральные точки не лежат на расширенных ячейках сетки, и величина затрат на любую ячейку, содержащую центральную точку, больше FreeThreshold, затем положение транспортного средства неизвестно. Оба checkFree и checkOccupied возвратите false.
Следующие положения рассматриваются в столкновении, потому что по крайней мере одна центральная точка находится на расширенной области.
| Позируйте в столкновении, одном центре | Позируйте в столкновении, трех центрах |
|---|---|
|
|
|