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

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

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

Введение

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

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

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

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

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

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

open_system('ROSValetVehicleExample');

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

3. Vehicle model подсистема содержит Велосипедный блок Model, 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 объект, который реализует оптимальное быстро исследующее случайное дерево (RRT*) алгоритм и отправляет план контроллеру по сети ROS.

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

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

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

open_system('ROSValetControllerExample');

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

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

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

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

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

rosinit
Initializing ROS master on http://ah-agadkari:56533/.
Initializing global node /matlab_global_node_83566 with NodeURI http://ah-agadkari:56537/

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

exampleHelperROSValetLoadLocalizationData;

3. Откройте все модели и запустите симуляцию с помощью exampleHelperROSValetStartSimulation функция помощника. Рисунок открывает и показывает, как транспортное средство отслеживает ссылочный путь. Синяя линия представляет ссылочный путь, в то время как красная линия является фактическим путем, перемещенным транспортным средством. Симуляция для всех моделей останавливается, когда транспортное средство достигает итогового места для парковки.

exampleHelperROSValetStartSimulation;

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

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

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

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

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

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

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

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_83566 with NodeURI http://ah-agadkari:56537/
Shutting down ROS master on http://ah-agadkari:56533/.