plannerHybridAStar

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

Описание

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

Примечание

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

Создание

Описание

пример

planner = plannerHybridAStar(validator) создает объект планировщика пути с помощью алгоритма Hybrid A *. Задайте validator вход как validatorOccupancyMap или validatorVehicleCostmap объект. The 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] Petereit, Janko, Thomas Emter, Christian W. Frey, Thomas Kopfstedt, and Andreas Beutel. «Приложение Hybrid A * к автономному мобильному роботу для планирования пути в неструктурированных наружных окружениях». ROBOTIK 2012: 7-я немецкая конференция по робототехнике. 2012, с. 1-6.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.
Введенный в R2019b