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

Используйте Simulink®, чтобы управлять симулированным роботом, запускающимся в отдельном ОСНОВАННОМ НА ROS средстве моделирования.

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

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

Запустите средство моделирования робота и сконфигурируйте Simulink

Выполните шаги в Подключении к поддерживающему ROS Роботу из примера Simulink®, чтобы сделать следующее:

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

  • Сконфигурируйте Simulink, чтобы соединиться с сетью ROS.

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

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

open_system('robotROSFeedbackControlExample.slx');

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

open_system('robotROSFeedbackControlExample/Proportional Controller');

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

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

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

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

  • Усиление: пропорциональная составляющая при исправлении ориентации робота

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

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

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

  • Окна положения на вашем экране так, чтобы можно было наблюдать и модель Simulink и средство моделирования робота.

  • Нажмите Play, чтобы запустить симуляцию.

  • Во время симуляции дважды кликните блок Desired Position и измените Constant значение к [2 3]. Заметьте, что робот изменяет свой заголовок.

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

  • Нажмите Stop, чтобы закончить симуляцию.

Наблюдайте уровень входящих сообщений

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

  • Закройте любые существующие окна рисунка Средства моделирования Робота.

  • Нажмите Play, чтобы запустить симуляцию.

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

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

  • В отображении Осциллографа заметьте, что IsNew выход имеет значение 1 на аппроксимированном уровне 20 времена в секунду, в прошедшее тактовое стенкой время.

Синхронизация с тактовым стенкой временем происходит из-за Блока управления Уровня Симуляции. Как правило, симуляция Simulink выполняется в цикле свободного доступа, скорость которого зависит от сложности модели и компьютерной скорости (см. Фазу Цикла Симуляции (Simulink)). Блок управления Уровня Симуляции пытается отрегулировать выполнение Simulink так, чтобы каждое обновление взяло 0.02 секунды в тактовое стенкой время, если это возможно. (Это равно основному шагу расчета модели.) См. комментарии в блоке для получения дополнительной информации.

Кроме того, Enabled подсистемы для Пропорционального Диспетчера и Скоростного Издателя Команды гарантируют, что модель только реагирует на по-настоящему новые сообщения. Если бы активированные подсистемы не использовались, модель неоднократно обрабатывала бы то же самое (последний раз полученный) сообщение неоднократно, ведя к расточительной обработке и избыточной публикации сообщений команды.