exponenta event banner

Управление обратной связью робота с поддержкой ROS над ROS 2

В этом примере показано, как использовать Simulink ® для управления моделируемым роботом, работающим в имитаторе робота Gazebo ® по сети ROS 2.

Введение

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

Следующая диаграмма суммирует взаимодействие между Simulink и роботом-симулятором (стрелки на диаграмме указывают передачу сообщения ROS 2). /odom раздел передает информацию о местоположении, и /cmd_vel раздел передает команды скорости.

Задача 1 - Запуск робота-симулятора и настройка симулятора

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

  1. Загрузите виртуальную машину с помощью инструкций в разделе Начало работы с беседкой и моделируемым TurtleBot.

  2. На рабочем столе Ubuntu щелкните значок Gazebo Empty, чтобы запустить пустой мир Gazebo.

  3. Щелкните по РОС-Бридж (Разбивание) символ, чтобы начать РОС-Бридж, чтобы передать сообщения между узлом Simulink ROS 2 и Turtlebot3, позволенным ROS робот.

  4. В окне команд MATLAB установите ROS_DOMAIN_ID переменная среды для 25 для соответствия настройкам моста ROS робота-имитатора и запуска ros2 topic list для проверки того, что темы из имитатора робота видны в MATLAB.

setenv('ROS_DOMAIN_ID','25')
ros2('topic','list')
/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/imu
/joint_states
/odom
/parameter_events
/rosout
/rosout_agg
/scan
/tf

Задача 2 - Открытие существующей модели

После подключения к сети ROS 2 откройте пример модели.

open_system('robotROS2FeedbackControlExample.slx');

В модели реализован пропорциональный контроллер для дифференциально-приводного мобильного робота. На каждом временном шаге алгоритм ориентирует робота в нужное положение и перемещает его вперед. После достижения требуемого местоположения алгоритм останавливает робота.

open_system('robotROS2FeedbackControlExample/Proportional Controller');

Обратите внимание, что в модели имеется четыре настраиваемых параметра (обозначаются цветными блоками).

  • Требуемое положение (на верхнем уровне модели): требуемое расположение в координатах (X, Y)

  • Порог расстояния: робот останавливается, если он находится ближе этого расстояния от нужного местоположения

  • Линейная скорость: прямая линейная скорость робота

  • Коэффициент усиления: Пропорциональный коэффициент усиления при коррекции ориентации робота

Модель также имеет блок управления скоростью моделирования (на верхнем уровне модели). Этот блок гарантирует, что интервалы обновления моделирования будут соответствовать времени, прошедшему по настенным часам.

Задача 3 - Настройка Simulink и запуск модели

В этой задаче вы настроите Simulink для связи с ROS-имитатором робота через ROS 2, запуска модели и наблюдения за поведением робота в имитаторе робота.

Конфигурирование параметров сети для ROS 2.

  • На вкладке Моделирование (Simulation) в разделе ПОДГОТОВКА (PREPARE) выберите пункт Панель инструментов ROS (ROS Toolbox) > Сеть ROS (ROS Network

  • В разделе Настройка сетевых адресов ROS установите значение идентификатора домена ROS 2 равным 25.

  • Нажмите «ОК» для внесения изменений и закрытия диалогового окна.

Для запуска модели.

  • Разместите окна на экране так, чтобы можно было наблюдать за моделью Simulink и имитатором робота.

  • Нажмите кнопку «Воспроизведение» в Simulink, чтобы начать моделирование.

  • Во время моделирования дважды щелкните по блоку «Требуемое положение» и измените значение константы на [2 3]. Обратите внимание, что робот меняет свой курс.

  • Во время моделирования откройте подсистему пропорционального контроллера и дважды щелкните блок линейной скорости (ползунок). Переместите ползунок в положение 2. Наблюдайте за увеличением скорости робота.

  • Нажмите кнопку Stop в Simulink, чтобы остановить моделирование.

Задача 4 - Наблюдение за скоростью входящих сообщений

В этой задаче вы будете наблюдать за временем и скоростью входящих сообщений.

  • Нажмите кнопку «Воспроизведение» в Simulink, чтобы начать моделирование.

  • Откройте блок «Область». Обратите внимание, что выходные данные IsNew блока Subscribe всегда равны нулю, что указывает на то, что сообщения для раздела/odom не принимаются. Горизонтальная ось графика указывает время моделирования.

  • Запустить симулятор беседки в сети АФК и запустить мост АФК в АФК 2, чтобы сеть АФК 2 могла принимать сообщения, опубликованные симулятором беседки.

  • В окне «Scope» (Область) обратите внимание, что выходной сигнал IsNew имеет значение 1 с приблизительной скоростью 20 раз в секунду за прошедшее время настенных часов.

Синхронизация с тактовым временем стены происходит из-за блока управления скоростью моделирования. Как правило, моделирование Simulink выполняется в свободном цикле, скорость которого зависит от сложности модели и скорости компьютера (см. Этап моделирования цикла (Simulation Loop Phase, Simulink)). Блок Simulation Rate Control пытается регулировать выполнение Simulink так, чтобы каждое обновление занимало, по возможности, 0,02 секунды по времени настенного тактового сигнала (это равно времени основной выборки модели). Дополнительные сведения см. в комментариях внутри блока.

Кроме того, подсистемы Enabled для пропорционального контроллера и Command Velocity Publisher гарантируют, что модель реагирует только на действительно новые сообщения. Если включенные подсистемы не используются, модель будет многократно обрабатывать одно и то же (последнее принятое) сообщение снова и снова, что приведет к расточительной обработке и избыточной публикации командных сообщений.

Резюме

В этом примере показано, как использовать Simulink для простого замкнутого управления моделируемым роботом. В нем также показано, как использовать подсистемы Enabled для снижения накладных расходов в сети ROS 2.