Распределите автоматизированное приложение парковочного клапана между различными узлами в сети 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. Каждая модель Simulink представляет узел ROS, который отправляет и получает сообщения по разным темам.
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.
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 для 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.