plannerHybridAStar

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

Описание

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

Примечание

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

Создание

Описание

пример

planner = plannerHybridAStar(validator) создает объект планировщика пути использование Гибрида* алгоритм. Задайте 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' и положительный целочисленный скаляр.

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

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

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(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] Дольгов, Дмитрий, Себастиан Трун, Майкл Монтемерло и Джеймс Дибель. Практические поисковые методы в планировании пути для автономного управления автомобилем. Aмериканская ассоциация искусственного интеллекта, 2008.

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

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

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

Введенный в R2019b
Для просмотра документации необходимо авторизоваться на сайте