plannerHybridAStar

Гибрид* планировщик пути

Описание

Гибрид* объект планировщика пути генерирует сглаженный путь на данном 2D пробеле для транспортных средств с неголономными ограничениями.

Примечание

Гибрид* планировщик проверяет на столкновения в карте путем интерполяции примитивов движения и аналитического расширения на основе ValidationDistance свойство stateValidator объект. Если ValidationDistance свойство установлено в Inf, объект интерполирует на основе размера ячейки карты, заданной в блоке проверки допустимости состояния. Раздуйте карту заполнения прежде, чем присвоить его планировщику, чтобы составлять размер транспортного средства.

Создание

Описание

пример

planner = plannerHybridAStar(validator) создает объект планировщика пути использование Гибрида* алгоритм. Задайте validator введите как validatorOccupancyMap или validatorVehicleCostmap объект. validator введите устанавливает значение свойства StateValidator.

planner = plannerHybridAStar(validator,Name,Value) Свойства наборов планировщика пути при помощи одного или нескольких аргументов пары "имя-значение". Заключите каждое имя свойства в одинарных кавычках ('').

Свойства

развернуть все

Блок проверки допустимости состояния для планирования, заданный любой как validatorOccupancyMap или validatorVehicleCostmap объект.

Длина примитивов движения, которые будут сгенерированы, заданные как разделенная запятой пара, состоящая из 'MotionPrimitiveLength' и положительная скалярная величина в метрах. Увеличьте длину для больших карт или разреженных сред. Уменьшите длину для плотных сред.

Примечание

'MotionPrimitiveLength' не может превысить одну четверть длина окружности круга на основе 'MinTurningRadius'.

Типы данных: double

Радиус превращения минимума транспортного средства, заданного как разделенная запятой пара, состоящая из 'MinTurningRadius' и положительная скалярная величина в метрах.

Примечание

Значение 'MinTurningRadius' установлен таким образом что 'MotionPrimitiveLength' не может превысить одну четверть длина окружности круга на основе его.

Типы данных: double

Количество примитивов движения, которые будут сгенерированы, заданные как разделенная запятой пара, состоящая из 'NumMotionPrimitives' и положительный нечетный целочисленный скаляр.

Стойте множителя, чтобы переместиться в прямом направлении, заданном как разделенная запятой пара, состоящая из 'ForwardCost' и положительная скалярная величина. Увеличьте величину затрат, чтобы оштрафовать движение вперед.

Типы данных: double

Стойте множителя, чтобы переместиться в обратном направлении, заданном как разделенная запятой пара, состоящая из 'ReverseCost' и положительная скалярная величина. Увеличьте величину затрат, чтобы оштрафовать противоположное движение.

Типы данных: double

Дополнение, стоившее за переключение направления движения, заданного как разделенная запятой пара, состоящая из 'DirectionSwitchingCost' и положительная скалярная величина. Увеличьте величину затрат, чтобы оштрафовать переключение направления.

Типы данных: double

Интервал для попытки аналитического расширения от самого дешевого узла, доступного в том экземпляре, заданном как разделенная запятой пара, состоящая из 'AnalyticExpansionInterval' и положительный целочисленный скаляр.

Гибрид* планировщик пути расширяет примитивы движения от узлов с самой низкой ценой, доступной в том экземпляре:

  • Количество узлов, которые будут расширены, зависит от количества примитивов, которые будут сгенерированы и в направлении и в их валидности, повторения цикла до 'AnalyticExpansionInterval' достигнут.

  • Планировщик затем делает попытку аналитического расширения, чтобы достигнуть целевого положения от дерева с помощью модели Reeds-Shepp. Если попытка перестала работать, планировщик повторяет цикл.

Улучшайте производительность алгоритма путем сокращения интервала, чтобы увеличить число проверок на связь Тростников-Shepp с итоговой целью.

Расстояние между интерполированными положениями в выходе path, заданном как разделенная запятой пара, состоящая из 'InterpolationDistance' и положительная скалярная величина в метрах.

Типы данных: double

Функции объекта

planНайдите путь без препятствий между двумя положениями
showВизуализируйте запланированный путь

Примеры

свернуть все

Запланируйте путь без коллизий транспортное средство через парковку при помощи Гибрида* алгоритм.

Создайте и присвойте карту блоку проверки допустимости состояния

Загрузите величину затрат на ячейки в транспортном средстве costmap парковки.

load parkingLotCostVal.mat % costVal

Создайте binaryOccupancyMap с величиной затрат.

map = binaryOccupancyMap(costVal);

Создайте stateValidator объект для проверки столкновения.

validator = validatorOccupancyMap;

Присвойте карту stateValidator объект.

validator.Map = map;

Запланируйте и визуализируйте путь

Инициализируйте plannerHybridAStar объект с stateValidator объект. Задайте MinTurningRadius и MotionPrimitiveLength свойства планировщика.

planner = plannerHybridAStar(validator,'MinTurningRadius',4,'MotionPrimitiveLength',6);

Задайте запускаются и целевые положения для транспортного средства как [x, y, тета] векторы. X и Y задают положение в метрах, и тета задает угол ориентации в радианах.

startPose = [6 10 pi/2]; % [meters, meters, radians]
goalPose = [90 54 -pi/2];

Запланируйте путь от положения запуска до целевого положения.

refpath = plan(planner,startPose,goalPose);

Визуализируйте использование пути, показывают функцию

show(planner)

Ссылки

[1] Дольгов, Дмитрий, Себастиан Трун, Майкл Монтемерло и Джеймс Дибель. Практические поисковые методы в планировании пути для автономного управления автомобилем. Aмериканская ассоциация искусственного интеллекта, 2008.

[2] Petereit, Янко, Томас Эмтер, Кристиан В. Фрэй, Томас Копфштедт и Андреас Бойтель. "Приложение Гибрида* к автономному мобильному роботу для планирования пути в неструктурированных наружных средах". ROBOTIK 2012: 7-я немецкая Конференция по Робототехнике. 2012, стр 1-6.

Введенный в R2019b