В этом примере показано, как создать автоматизированную систему камердинера парковки в Simulink® с Automated Driving Toolbox™. Это сопровождает Автоматизированный пример Parking Valet MATLAB®.
Автоматически парковка автомобиля, который оставляют перед парковкой, является сложной проблемой. Автоматизированные системы транспортного средства, как ожидают, будут вступать во владение и вести транспортное средство на доступное место для парковки. Этот пример фокусируется на планировании выполнимого пути через среду, генерация траектории от этого пути и использования выполнимого контроллера, чтобы выполнить траекторию. Сопоставьте создание, и динамическое предотвращение препятствия исключены из этого примера.
Перед симуляцией, helperSLCreateCostmap
функция вызвана в PreLoadFcn
функция обратного вызова модели. Для получения дополнительной информации при использовании функций обратного вызова, смотрите Коллбэки Модели (Simulink). helperSLCreateCostmap
функция создает статическую карту парковки, которая содержит информацию о стационарных препятствиях, дорожных разметках и припаркованных автомобилях. Карта представлена как
объект.vehicleCostmap
Использовать
объект в Simulink®, vehicleCostmap
helperSLCreateUtilityStruct
функция преобразует
в массив структур в инициализации маски блока. Для получения дополнительной информации смотрите, Инициализируют Маску (Simulink).vehicleCostmap
Глобальный план маршрута описан как последовательность сегментов маршрута, чтобы пересечь, чтобы достигнуть места для парковки. Перед симуляцией, PreLoadFcn
функция обратного вызова модели загружает план маршрута, который хранится как таблица. Таблица задает положения начала и конца сегмента, а также свойства сегмента, такие как ограничение скорости.
routePlan = 5×3 table StartPose EndPose Attributes ________________ ____________________ __________ 4 12 0 56 11 0 1×1 struct 56 11 0 70 19 90 1×1 struct 70 19 90 70 32 90 1×1 struct 70 32 90 52 38 180 1×1 struct 53 38 180 36.3 44 90 1×1 struct
Вводы и выводы многих блоков в этом примере являются шинами Simulink (
классы. В Simulink.Bus
(Simulink)PreLoadFcn
функция обратного вызова модели, helperSLCreateUtilityBus
функция создает эти шины.
Планирование является иерархическим процессом с каждым последовательным слоем, ответственным за более мелкомодульную задачу. Слой [1] поведения находится наверху этого стека. Блок Behavior Planner инициировал последовательность задач навигации на основе глобального плана маршрута путем обеспечения промежуточной цели и настройки для блоков Генерации Планирования и Траектории Движения. По каждому сегменту пути перемещаются с помощью этих шагов:
Планирование движения: Запланируйте выполнимый путь через карту среды с помощью оптимального быстро исследующего случайного дерева (RRT*) алгоритм (
).pathPlannerRRT
Генерация траектории: Сглаживайте ссылочный путь путем подбора кривой сплайнам [2] к нему с помощью блока Path Smoother Spline. Затем преобразуйте сглаживавший путь в траекторию путем генерации профиля скорости с помощью блока Velocity Profiler.
Управление транспортным средством: HelperPathAnalyzer
обеспечивает опорный сигнал для Подсистемы контроллера Транспортного средства, которая управляет регулированием и скоростью транспортного средства.
Целевая Проверка: Проверяйте, достигло ли транспортное средство итогового положения сегмента с помощью helperGoalChecker
.
Подсистема контроллера Транспортного средства содержит Боковой блок диспетчера Стэнли и Продольный блок диспетчера Стэнли, чтобы отрегулировать положение и скорость транспортного средства, соответственно. Чтобы обработать реалистическую динамику аппарата [3], параметр модели Транспортного средства в Боковом блоке диспетчера Стэнли устанавливается на Dynamic bicycle model
. С этой настройкой дополнительные входные параметры, такие как искривление пути, текущий уровень рыскания транспортного средства и текущий руководящий угол требуются, чтобы вычислять держащуюся команду. Продольный блок диспетчера Стэнли использует переключающийся Пропорционально-интегральный контроллер, чтобы вычислить ускорение и команды замедления, которые приводят в движение тормоз и дроссель в транспортном средстве.
Чтобы продемонстрировать эффективность, контроллер транспортного средства применяется к блоку Model Транспортного средства, который содержит упрощенную руководящую систему [3], который моделируется как система первого порядка и блок Vehicle Body 3DOF (Vehicle Dynamics Blockset), совместно использованный 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.