exponenta event banner

plannerHybridAStar

Планировщик гибридных путей A *

Описание

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

Примечание

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

Создание

Описание

пример

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

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

Свойства

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

Средство проверки состояния для планирования, указанное либо как validatorOccupancyMap или validatorVehicleCostmap на основе пространства состояний SE (2).

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

Примечание

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

Планировщик пути Hybrid A * расширяет примитивы движения из узлов с наименьшей стоимостью, доступной в этом экземпляре:

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

  • Затем плановик пытается выполнить аналитическое расширение для достижения целевой позы из дерева с использованием модели Ридса-Шеппа. Если попытка завершается неуспешно, плановик повторяет цикл.

Повысьте производительность алгоритма, уменьшив интервал для увеличения числа проверок соединения Ридса-Шеппа с конечной целью.

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

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

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

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

Примеры

свернуть все

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

Создание и назначение карты средству проверки состояния

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

load parkingLotCostVal.mat % costVal

Создать binaryOccupancyMap со значениями затрат.

map = binaryOccupancyMap(costVal);

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

validator = validatorOccupancyMap;

Назначьте карту объекту проверки состояния.

validator.Map = map;

Планирование и визуализация траектории

Инициализируйте plannerHybridAStar с объектом проверки состояния. Укажите MinTurningRadius и MotionPrimitiveLength свойства плановика.

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

Определите начальные и целевые представления для транспортного средства как векторы [x, y, theta]. x и y указывают положение в метрах, а theta - угол ориентации в радианах.

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

Запланируйте путь от начальной позы до позы цели.

refpath = plan(planner,startPose,goalPose);

Визуализируйте путь с помощью функции show.

show(planner)

Figure contains an axes. The axes with title Hybrid A* Path Planner contains 6 objects of type image, line, scatter. These objects represent Forward Motion Primitives, Reverse Motion Primitives, Final Path, Start, Goal.

Ссылки

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

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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