Robot Operating System
Robot Operating System (ROS) — это модульная платформа (фреймворк) для разработки программного обеспечения роботов, представляющая собой набор библиотек, инструментов и соглашений, упрощающих создание сложного и масштабируемого робототехнического поведения. Несмотря на название, ROS не является операционной системой в традиционном понимании (как Linux или Windows), а работает поверх существующей операционной системы, обеспечивая взаимодействие между различными компонентами робота.
История
Предпосылки и создание
Разработка ROS началась в 2007 году в Стэнфордском университете в рамках проекта Стэнфордской лаборатории искусственного интеллекта (SAIL). Основной целью было создание универсальной среды для совместной разработки, которая позволила бы исследователям и инженерам не переписывать базовые компоненты управления роботами с нуля, а использовать готовые модули. Первый официальный релиз, ROS 0.4 «Mango Tango», был выпущен в 2009 году. С 2013 года основным разработчиком и координатором проекта стала компания Willow Garage, а затем — Open Source Robotics Foundation (OSRF), некоммерческая организация, управляющая развитием платформы.
Развитие и версии
ROS развивалась итеративно, с ежегодными релизами, каждый из которых имел кодовое имя (например, «ROS Groovy Galapagos», «ROS Indigo Igloo»). Версии были привязаны к определённым версиям Ubuntu Linux. В 2017 году была анонсирована и выпущена вторая версия — ROS 2, которая стала ответом на ограничения оригинальной архитектуры, выявленные при попытках использования ROS в промышленных и коммерческих продуктах. ROS 2 была переписана с учётом требований реального времени, безопасности и работы в распределённых системах.
Архитектура и принципы работы
Узлы и темы
Основой архитектуры ROS является графовая модель, где каждый процесс, выполняющий вычисления, называется узлом (node). Узлы могут быть написаны на разных языках программирования (C++, Python, Java, Lisp) и обмениваются данными друг с другом через темы (topics). Тема — это именованный канал, по которому передаются сообщения определённого типа. Узел может публиковать (publish) сообщения в тему или подписываться (subscribe) на неё. Такой механизм обеспечивает слабую связанность компонентов: издатель не знает, кто и сколько получателей его сообщений.
Сервисы и действия
Для запросов, требующих ответа (например, «включить мотор» или «получить текущие координаты»), используется механизм сервисов (services). Сервис реализует модель «запрос-ответ» (request-reply). Для длительных задач, которые можно прервать или отслеживать их прогресс (например, «переместить манипулятор в точку А»), применяются действия (actions). Действия предоставляют обратную связь во время выполнения и возможность отмены.
Мастер ROS и параметры
В ROS 1 центральным элементом является Мастер ROS (ROS Master), который выполняет функции именования и регистрации узлов, а также помогает им находить друг друга. В ROS 2 от Мастера отказались в пользу децентрализованной системы обнаружения на основе протокола DDS (Data Distribution Service). Для хранения конфигурационных данных используется сервер параметров (Parameter Server) — общее хранилище ключей и значений, доступное всем узлам.
Версии и дистрибутивы
ROS 1
ROS 1 была первой и основной версией, получившей широкое распространение в академической среде и исследованиях. Её ключевые особенности:
- Централизованная архитектура с Мастером.
- Поддержка только Linux (Ubuntu) как основной платформы.
- Ограниченная поддержка реального времени и безопасности.
- Последний стабильный релиз — ROS Noetic Ninjemys (2020 год), поддержка которого завершилась в мае 2025 года.
ROS 2
ROS 2 была разработана для преодоления недостатков первой версии. Её отличия:
- Децентрализованная архитектура на базе DDS, что обеспечивает встроенную поддержку безопасности, качества обслуживания (QoS) и работы в гетерогенных сетях.
- Кроссплатформенность: официально поддерживаются Linux, Windows и macOS.
- Поддержка реального времени (real-time) и встраиваемых систем.
- Единая система сборки (ament) и улучшенная поддержка многопоточности.
- Актуальные дистрибутивы: Humble Hawksbill (LTS, 2022), Iron Irwini (2023), Jazzy Jalisco (LTS, 2024).
Применение
Научные исследования и образование
ROS является стандартом де-факто в университетских лабораториях и исследовательских центрах, занимающихся робототехникой. Она используется для прототипирования, симуляции (через интеграцию с симуляторами Gazebo, Webots, Unity) и отладки алгоритмов управления, навигации, компьютерного зрения и манипуляции.
Промышленность и коммерция
Хотя ROS 1 редко применялась в промышленных продуктах из-за проблем с надёжностью, ROS 2 активно внедряется в коммерческие решения:
- Промышленные роботы-манипуляторы: компании, такие как Franka Emika и Universal Robots, используют ROS 2 для гибкого программирования.
- Мобильные роботы: ROS 2 лежит в основе многих автономных транспортных средств (AGV) и роботов-доставщиков.
- Сервисная робототехника: роботы-пылесосы, уборщики, медицинские ассистенты.
- Автомобильная промышленность: некоторые проекты автономного вождения (например, Autoware) базируются на ROS 2.
Робототехника в России
В России ROS используется в ряде университетов (МГУ, МФТИ, Сколтех, Университет Иннополис) и компаний, занимающихся разработкой робототехники. Российские разработчики вносят вклад в открытый код ROS, а также создают специализированные дистрибутивы и инструменты, адаптированные под локальные задачи (например, для сельского хозяйства или логистики). Однако широкое промышленное внедрение сдерживается необходимостью соответствия стандартам безопасности и сертификации.
Инструменты и экосистема
Основные инструменты
- rviz — 3D-визуализатор для отображения данных с сенсоров, моделей роботов и траекторий.
- Gazebo — популярный симулятор физики, тесно интегрированный с ROS.
- rosbag — инструмент для записи и воспроизведения потоков сообщений, используемый для отладки и тестирования.
- rqt — набор графических плагинов для мониторинга и управления системой.
Пакеты и сообщество
Экосистема ROS насчитывает тысячи пакетов (packages), доступных в репозиториях. Среди наиболее известных:
- navigation — стек для навигации мобильных роботов (SLAM, планирование пути, управление).
- moveit — фреймворк для управления манипуляторами и планирования движений.
- perception — пакеты для обработки данных с камер (RGB-D, стерео) и лидаров.
- control — инструменты для управления приводами и обратной связью.
Критика и ограничения
Недостатки ROS 1
- Отсутствие поддержки реального времени (hard real-time) делало её непригодной для критически важных систем.
- Зависимость от Мастера создавала единую точку отказа.
- Проблемы с безопасностью: отсутствие встроенных механизмов шифрования и аутентификации.
- Сложность настройки для новичков и высокая требовательность к ресурсам.
Ограничения ROS 2
- Сложность конфигурации DDS: настройка QoS и выбор подходящего DDS-вендора (RTI Connext, Fast DDS, Cyclone DDS) требуют глубоких знаний.
- Высокое потребление памяти по сравнению с встраиваемыми системами.
- Неполная обратная совместимость с ROS 1, что затрудняет миграцию старых проектов.
Интересные факты
- Название «Robot Operating System» было выбрано как ироничное, поскольку создатели понимали, что это не операционная система, но термин прижился.
- ROS используется в проекте NASA по созданию роботов для исследования Марса (например, в прототипах роверов).
- В 2021 году OSRF объявила о переходе на полностью открытую лицензию (BSD) для всех ключевых компонентов ROS 2.
Источники
- Quigley, M., et al. «ROS: an open-source Robot Operating System.» ICRA Workshop on Open Source Software, 2009.
- Open Source Robotics Foundation. «ROS 2 Documentation.» (docs.ros.org)
- Macenski, S., et al. «The Robot Operating System: Past, Present, and Future.» IEEE Robotics & Automation Magazine, 2022.
- Willow Garage. «ROS: A Robot Operating System.» Technical Report, 2010.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →