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