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

ROS

ROS (от англ. Robot Operating System, «Операционная система для роботов») — это мета-операционная система, или фреймворк, для разработки программного обеспечения роботов. Представляет собой набор программных библиотек, инструментов и соглашений, предназначенных для упрощения создания сложного и надёжного роботизированного поведения. ROS не является операционной системой в традиционном понимании (как Windows или Linux), а работает поверх существующей ОС (преимущественно Ubuntu Linux), предоставляя сервисы, характерные для ОС: аппаратную абстракцию, низкоуровневый контроль устройств, реализацию часто используемых функций, передачу сообщений между процессами и управление пакетами.

История

Предпосылки и создание

Разработка ROS началась в 2007 году в Стэнфордском университете (США) в рамках проекта Stanford AI Robot (STAIR). Команда под руководством Эрика Бергера и Эндрю Нг ставила целью создать гибкую и модульную платформу для робототехнических исследований, которая позволила бы повторно использовать код и избежать «изобретения велосипеда». Первый публичный релиз (ROS 0.4) состоялся в 2009 году.

Развитие под эгидой Willow Garage

В 2008 году разработка перешла к компании Willow Garage, которая занималась созданием персонального робота PR2. Willow Garage значительно расширила функционал ROS, добавила систему сборки (catkin) и стандартизировала форматы сообщений. В 2010 году вышла версия ROS 1.0 (дистрибутив «Box Turtle»), которая стала основой для большинства исследовательских проектов того времени.

Переход к Open Robotics

После закрытия Willow Garage в 2014 году управление проектом перешло к некоммерческой организации Open Robotics (позднее переименована в Open Source Robotics Foundation, OSRF). OSRF обеспечила поддержку сообщества, выпуск новых дистрибутивов и развитие инфраструктуры.

ROS 2

В 2015 году был анонсирован ROS 2 (Ardent Apalone), который стал ответом на ограничения ROS 1, в первую очередь — отсутствие поддержки реального времени, безопасности и работы в распределённых системах. ROS 2 базируется на протоколе DDS (Data Distribution Service), что обеспечивает детерминированность и масштабируемость. Первый стабильный релиз ROS 2 вышел в 2017 году. По состоянию на 2025 год ROS 2 является основным направлением развития, а ROS 1 считается устаревшим (последний дистрибутив ROS 1 — Noetic Ninjemys, выпущен в 2020 году).

Архитектура и принципы работы

Узлы и темы

Основой архитектуры ROS является граф вычислений. Программные компоненты, называемые узлами (nodes), обмениваются данными, публикуя сообщения в темы (topics) или подписываясь на них. Узел — это исполняемый файл, выполняющий конкретную задачу (например, чтение данных с лидара или управление колёсами). Темы — это именованные каналы передачи данных, где один узел отправляет сообщение, а другие его получают. Связь осуществляется по принципу «издатель-подписчик» (publisher-subscriber).

Сервисы и действия

Для выполнения запросов-ответов (например, «включить мотор») используется механизм сервисов (services), работающий по модели «клиент-сервер». Для длительных задач с возможностью прерывания (например, «переместить манипулятор в точку») применяются действия (actions), которые предоставляют обратную связь о ходе выполнения.

Мастер и параметры

В ROS 1 центральным элементом является Мастер (Master) — сервер имён, который регистрирует все узлы и темы, позволяя им находить друг друга. В ROS 2 Мастер отсутствует — обнаружение узлов осуществляется децентрализованно через DDS. Для хранения конфигурационных данных используется сервер параметров (Parameter Server), где узлы могут читать и записывать значения.

Пакеты и метапакеты

Код в ROS организован в пакеты (packages) — минимальные единицы сборки, содержащие узлы, библиотеки, конфигурации и файлы запуска (launch files). Метапакеты (metapackages) объединяют несколько пакетов для решения общей задачи (например, навигация). Система сборки по умолчанию — catkin (для ROS 1) и ament (для ROS 2).

Основные дистрибутивы

ROS имеет версионность, основанную на кодовых именах, которые выпускаются ежегодно (для ROS 1) или раз в два года (для ROS 2). Наиболее значимые дистрибутивы:

ДистрибутивВерсия ROSДата выходаПримечания
Box TurtleROS 12010Первый стабильный релиз
Indigo IglooROS 12014Долгосрочная поддержка (LTS)
Kinetic KameROS 12016LTS, популярен для Ubuntu 16.04
Melodic MoreniaROS 12018LTS, поддержка Python 3
Noetic NinjemysROS 12020Последний LTS-релиз ROS 1
Ardent ApaloneROS 22017Первый стабильный релиз ROS 2
Foxy FitzroyROS 22020LTS, рекомендован для новых проектов
Humble HawksbillROS 22022LTS, поддержка Ubuntu 22.04
Rolling RidleyROS 22021Непрерывный дистрибутив (rolling release)

