Открыть сервис

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 →