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

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

Введение

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

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

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

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

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

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

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

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

open_system('robotROSFeedbackControlExample.slx');

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

open_system('robotROSFeedbackControlExample/Proportional Controller');

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

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

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

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

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

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

Задача 3 - запускает модель

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

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

  • Кликните по кнопке воспроизведения в Simulink, чтобы запустить симуляцию.

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

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

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

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

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

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

  • Кликните по кнопке воспроизведения в Simulink, чтобы запустить симуляцию.

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

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

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

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

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

Сводные данные

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