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

ROS (операционная система роботов)

Автор: Romeo Ceccato
Автор перевода: В.В. Ханас
Источник:2020 International Conference on Intelligent Computing, Automation and Systems (ICICAS) — pp. 910–912

Аннотация

Romeo Ceccato ROS (операционная система роботов).
Операционная система роботов (ROS) - это набор программных библиотек и инструментов для создания роботизированных приложений. От драйверов до передовых алгоритмов и с мощными инструментами разработки, ROS - это не простая среда моделирования, а сложная платформа с открытым исходным кодом, «промежуточное ПО», основанное на механизме анонимной публикации / подписки (сервер / клиент)[1], которое позволяет передача сообщений между различными процессами ROS, а также возможность работы в реальном времени, представленная ROS Industrial и доработанная с помощью нового «набора» ROS2.



Рис. 1.

ROS Industrial - это проект, посвященный разработке решений для робототехники и автоматизации на основе ROS для отраслевых аппаратных и программных средств. Эта инициатива началась как сотрудничество между Southwest Research Institute, Yaskawa Motoman Robotics и Willow Garage (организацией, основавшей ROS) в 2012 году и направлена на ускорение внедрения роботов с улучшенное поведение, такое как человеческое сотрудничество, мобильные манипуляции и движения, основанные на восприятии, за счет расширения горизонтов промышленных роботизированных решений, а также сварки, дозирования и обработки материалов[2].

Хотя ROS2 все еще находится на ранней стадии разработки, она представляет собой многообещающий план для будущего промышленного развертывания. Реализуются требования для его использования в промышленных роботах в механизмах безопасности и т. Д., Производительность программирования в реальном времени и взаимодействие с ROS будут мотивировать тысячи разработчиков и исследователей из промышленности и научных кругов улучшать разработку ROS2 для область автоматизации любого уровня.

Рис. 2.

Разработка D–H модели робота

Робототехнические компании, такие как ABB, Fanuc, Universal Robots, Robotiq, Omron, Staubli и Fanuc, имеют контроллеры ROS, пакеты программного обеспечения и драйверы для своих роботов в репозитории Github. Они предоставляют поддержку ROS-I и решения, которые позволяют интегрировать их инструменты с другими отраслевыми платформами, используя экосистему ROS[3].

В ближайшем будущем для широкой публики будут выпущены и другие автономные программные продукты на базе ROS2. Пакеты ABB ROS-I и Fanuc ROS-I предоставляют шаги для настройки сервера ABB ROS на своих промышленных контроллерах, установки сервера ROS на клиенте ROS (обычно ПК) и использования экосистемы ROS с их пользовательским программным обеспечением моделирования RobotStudio. Motoman предлагает решения для моделирования для планирования маршрута и установки сервера Motoman ROS на контроллеры FS, DX и FRC.

Как упоминалось ранее, ROS Industrial расширяет возможности ROS и приводит инструменты в соответствие с отраслевыми стандартами. Проект определяет стандартные отраслевые пакеты для графических пользовательских интерфейсов (GUI), конечных инструментов (EOAT), датчиков[4], манипуляторов и сетевых устройств, используемых на предприятиях.

ROS2 Позволяет отраслям разрабатывать решения бизнес-уровня, интеграцию с отраслевыми инструментами, такими как ПЛК и коммутаторы, а также протоколы связи, такие как CAN и Ethercat. Уровень ROS может взаимодействовать с любым существующим оборудованием с ROS. ROS имеет три основные парадигмы коммуникации:

На следующем изображении показаны особенности ROS1 и ROS2.

Рис.1 Особенности ROS1 и ROS2

Рис.1 Особенности ROS1 и ROS2

Родное программное обеспечение каждого аппаратное устройство может быть обернуто вокруг уровня ROS для создания узлов ROS используя стандарты промышленная АФК. Несколько пакетов ROS Промышленные обычно используют собственный программный API[5] для оборудования и интегрируют его со средой ROS, тем самым создавая канал для взаимодействия с ними через экосистему ROS. Сердцем любой системы ROS 2 является граф ROS.

Граф ROS относится к сети узлов в системе ROS и их коммуникационным соединениям. Узел - это специальное программное обеспечение для диаграммы ROS, узлы ROS используют клиентскую библиотеку ROS для связи с другими узлами. Узлы могут публиковать или получать темы («Темы»), а также могут предоставлять или использовать услуги и действия. Есть настраиваемые параметры, связанные с узлом[6], что делает его уникальным. Соединения между узлами устанавливаются посредством распределенного процесса обнаружения. Узлы могут находиться в одном процессе, в разных процессах или на разных машинах.

