exponenta event banner

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

Используйте Simulink ® для управления моделируемым роботом, работающим в отдельном симуляторе на базе ROS.

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

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

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

Выполните следующие действия в примере Подключение к роботу с поддержкой ROS из Simulink ®:

  • Запустите имитатор робота MATLAB ® или Gazebo ®.

  • Настройте Simulink для подключения к сети ROS.

Открыть существующую модель

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

open_system('robotROSFeedbackControlExample.slx');

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

open_system('robotROSFeedbackControlExample/Proportional Controller');

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

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

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

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

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

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

Запустить модель

Запустите модель и понаблюдайте за поведением робота в имитаторе робота.

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

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

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

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

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

Наблюдение за частотой входящих сообщений

Используйте симулятор на основе MATLAB для контроля синхронизации и скорости входящих сообщений.

  • Закройте все существующие окна фигур Robot Simulator.

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

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

  • В командной строке MATLAB введите ExampleHelperSimulinkRobotROS запуск имитатора робота на базе MATLAB. Этот симулятор публикует /odom сообщения приблизительно на 20 Гц за время, прошедшее по настенным часам.

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

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

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