Автоматизированный камердинер парковки в Simulink

Этот пример показывает, как создать автоматизированную систему камердинера парковки в Simulink® с Automated Driving Toolbox™. Это тесно следует Автоматизированному примеру Parking Valet MATLAB®.

Введение

Автоматически парковка автомобиля, который оставляют перед парковкой, является сложной проблемой. Автоматизированные системы автомобиля, как ожидают, будут вступать во владение и вести автомобиль на доступное место для парковки. Этот пример фокусируется на планировании выполнимого пути через среду, генерация траектории от этого пути и использования выполнимого контроллера, чтобы выполнить траекторию. Сопоставьте создание, и динамическое предотвращение препятствия исключены из этого примера.

Перед симуляцией функция helperSLCreateCostmap, вызванная в функции обратного вызова PreLoadFcn модели, создает статическую карту парковки. Карта содержит информацию о стационарных препятствиях, дорожных разметках, и припаркованные автомобили представлены как объект vehicleCostmap.

Чтобы использовать объект vehicleCostmap в Simulink®, функция helperSLCreateUtilityStruct преобразовывает vehicleCostmap в массив структур в инициализации маски блока. Для получения дополнительной информации смотрите, Инициализируют Маску (Simulink).

Глобальный план маршрута описан как последовательность сегментов маршрута, чтобы пересечь, чтобы достигнуть места для парковки. Перед симуляцией функция обратного вызова 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 (классы Simulink.Bus). В the|PreLoadFcn | функция обратного вызова модели, функция helperSLCreateUtilityBus создает эти шины.

Планирование является иерархическим процессом с каждым последовательным слоем, ответственным за более мелкомодульную задачу. Слой [1] поведения находится наверху этого стека. Блок Behavior Planner инициировал последовательность задач навигации на основе глобального плана маршрута путем обеспечения промежуточной цели и настройки для блоков Генерации Планирования и Траектории Движения. По каждому сегменту пути перемещаются с помощью этих шагов:

  1. Планирование движения: Запланируйте выполнимый путь через карту среды с помощью оптимального быстро исследующего случайного дерева (RRT*) алгоритм (pathPlannerRRT).

  2. Генерация траектории: Сглаживайте ссылочный путь путем подбора кривой сплайнам [2] к нему с помощью Пути Более сглаженный Сплайн. Затем преобразуйте сглаживавший путь в траекторию путем генерации профиля скорости с помощью HelperSpeedProfileGenerator.

  3. Управление автомобилем: HelperPathAnalyzer обеспечивает ссылочный сигнал для Подсистемы контроллера Автомобиля, которая управляет регулированием и скоростью автомобиля.

  4. Целевая Проверка: Проверяйте, достиг ли автомобиль итогового положения сегмента с помощью 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.

Смотрите также

Блоки

Объекты

Похожие темы