Клиентские библиотеки ROS позволяют взаимодействовать узлам, написанным на разных языках программирования. Существует базовая клиентская библиотека ROS (RCL), которая реализует общие функции, необходимые для API ROS на разных языках. Существуют библиотеки, написанные на разных языках, но в основном клиентскими библиотеками управляет команда ROS 2:

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

ROS2 может работать не только в существующих системах X86 и ARM, но также поддерживает встроенные микроконтроллеры, такие как MCU (ARM-M4, ядро M7). ROS2 поддерживает «реальное время», а также добавляет поддержку управления, которая может улучшить своевременность управления и общую производительность робота. ROS2 не только работает в системах Linux, но также добавляет поддержку Windows, MacOS, RTOS и других систем, предоставляя разработчикам больше возможностей выбора.

Для межузловой связи ROS2 использует DDS, отраслевой стандарт связи от OMG, для транспорта публикации-подписки. Преимущество использования DDS состоит в том, что существуют конкретные спецификации, которые третьи стороны могут просматривать, проверять и внедрять с различной степенью совместимости. DDS Quality-of-Service (QoS) предлагает гибкие настройки параметров для управления надежностью связи, кроме того, ROS2 может работать с различными поставщиками DDS, такими как FastRTPS, RTI-Connext, OpenSplice и другими.

Переносимость между поставщиками DDS предоставляет пользователям альтернативы для выбора определенных требований, а также против изменений в поставщиках DDS. Если модель связи ROS1 в основном включает механизмы связи, такие как темы и услуги, модель связи ROS2 немного сложнее, поскольку было добавлено много механизмов связи DDS. Модель связи ROS2 на основе DDS содержит следующие ключевые концепции:

Рис.2 Модель связи ROS2 на основе DDS

Рис.2 Модель связи ROS2 на основе DDS

Участник: в DDS каждый издатель или подписчик называется участником. Пользователь, использующий DDS, может использовать определенный тип данных для чтения и записи глобального пространства данных.

Издатель: Исполнитель публикации данных поддерживает публикацию нескольких типов данных и может быть связан с несколькими модулями записи данных (DataWriter) для публикации сообщений одной или нескольких тем.

Подписчик: исполнитель подписки на данные поддерживает подписки на несколько типов данных. Его можно связать с несколькими программами чтения данных и подписаться на сообщения одной или нескольких тем.

DataWriter: приложение верхнего уровня обновляет объект данных для издателя. Каждый модуль записи данных соответствует определенной теме, как редактор сообщений в ROS1.

DataReader: приложение верхнего уровня считывает данные от подписчиков. Каждый считыватель данных соответствует определенной теме, аналогично подписчику сообщения в ROS1.

Тема: аналогично концепции в ROS 1, аргументы должны определять имя и структуру данных, но каждый аргумент в ROS2 является экземпляром, который может хранить исторические данные сообщений в этом аргументе.

Качество обслуживания: сокращенно «Политика QoS»[7], это новая и очень важная концепция, добавленная в ROS2. Он управляет всеми аспектами механизма связи с нижележащим уровнем, в основном из аспектов ограничения по времени, надежности, непрерывности и истории для удовлетворения требований к пользовательским данным для различных сценариев.

Архитектура ROS 2 (ros industrial) может быть представлена следующим графиком:

Рис.3 Архитектура ROS 2

Рис.3 Архитектура ROS 2

Таким образом, с версиями ROS - Industrial и ROS2 зона охвата компаний, которые могут принять эту программную платформу для разработки новых приложений, основанных на использовании новых появляющихся технологий, также в промышленном секторе, например, тех, которые принимают «Компьютерное зрение» (openCV) также в сочетании с реализациями «машинного обучения» в отношении приложений системы SLAM (одновременная локализация и отображение).

Таким образом, существует множество возможностей, которые эта платформа предлагает тем, кто намеревается изменить парадигму в изучении промышленной робототехники, поскольку рыночный спрос в этой области явно растет, о чем свидетельствует следующее изображение, которое принимает во внимание только небольшая часть моделей роботов, которые в настоящее время требуют высококвалифицированного персонала в робототехнических исследованиях:

Рис.4 Модели роботов, которые в
настоящее время требуют высококвалифицированного персонала в робототехнических исследованиях

Рис.4 Модели роботов, которые в настоящее время требуют высококвалифицированного персонала в робототехнических исследованиях

