exponenta event banner

Управление роботом дифференциального привода в беседке с Simulink

В этом примере показано, как управлять роботом дифференциального привода при совместном моделировании 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 преобразует скорость транспортного средства и угловую скорость курса в скорость левого и правого колес, используя кинематику дифференциального приводного робота:

ϕ˙L=1r (v- d2)

ϕ˙R=1r (v + d2)

ϕ˙L и ϕ˙R - скорость левого и правого колес, v - скорость транспортного средства, - угловая скорость курса транспортного средства, 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.

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