Пробел планирования представления 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
.
Следующие положения рассматриваются в столкновении, потому что по крайней мере одна центральная точка находится на расширенной области.
Позируйте в столкновении, одном центре | Позируйте в столкновении, трех центрах |
---|---|
|
|