Автоматизированная парковка с ROS в Simulink

Распределите автоматизированное приложение парковочного клапана между различными узлами в сети ROS в Simulink ®. Этот пример расширяет пример Automated Parking Valet (Automated Driving Toolbox) в Toolbox™ Automated Driving. Используя модель Simulink в примере Automated Parking Valet в Simulink, настройте параметры планировщика, контроллера и динамики аппарата перед разбиением модели на узлы ROS.

Необходимое условие: Автоматизированная парковка Valet (Automated Driving Toolbox), Сгенерируйте автономный узел ROS из Simulink ®

Введение

Типичное автономное приложение транспортного средства имеет следующий рабочий процесс.

Этот пример посвящен симуляции компонентов планирования, управления и транспортного средства. Для Localization в этом примере используются предварительно записанные данные локализации карты. Компонент Planning далее разделяется на компоненты Behavior Planner и Path Planner. Это приводит к тому, что сеть ROS состоит из четырех узлов ROS: Behavioral Planner, Path Planner, Controller и Vehicle Sim. Следующий рисунок показывает отношения между каждым узлом ROS в сети и темами, используемыми в каждом.

Исследуйте узлы Simulink ROS и возможности подключения

Наблюдайте деление компонентов на четыре отдельные модели Simulink. Каждая модель Simulink представляет узел ROS, который отправляет и получает сообщения по разным темам.

Транспортное средство ТС Sim

1. Откройте модель транспортного средства.

open_system('ROSValetVehicleExample');

2. The Subscribe Подсистема содержит блоки ROS Subscribe, которые считывают входные данные с узла Controller.

3. The Vehicle model подсистема содержит блок Bicycle Model (Automated Driving Toolbox), Vehicle Body 3DOF, чтобы симулировать эффекты контроллера транспортного средства и отправляет информацию о транспортном средстве по сети ROS через блоки ROS Publish в Publish подсистема.

Узел планировщика поведения

1. Откройте модель планировщика поведения.

open_system('ROSValetBehavioralPlannerExample');

2. Эта модель считывает текущее положение, скорость и направление транспортного средства из сети ROS и отправляет следующую цель. Он проверяет, достигло ли транспортное средство целевого положения сегмента, используя exampleHelperROSValetGoalChecker.

3. The Behavior Planner and Goal Checker модель запускается, когда новое сообщение доступно на любом из /currentpose или /currentvel.

4. Модель отправляет статус, если транспортное средство достигло цели парковки, используя /reachgoal тема, которая использует std_msgs/Bool сообщение. Все модели останавливают симуляцию, когда это сообщение true.

Узел планировщика пути

1. Откройте модель планировщика пути.

open_system('ROSValetPathPlannerExample');

2. Эта модель планирует допустимый путь через карту окружения с помощью pathPlannerRRT (Automated Driving Toolbox) объект, который реализует оптимальный быстро исследующий алгоритм случайного дерева (RRT *) и отправляет план контроллеру по сети ROS .

3. The Path Planner подсистема запускается, когда новое сообщение доступно на /plannerConfig или /nextgoal темы.

Узел контроллера

1. Откройте модели контроллеров транспортного средства.

open_system('ROSValetControllerExample');

2. Эта модель вычисляет и отправляет команды рулевого управления и скорости по сети ROS.

3. Подсистема Контроллера запусков, когда новое сообщение доступно на /velprofile тема.

Симулируйте узлы ROS, чтобы проверить секционирование

Проверьте, что поведение модели остается неизменным после разбиения системы на четыре узла ROS.

1. Выполняйте rosinit в Командном окне MATLAB ®, чтобы инициализировать глобальный узел и мастер ROS

rosinit
Launching ROS Core...
.................................Done in 7.169 seconds.
Initializing ROS master on http://192.168.203.1:51612.
Initializing global node /matlab_global_node_70835 with NodeURI http://ah-sradford:58388/

2. Загрузите предварительно записанные данные карты локализации в базовом рабочем пространстве MATLAB с помощью exampleHelperROSValetLoadLocalizationData вспомогательная функция.

exampleHelperROSValetLoadLocalizationData;

3. Откройте симуляционную модель.

open_system('ROSValetSimulationExample.slx');

В левой зоне выбора парковки можно также выбрать точку. Парковочным местом по умолчанию является шестое место в верхней строке.

4. На вкладке SIMULATION нажмите Run from SIMULATE, или run sim('ROSValetSimulationExample.slx') в Командном Окне MATLAB. Откроется рисунок, на котором показано, как транспортное средство отслеживает ссылку путь. Синяя линия представляет путь ссылки, в то время как красная линия является фактическим путем, пройденным автомобилем. Симуляция для всех моделей останавливается, когда транспортное средство достигает конечного места парковки.

sim('ROSValetSimulationExample.slx');

Результаты симуляции

The Visualization подсистема в модели транспортного средства генерирует результаты для этого примера.

open_system('ROSValetVehicleExample/Vehicle model/Visualization');

The v isualizePath блок отвечает за создание и обновление графика путей транспортных средств, показанных ранее. Команды скорости и рулевого управления транспортного средства отображаются в возможности.

open_system("ROSValetVehicleExample/Vehicle model/Visualization/Commands")

Развертывание узлов ROS

Сгенерируйте приложения ROS для Behavioral planner, Path planner, Controller узлы и моделирование Vehicle узел в MATLAB и сравните результаты с симуляцией. Для получения дополнительной информации о генерации примечаний ROS смотрите Сгенерируйте автономный узел ROS из Simulink ®.

1. Развертывание Behavioral planner, Path planner и Controller Узлы ROS.

2. Откройте модель транспортного средства.

open_system('ROSValetVehicleExample');

3. На вкладке Simulation нажмите запуск, чтобы начать симуляцию.

4. Наблюдайте движение транспортного средства на графике и сравните результаты запуска симуляции.

5. Завершите работу сети ROS с помощью rosshutdown.

rosshutdown
Shutting down global node /matlab_global_node_70835 with NodeURI http://ah-sradford:58388/
Shutting down ROS master on http://192.168.203.1:51612.
Для просмотра документации необходимо авторизоваться на сайте