В этом примере показано, как управлять роботом дифференциального привода при совместном моделировании Gazebo с помощью Simulink. Робот следует набору ППМ, считывая положения кодера позы и колеса, и генерирует команды управления крутящим моментом, чтобы привести его в движение.
Чтобы загрузить виртуальную машину, используемую в этом примере, см. раздел Виртуальная машина с ROS и беседкой.
Вводные сведения о совместном моделировании Gazebo и первом подключении см. в разделе Выполнение совместного моделирования между Simulink и Gazebo.
Откройте виртуальную машину, установленную из виртуальной машины, с помощью ROS и беседки.
В этом примере используется мир, заданный в виртуальной машине, differentialDriveRobot.world, как простая плоскость земли с настройками физики по умолчанию. В мире используется робот Pioneer со снятыми контроллерами по умолчанию, чтобы встроенные контроллеры не конкурировали с крутящими моментами, предоставляемыми от Simulink. Робот Pioneer доступен в установках беседки по умолчанию. Плагин Gazebo ссылается на плагин, необходимый для подключения к Simulink, как подробно описано в разделе Выполнение совместного моделирования между Simulink и Gazebo.
Дважды щелкните значок «Беседка» «Робот дифференциального привода». Если симулятор Gazebo не открывается, может потребоваться переустановка плагина. См. раздел Установка подключаемого модуля беседки вручную в разделе Выполнение совместного моделирования между Simulink и Gazebo.
В качестве альтернативы выполните следующие команды на терминале:
cd /home/user/src/GazeboPlugin/export export SVGA_VGPU10=0 gazebo ../world/differentialDriveRobot.world

Откройте модель:
open_system('GazeboDifferentialDriveControl') Модель состоит из четырех разделов:
Беседка Пэйсера
Считывание данных датчика
Мобильный робот управления
Отправка данных о срабатывании в беседку

Этот раздел устанавливает соединение с Беседкой. Дважды щелкните блок Gazebo Pacer, чтобы открыть его параметры, а затем щелкните ссылку Настройка сети и параметров моделирования. Откроется диалоговое окно.
Укажите IP-адрес для виртуальной машины. По умолчанию «Беседка» подключается к 14581 порт. Нажмите кнопку «Тест» для проверки соединения с «Беседкой».

Если тест не прошел успешно, проверьте инструкции в разделе Выполнение совместного моделирования между Simulink и Gazebo и убедитесь, что Gazebo правильно настроена и соответствующий мир работает.
Датчик выводит считанные данные датчика из беседки и передает их в соответствующие блоки Simulink. График XY отображает текущее положение робота, и данные позы сохраняются в выходных данных моделирования.

Подсистема Read Gazebo Sensors извлекает данные датчика позы и колеса робота. Данные позы представляют собой координаты xy и четырехэлементный кватернион для ориентации. Скорости колес вычисляются на основе скорости изменения положений колес при их вращении.

Секция управления мобильным роботом принимает набор целевых ППМ, текущей позы и текущих скоростей колес и выводит крутящие моменты колес, необходимые для того, чтобы робот следовал по пути, который преследует ППМ.

Существует три основных компонента.
Блок Pure Purchasion - это контроллер, который определяет скорость транспортного средства и угловую скорость курса транспортного средства, необходимую для следования ППМ с фиксированной скоростью, учитывая текущую позу.
Функциональный блок Set Wheel Speed MATLAB преобразует скорость транспортного средства и угловую скорость курса в скорость левого и правого колес, используя кинематику дифференциального приводного робота:
и - скорость левого и правого колес, - скорость транспортного средства, - угловая скорость курса транспортного средства, d - ширина пути, r - радиус колеса. Кроме того, эта функция MATLAB ® включает код для регулирования скорости вращения колеса. Так как блок Pure Pursuit использует фиксированную скорость в блоке MATLAB Function, существует два оператора if. Первое замедляет скорость со скоростью, пропорциональной расстоянию до цели, когда робот находится в пределах определенного порога расстояния. Второй оператор if останавливает робота, когда он находится в пределах допустимого порога. Это помогает роботу прийти к щадящей остановке.
Наконец, подсистема управления колесами Pioneer преобразует требуемые скорости колес в крутящие моменты с помощью пропорционального контроллера.
Последний раздел модели берет команды крутящего момента, создаваемые контроллером, и отправляет их в Simulink с помощью блоков из библиотеки совместного моделирования Gazebo.

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

Например, в подсистеме команд крутящего момента беседки левого колеса, показанной выше, отображается пустое сообщение беседки с ApplyJointTorque используется для указания типа шины. Модель и имя соединения предоставляются блоком Gazebo Select Entity, который связан с соединением, связанным с левым колесом в мире Gazebo, left_wheel_hinge. Крутящий момент применяется в течение всего времени шага, 0,01 секунды, заданного в наносекундах, поскольку эти входные сигналы должны быть целыми числами. Выходной сигнал шины передается в блок «Gazebo Apply Command».
Чтобы запустить модель, инициализируйте ППМ и задайте время выборки:
waypoints = [0 0; 4 2; 3 7; -3 6]; sampleTime = 0.01;
Нажмите кнопку «Воспроизведение» или используйте sim для запуска модели. Во время выполнения робот должен двигаться в Беседке, а XY Plot обновляет позу, наблюдаемую в Simulink.



На рисунках изображен набор ППМ и окончательный исполняемый путь робота.