Инструменты и экосистема

Симуляция

ROS тесно интегрирован с симуляторами, прежде всего с Gazebo (разработан Open Robotics). Gazebo позволяет моделировать роботов, датчики и физику окружающей среды, что ускоряет разработку без риска повреждения реального оборудования. Также поддерживаются симуляторы Webots, CoppeliaSim (V-REP) и Unity.

Визуализация и отладка

  • RViz — 3D-визуализатор, отображающий данные с датчиков (лазерные сканы, облака точек, карты), траектории движения и состояние робота.
  • rqt — набор графических инструментов для мониторинга тем, сервисов, параметров и логов.
  • rosbag — утилита для записи и воспроизведения сообщений (bag-файлы), что позволяет повторно обрабатывать данные.

Библиотеки и пакеты

Экосистема ROS включает тысячи готовых пакетов, решающих типовые задачи:

  • navigation — набор пакетов для планирования пути и управления движением (move_base, amcl, costmap_2d).
  • moveit — фреймворк для управления манипуляторами, включая планирование траекторий, кинематику и коллизионный контроль.
  • slam_gmapping и cartographer — пакеты для построения карт и локализации (SLAM).
  • perception — пакеты для обработки данных с камер (OpenCV, PCL) и лидаров.
  • control — пакеты для управления (PID-регуляторы, контроллеры).

Применение

Научные исследования

ROS является стандартом de facto в академической робототехнике. Большинство исследовательских проектов, от мобильных роботов до гуманоидных машин, используют ROS для быстрого прототипирования. Примеры: робот PR2, TurtleBot, Baxter, NAO.

Промышленность

В промышленности ROS 2 применяется для создания коллаборативных роботов (коботов), автономных мобильных роботов (AMR) и систем управления. Крупные компании, такие как Amazon Robotics, Fetch Robotics, Yaskawa, используют ROS в своих продуктах. Однако для критически важных применений (например, в автомобильной промышленности) требуется дополнительная сертификация, что пока ограничивает распространение.

Образование

ROS широко используется в учебных курсах по робототехнике. Симуляция и доступность готовых пакетов позволяют студентам сосредоточиться на алгоритмах, а не на низкоуровневом программировании. Популярные учебные платформы: TurtleBot 3, JetBot, RoboMaster.

Беспилотные летательные аппараты

ROS применяется в дронах (например, на базе PX4 и ArduPilot) для автономной навигации, картирования и мониторинга. Пакет mavros обеспечивает связь между ROS и автопилотом.

Критика и ограничения

ROS 1

  • Отсутствие реального времени: ROS 1 не гарантирует детерминированности, что делает его непригодным для жёстких систем управления (например, тормозов автомобиля).
  • Зависимость от Мастера: отказ Мастера приводит к остановке всей системы.
  • Проблемы безопасности: отсутствие встроенной аутентификации и шифрования.
  • Сложность с распределёнными системами: плохая поддержка работы через ненадёжные сети.

ROS 2

  • Сложность настройки DDS: выбор и конфигурация DDS-реализации (Fast DDS, Cyclone DDS, RTI Connext) требуют опыта.
  • Высокое потребление ресурсов: DDS генерирует больше служебного трафика, чем ROS 1.
  • Несовместимость с ROS 1: пакеты для ROS 1 не работают в ROS 2 без переписывания кода.
  • Отсутствие зрелой экосистемы: на момент 2025 года не все пакеты ROS 1 перенесены на ROS 2.

Интересные факты

  • Название «ROS» не является акронимом, хотя часто расшифровывается как Robot Operating System. Изначально проект назывался «Switchyard», но был переименован.
  • ROS 1 написан преимущественно на C++ и Python, а ROS 2 дополнительно поддерживает C++14/17 и Python 3.
  • В 2022 году Open Robotics объявила о создании Open Source Robotics Alliance (OSRA) для управления развитием ROS.
  • Крупнейшая конференция по ROS — ROSCon, проводится ежегодно с 2012 года.

Источники

  • Quigley, M., et al. «ROS: an open-source Robot Operating System.» ICRA Workshop on Open Source Software, 2009.
  • Документация ROS Wiki (wiki.ros.org).
  • Документация ROS 2 (docs.ros.org).
  • Open Robotics Foundation. «ROS 2 Design.» 2015.
  • Koubaa, A. (ed.). «Robot Operating System (ROS): The Complete Reference.» Springer, 2016–2021.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →