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

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

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

Введение

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

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

Исследуйте узлы ROS Simulink и возможность соединения

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

Транспортное средство узел Сима

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

open_system('ROSValetVehicleExample');

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

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

Поведенческий узел планировщика

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

open_system('ROSValetBehavioralPlannerExample');

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

3. 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. Path Planner подсистема запускается, когда новое сообщение доступно на /plannerConfig или /nextgoal темы.

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

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

open_system('ROSValetControllerExample');

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

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

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

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

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

rosinit
Launching ROS Core...
..........Done in 10.4244 seconds.
Initializing ROS master on http://192.168.88.1:56949.
Initializing global node /matlab_global_node_90052 with NodeURI http://ah-avijayar:57028/

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

exampleHelperROSValetLoadLocalizationData;

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

open_system('ROSValetSimulationExample.slx');

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

4. Во вкладке SIMULATION кликните по Запуску от раздела SIMULATE или запустите sim('ROSValetSimulationExample.slx') в командном окне MATLAB. Рисунок открывает и показывает, как транспортное средство отслеживает ссылочный путь. Синяя линия представляет ссылочный путь, в то время как красная линия является фактическим путем, перемещенным транспортным средством. Симуляция для всех моделей останавливается, когда транспортное средство достигает итогового места для парковки.

sim('ROSValetSimulationExample.slx');

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

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

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

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

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

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

Сгенерируйте приложения ROS для Behavioral planner, Path plannerКонтроллер узлы, и симулируют Vehicle узел в MATLAB и сравнивает результаты с симуляцией. Для большего количества informaiton при генерации примечаний ROS смотрите, Генерируют Автономный Узел ROS от Simulink®.

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

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

open_system('ROSValetVehicleExample');

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

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

5. Закройте сеть ROS с помощью rosshutdown.

rosshutdown
Shutting down global node /matlab_global_node_90052 with NodeURI http://ah-avijayar:57028/
Shutting down ROS master on http://192.168.88.1:56949.
Для просмотра документации необходимо авторизоваться на сайте