Этот пример показывает, как создать автоматизированную систему камердинера парковки в Simulink® с Automated Driving Toolbox™. Это тесно следует Автоматизированному примеру Parking Valet MATLAB®.
Автоматически парковка автомобиля, который оставляют перед парковкой, является сложной проблемой. Автоматизированные системы автомобиля, как ожидают, будут вступать во владение и вести автомобиль на доступное место для парковки. Этот пример фокусируется на планировании выполнимого пути через среду, генерация траектории от этого пути и использования выполнимого контроллера, чтобы выполнить траекторию. Сопоставьте создание, и динамическое предотвращение препятствия исключены из этого примера.
Перед симуляцией функция helperSLCreateCostmap
, вызванная в функции обратного вызова PreLoadFcn
модели, создает статическую карту парковки. Карта содержит информацию о стационарных препятствиях, дорожных разметках, и припаркованные автомобили представлены как объект
.vehicleCostmap
Чтобы использовать объект
в Simulink®, функция vehicleCostmap
helperSLCreateUtilityStruct
преобразовывает
в массив структур в инициализации маски блока. Для получения дополнительной информации смотрите, Инициализируют Маску (Simulink).vehicleCostmap
Глобальный план маршрута описан как последовательность сегментов маршрута, чтобы пересечь, чтобы достигнуть места для парковки. Перед симуляцией функция обратного вызова PreLoadFcn
модели загружает план маршрута, который хранится как таблица. Таблица задает запуск и положения конца сегмента, а также свойства сегмента, такие как ограничение скорости.
routePlan = 5×3 table StartPose EndPose Attributes ________________ ____________________ ____________ 4 12 0 56 11 0 [1x1 struct] 56 11 0 70 19 90 [1x1 struct] 70 19 90 70 32 90 [1x1 struct] 70 32 90 52 38 180 [1x1 struct] 53 38 180 36.3 44 90 [1x1 struct]
Вводы и выводы многих блоков в этом примере являются шинами Simulink (классы
). В the|PreLoadFcn | функция обратного вызова модели, функция Simulink.Bus
helperSLCreateUtilityBus
создает эти шины.
Планирование является иерархическим процессом с каждым последовательным слоем, ответственным за более мелкомодульную задачу. Слой [1] поведения находится наверху этого стека. Блок Behavior Planner инициировал последовательность задач навигации на основе глобального плана маршрута путем обеспечения промежуточной цели и настройки для блоков Генерации Планирования и Траектории Движения. По каждому сегменту пути перемещаются с помощью этих шагов:
Планирование движения: Запланируйте выполнимый путь через карту среды с помощью оптимального быстро исследующего случайного дерева (RRT*) алгоритм (
).pathPlannerRRT
Генерация траектории: Сглаживайте ссылочный путь путем подбора кривой сплайнам [2] к нему с помощью Пути Более сглаженный Сплайн. Затем преобразуйте сглаживавший путь в траекторию путем генерации профиля скорости с помощью HelperSpeedProfileGenerator
.
Управление автомобилем: HelperPathAnalyzer
обеспечивает ссылочный сигнал для Подсистемы контроллера Автомобиля, которая управляет регулированием и скоростью автомобиля.
Целевая Проверка: Проверяйте, достиг ли автомобиль итогового положения сегмента с помощью helperGoalChecker
.
Подсистема контроллера Автомобиля содержит Боковой блок диспетчера Стэнли и Продольный блок диспетчера Стэнли, чтобы отрегулировать положение и скорость автомобиля, соответственно. Чтобы обработать реалистическую динамику аппарата [3], параметр модели Автомобиля в Боковом блоке диспетчера Стэнли устанавливается на Dynamic bicycle model
. С этой настройкой дополнительные входные параметры, такие как искривление пути, текущий уровень отклонения от курса автомобиля и текущий руководящий угол требуются, чтобы вычислять держащуюся команду. Продольный блок диспетчера Стэнли использует переключающийся Пропорционально-интегральный контроллер, чтобы вычислить ускорение и команды замедления, которые приводят в действие тормоз и дроссель в автомобиле.
Чтобы продемонстрировать производительность, контроллер автомобиля применяется к блоку Model Автомобиля, который содержит упрощенную руководящую систему [3], который моделируется как система первого порядка и блок Vehicle Body 3DOF, совместно использованный Automated Driving Toolbox™ и Vehicle Dynamics Blockset™. По сравнению с кинематической моделью велосипеда, используемой в Автоматизированном примере Parking Valet MATLAB®, этот блок Model Автомобиля более точен, потому что это рассматривает инерционные эффекты, такие как промах шины и держащееся приведение в действие сервомотора.
Блок Visualization показывает, как автомобиль отслеживает ссылочный путь. Это также отображает скорость автомобиля и держащуюся команду в осциллографе. Следующие изображения являются результатами симуляции для этого примера:
Симуляция останавливается приблизительно в 45 секунд, который является, когда автомобиль достигает места назначения.
Этот пример показывает, как реализовать автоматизированного камердинера парковки в Simulink.
[1] Buehler, Мартин, Карл Иэгнемма и Сэнджив Сингх. DARPA Городская проблема: Автономные Автомобили в Городском движении (1-й редактор). Springer Publishing Company, Incorporated, 2009.
[2] Lepetic, Марко, Грегор Клэнкэр, Игорь Скрянк, Драго Матко и Бостджэн Потокник, "Время Оптимальное Планирование пути, Рассматривая Ускоряющие Пределы". Робототехника и Автономные системы, Объем 45, Выпуски 3-4, 2003, стр 199-210.
[3] Хоффман, Габриэль М., Клэр Дж. Томлин, Майкл Монтемерло и Себастиан Трун. "Автономное Автомобильное Отслеживание Траектории для Управления Для бездорожья: Проектирование контроллера, Экспериментальная Валидация и Гонки". Американская Конференция по Управлению, 2007, стр 2296-2301.