Тем, кто хочет подойти к изучению операционной системы роботов даже на начальном уровне, я советую начать с хороших знаний C ++ и Python, которые в основном являются основными языками ROS (2), и просто дать самое первое представление Используя самый классический учебник «turtlesim», я отмечаю, что в этой среде требуется много ручных навыков для вставки кода из командной строки (отсюда и изменение парадигмы, необходимое для начинающих профессионалов).

В этом примере, который включает установку ROS2 с зависимостями, в соответствии с инструкциями официального сайта «Можно отметить, что для минимального рабочего потенциала (чтобы черепаха двигалась в графической среде, необходимо использовать терминал для оперативной справки по использованию команд ROS:

Рис.5 Терминал для оперативной справки

Рис.5 Терминал для оперативной справки

Терминал онлайн-справки для использования команды "run":

Рис.6 Терминал онлайн-справки для использования команды "run"

Рис.6 Терминал онлайн-справки для использования команды "run"

Интерактивный справочный терминал для просмотра списка узлов исполняемого пакета:

Рис.7 Интерактивный справочный терминал для просмотра списка узлов исполняемого пакета

Рис.7 Интерактивный справочный терминал для просмотра списка узлов исполняемого пакета

Терминал для «запуска» исполняемого пакета, который выведет графическое окно виртуальной среды.

Рис.8 Терминал для «запуска» исполняемого пакета, который выведет графическое окно виртуальной среды.

Рис.8 Терминал для «запуска» исполняемого пакета, который выведет графическое окно виртуальной среды.

Терминал для «запуска» командного узла приложения «действие»:

Рис.9 Терминал для «запуска» командного узла приложения «действие»

Рис.9 Терминал для «запуска» командного узла приложения «действие»

Наконец, терминал для запуска нужной "темы":

Рис.10 Терминал для запуска нужной "темы"

Рис.10 Терминал для запуска нужной "темы"

Все эти операции приведут к тому, что наш робот-черепаха будет рисовать квадрат в защищенной среде.

Рис.11 Результат работы программы

Рис.11 Результат работы программы

Среды моделирования для промышленных приложений, очевидно, используют плагины ROS. Специально разработанный, например, плагин "gazebo_ros_api_plugin", входящий в пакет gazebo_ros. Это программное обеспечение инициализирует узел ROS под названием "gazebo", который объединяет планировщик обратного вызова ROS (передача сообщений) с внутренним планировщиком Gazebo для обеспечения интерфейсов ROS полезен для управления виртуальными средами.

Этот ROS API позволяет пользователю управлять свойствами среды моделирования в ROS, а также генерировать и анализировать состояние моделей в среде, как показано на следующем рисунке:

Рис.12 ROS API Gazebo

Рис.12 ROS API Gazebo

Заключение

В заключение, ROS (ROS2), на мой взгляд, является той основой, на которую должны ссылаться те, кто намеревается подойти к миру робототехники с профессиональной точки зрения высокого уровня (а не как операторы). Таким образом, ROS - это операционная среда, в которой алгоритмы искусственного интеллекта находят множество приложений, просто подумайте об «автономной навигации», обработке изображений, управлении датчиками применительно к COBOT и т. д.

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

1. Choset. Principles of Robot Motion: Theory, Algorithms, and Implementations[J]. Proceedings of the Society for Experimental Biology & Medicine Society for Experimental Biology & Medicine, 2005, 147(1):512–512.
2. P.P.L. Regtien. Sensor systems for robot control[J]. Sensors and Actuators, 17(1-2):91–101.
3. Sabatier, F, De Vivo, A, Vialle, S. [IEEE Comput. Soc Thirteenth IEEE International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises — Modena, Italy (14-16 June 2004)] 13th IEEE International Workshops on Enabling Technologies: Infrastructure for Collaborative[J]. :358–363.
4. Apoorva, Deepak, Kapadia, et al. A New Approach to Extensible Continuum Robot Control Using the Sliding-Mode[J]. Computer technology and application: English, 2011(4):293–300.
5. J. A. Becerra, F. Bellas, J. Santos, et al. Complex Behaviours Through Modulation in Autonomous Robot Control[J]. 2005, 3512:449–472.
6. Zhang, Haijie, Zhao, Jianguo. Bio-inspired vision based robot control using featureless estimations of time-to-contact[J]. Bioinspiration & Biomimetics, 12(2):025001.
7. Sampei, M, Furuta, K. Robot control in the neighborhood of singular points[J]. IEEE Journal of Robotics and Automation, 4(3):303–309.