В этом примере показано, как создать автоматическую систему парковки в Simulink ® с Automated Driving Toolbox™. Он внимательно следует примеру Automated Parking Valet MATLAB ®.
Автоматическая парковка автомобиля, который остается перед парковкой, является сложной проблемой. Ожидается, что автоматизированные системы транспортного средства возьмут на себя и направят транспортное средство к доступному месту стоянки. Этот пример фокусируется на планировании допустимого пути через окружение, генерации траектории из этого пути и использовании допустимого контроллера для выполнения траектории. Создание карты и предотвращение динамических препятствий исключены из этого примера.
Перед симуляцией helperSLCreateCostmap
функция вызывается в PreLoadFcn
функция обратного вызова модели. Для получения дополнительной информации об использовании функций обратного вызова смотрите Model Callbacks (Simulink). The 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 запускает последовательность навигационных задач на основе плана глобального маршрута, предоставляя промежуточную цель и строение для блоков Motion Planning и Trajectory Generation. Перемещение по каждому сегменту контура осуществляется с помощью следующих шагов:
Планирование движения: Планируйте допустимый путь через карту окружения с помощью оптимального быстро исследующего алгоритма случайного дерева (RRT *)
).(pathPlannerRRT
Генерация траектории: сглаживайте опорный путь, подгоняя к нему сплайны [2] с помощью блока Path Smooter Spline. Затем преобразуйте сглаженный путь в траекторию, сгенерировав профиль скорости с помощью блока Velocity Profiler.
Управление автомобилем: The HelperPathAnalyzer
предоставляет опорный сигнал для подсистемы Транспортного средства Controller, которая управляет управлением и скоростью транспортного средства.
Проверка цели: Проверьте, достиг ли транспортное средство конечного положения сегмента с помощью helperGoalChecker
.
Подсистема Транспортного средства Controller содержит блок Стэнли Латерального Контроллера и блок Стэнли Продольного Контроллера, чтобы регулировать положение и скорость транспортного средства, соответственно. Чтобы обработать реалистичную динамику аппарата [3], параметр модели Транспортного средства в блоке Lateral Controller Stanley устанавливается в Dynamic bicycle model
. При этом строении для вычисления команды рулевого управления требуются дополнительные входы, такие как кривизна пути, текущая скорость рыскания транспортного средства и текущий угол рулевого управления. Блок Longitudinal Controller Stanley использует переключающий Пропорционально-Интегральный контроллер, чтобы вычислить команды ускорения и замедления, которые приводят в действие тормоз и дроссель в транспортном средстве.
Чтобы продемонстрировать эффективность, контроллер транспортного средства применяется к блоку Транспортного средства Model, который содержит упрощенную систему рулевого управления [3], которая моделируется как система первого порядка и блок Транспортного средства Body 3DOF (Vehicle Dynamics Blockset), общий между Automated Driving Toolbox™ и Vehicle Dynamics Blockset™. По сравнению с кинематической моделью велосипеда, используемой в примере Automated Parking Valet MATLAB ®, этот блок Vehicle Model является более точным, потому что он рассматривает инерционные эффекты, такие как скольжение шины и сервопривод рулевого управления.
Блок Visualization показов, как транспортное средство отслеживает путь ссылки. Он также отображает скорость транспортного средства и команду рулевого управления в возможности. Следующие изображения являются результатами симуляции для этого примера:
Симуляция останавливается примерно на 45 секунде, когда транспортное средство достигает места назначения.
В этом примере показано, как реализовать автоматическую парковку в Simulink.
[1] Бюлер, Мартин, Карл Иагнемма и Санджив Сингх. The DARPA Urban Challenge: Автономные транспортные средства в городском движении (1-е изд.). Издательская компания Springer, Incorporated, 2009.
[2] Lepetic, Marko, Gregor Klancar, Igor Skrjanc, Drago Matko, and Bostjan Potocnik, «Time Optimal Path Planning Учитывая Пределы ускорения». Робототехника и автономные системы, Том 45, Выпуски 3-4, 2003, стр. 199-210.
[3] Гофман, Габриэль М., Клэр Дж. Томлин, Майкл Монтемерло и Себастьян Трун. Autonomobile Automobile Trajectory Tracking for Off-Road Driving: Проектирование контроллера, Experimental Validation and Racing (неопр.) (недоступная ссылка). American Control Conference, 2007, pp. 2296-2301.