Назад в библиотеку

Моделирование ROS в Matlab

Авторы: Грудинин В.С., Грудинин С.В.
Источник: Вятский государственный университет, Киров, Российская Федерация

Аннотация

Грудинин В.С., Грудинин С.В. Моделирование ROS в Matlab
В представленной статье рассматривается вопрос возможностей изучения операционной системы ROS – Robot Operating System как основы для продвинутого изучения робототехнических систем. На начальном этапе изучения основ робототехники хорошо себя зарекомендовали простые образовательные наборы типа Lego, Arduino и другие. Они позволяют изучить работу с робототехническими компонентами – приводом, датчиками, навигацией, и программирование на основе библиотечных модулей, созданных для каждого устройства отдельно. В какой-то момент наступает проблема системной интеграции всех компонент робота и необходимость использования операционной системы. Использование универсальных операционных систем требует очень больших затрат на их специализацию, и наиболее оптимальным решением проблемы является применение фреймворка Robot Operating System. Для оптимизации проблем приобретения, настройки и использования оборудования предлагается на начальном этапе обойтись моделированием в пакете Matlab. В статье рассматривается простейший пример управления мобильным роботом на основе передачи сообщений в среде ROS.



Для разработки, исследования и изучения робототехнических систем наиболее простым подходом является использование простых, хорошо апробированных и с большим количеством готовых библиотек микроконтроллеров класса Arduino [1]. Это хорошо работает на начальном этапе создания роботов, но неизбежно наступает момент, когда необходимо объединить все системы в единое целое. Для этого простые методы программирования превращаются в серьезную проблему, и единственным решением является применение операционной системы. Специализированных операционных систем для робототехники нет, но есть робототехнические фреймворки (надстройки) над ними. Одним из удачных решение в этом направлении является ROS – Robot Operating System. ROS обеспечивает аппаратную абстракцию, низкоуровневое управление и контроль устройств роботов, реализацию сетевых функций и др.

Имеются варианты установки ROS на наборы Lego Mindstorms EV3, но такое решение во-первых, не является официально поддерживаемым фирмой производителем, а во-вторых, требует наличия довольно дорогого оборудования. В любом случае ROS устанавливается и работает в OC Ubuntu Linux, и при обучении данной технологии возникает проблема наличия учебного компьютерного класса с этой операционной системой, так как основной ОС в учебном процессе является Windows. Кроме того, должны быть наборы Arduino или Lego, компьютеры должны быть оснащены беспроводной независимой связью и т. п. [2].

Отсюда для изучения возможностей ROS наиболее простым выходом из подобной ситуации является использование моделирования в пакете Matlab и расширения Robotics System Toolboх. Предлагаемый набор инструментов предоставляет интерфейс между MATLAB, Simulink и операционной системой ROS, который позволяет тестировать и проверять приложения на роботах с поддержкой ROS и симуляторах роботов, таких как Gazebo. Он поддерживает создание кода на C++, позволяя генерировать ROS-узел из модели Simulink и развертывать его в сети ROS. В набор инструментов Robotics System входят примеры, показывающие, как работать с виртуальными роботами в Gazebo и реальными роботами с поддержкой ROS[3].

Для инициализации ROS в MATLAB используется команда. По умолчанию rosinit создает мастер ROS и запускает «глобальный узел», который подключен к мастеру. При этом «Глобальный узел» (global node) автоматически используется другими функциями ROS.

Для быстрого добавления нескольких узлов можно использовать команду exampleHelperROSCreateSampleNetwork. После этого можно оценить получившуюся структуру командой rosnode list, соответствующую Рис. 1. По получившейся структуре видны возможности системы – передача сообщений о положении узлов, сканирование сети и т. д.

Рис. 1. Пример структуры ROS сети

Рис. 1. Пример структуры ROS сети

Для этого в Simulink выберем и настроим блок Publish из Robotics System Toolbox для отправки сообщения «geometry_msgs / Point» с именем «/ location». Затем выберем Specify your own в поле Topic source, и введем значение /location в поле Topic. А на форме Message type выберем «geometry_msgs/Point», то есть будем передавать роботу его позицию в координатах X, Y.

Сообщение ROS представляется как сигнал шины в Simulink. Сигнал шины представляет собой набор сигналов Simulink, а также может включать в себя другие сигналы. Блок ROS Blank Message выводит сигнал шины Simulink, соответствующий сообщению ROS, поэтому мы его добавляем в схему. Затем в библиотечном браузере Simulink > Signal Routing, выберем блок Bus Assignment. Соединим выход блока Blank Message с блоком Bus Assignment. Подключим выходной порт блока Bus Assignment к входному порту блока публикации ROS, зададим изменения по координатам X, Y в виде синусоид и получим схему модели (Рис. 2). Далее создадим абонент сети для приема сообщений, отправленных по теме «/ location». Абонент получит местоположение робота (x, y) из сообщения и отобразит его на XY-плоскости.

Рис. 2. Модель передачи сообщения в ROS

Рис. 2. Модель передачи сообщения в ROS

Из библиотеки Robotics System Toolbox добавим в модель блок Subscribe. Настроим Specify your own в поле Topic source, и введем /location в поле Topic. В поле Message type выберем «geometry_msgs/Point». Из библиотеки Simulink > Signal Routing перетащим в модель блок Bus Selector. Подсоединим выход IsNew блока Subscribe к входу блока Terminator, так как он не используется. Из пункта Simulink > Sinks в Library Browser, перетащим в модель блок XY Graph и два блока Display. Далее все соединяем и получаем схему (Рис. 3). Остальные шаги настраивают отображение извлеченных сигналов X и Y.

Рис. 3. Окончательная модель передачи сообщения в ROS

Рис. 3. Окончательная модель передачи сообщения в ROS

После настройки и запуска модели будет выведен график движения робо- та в координатах XY (Рис. 4).

Рис. 4. График перемещения мобильного робота

Рис. 4. График перемещения мобильного робота

Заключение

Итак, в результате проделанной работы мы можем освоить основы использования ROS, моделирования в Matlab и управления мобильными роботами без установки Ubuntu Linux и использования дополнительных устройств.

Список литературы

1. Грудинин В.С., Грудинин С.В. Использование микрокомпьютера для разработки распределенных интеллектуальных систем управления // Общество, наука, инновации» (НПК-2013): материалы Всероссийской научно- практической конференции; Вят. гос. ун-т. Киров, 2013. 1 электрон. опт. диск (CD-ROM). С. 1104–1105.
2. What is Arduino? URL : https://www.arduino.cc .
3. ROS – Robot Operating System (ROS). URL : http://robocraft.ru/blog/robosoft/721.html