Начиная с Ubuntu 22.04 или с июня 2025 года, официальная базовая поддержка ROS1 больше не обновляется, рекомендуется использовать систему ROS2. ROS 2 значительно превосходит ROS 1 по архитектуре, реальному времени, безопасности и расширяемости экосистемы. Для разработки новых проектов рекомендуется сразу использовать ROS2, но при необходимости миграции следует взвесить существующие ресурсы и долгосрочные выгоды. Подробную информацию о соответствии версий Ubuntu см. по ссылке Взаимосвязь различных версий ROS и Ubuntu, далее приведен сравнительный анализ двух подходов:
| Версия ROS 2 | Версия Ubuntu | LTS или нет | Дата выпуска |
| Jazzy | 24.04 (Noble) | Да (LTS) | 2024 |
| Килт | 24.04 (Noble) | Нет | 2025-05 |
История и развитие
- ROS1: Разработан Стэнфордским университетом и компанией Willow Garage, сосредоточенной на исследованиях и создании прототипов.
- ROS2: Запущен в 2014 году, ориентирован на промышленную робототехнику, использует промежуточное ПО DDS для повышения производительности в реальном времени, кроссплатформенной поддержки и безопасности.
Вывод: ROS1 лучше подходит для исследований и прототипирования, тогда как ROS2 идеален для промышленного и коммерческого применения.
2. Системная архитектура
| Габариты | ROS1 | ROS2 |
| Базовая архитектура | Использует централизованную архитектуру, полагаясь на главный узел (менеджер узлов) для регистрации узлов и организации связи. | Распределённая архитектура, прямая связь между узлами, без необходимости в Master, поддержка механизма динамического обнаружения. |
| Модель связи | Кастомизированная система связи на основе протокола TCP/UDP, которая имеет такие проблемы, как задержка, потеря пакетов и невозможность шифрования. | Стандартизированный протокол связи на основе DDS, поддерживающий работу в реальном времени, шифрование и кроссплатформенное взаимодействие. |
| Надёжность | Полагается на TCP для связи «точка-точка», подвержен потере пакетов | Надежная передача гарантируется политиками QoS (например, Reliable). |
| Система сборки | Использует системы сборки rosbuild (ранняя) и catkin. | Введена автоматизированная система сборки, обеспечивающая более гибкое управление зависимостями и сборку на нескольких языках. |
3. Пользовательский опыт
| Габариты | ROS1 | ROS2 |
| Кривая обучения | Богатые ресурсы сообщества и зрелая документация — подходит для быстрого старта. | Новые функции повышают порог входа (например, настройка DDS, отладка в реальном времени), но в долгосрочной перспективе система более сопровождаема. |
| Затраты на миграцию | Проекты на ROS 1 требуют рефакторинга логики связи, управления узлами и системы сборки для миграции на ROS 2. | Доступны инструменты миграции (например, ros1_bridge) для обеспечения совместимости узлов ROS 1 и ROS 2. |
| Отладка и инструментарий | Опираясь на такие инструменты, как roslaunch и rviz, процесс отладки остается более традиционным. | Новый фреймворк запуска (с поддержкой конфигурации на Python), встроенная система журналирования и улучшенные инструменты тестирования. |
| Сообщество и экосистема | Экосистема обширна, но некоторые функции сложно расширять из-за архитектурных ограничений. | Новые функции интегрировать проще (например, более глубокая интеграция с Gazebo и веб-технологиями), а экосистема продолжает расширяться. |
4. Сравнение ключевых технологий
| Габариты | ROS1 | ROS2 |
| Связь между узлами | Связь между узлами устанавливается через регистрацию у мастера. | Узлы автоматически обнаруживают друг друга и обмениваются данными напрямую через DDS. |
| Обмен сообщениями | Использует пользовательский тип сообщения (.msg), реализация на основе roscpp/rospy. | Генерация многоязычных сообщений на основе IDL (Interface Definition Language) для лучшей совместимости. |
| Отказоустойчивость | Отказ Master может привести к остановке всей системы. | Распределенная архитектура позволяет избежать единой точки отказа; узлы могут динамически подключаться и отключаться. |
5. Синтаксические различия
| Габариты | ROS1 | ROS2 |
| Синтаксис создания узлов | Управление узлами через ros::NodeHandle, что требует запуска централизованного менеджера roscore. | Используйте rclcpp::Node или rclpy::Node для создания узлов напрямую без roscore, что поддерживает распределённую архитектуру. |
| Механизм связи | Связь осуществляется на основе кастомного протокола TCP/UDP, при этом регистрация и обнаружение узлов требуют ручного управления. | На основе стандарта DDS (Data Distribution Service) узлы автоматически обнаруживают друг друга и взаимодействуют между собой. |
| Определение сообщения | Тип сообщения определяется с помощью файла .msg, реализация опирается на roscpp/rospy. | Использование IDL (Interface Definition Language) для генерации многоязычных сообщений с целью лучшей совместимости. |
| Файлы запуска | Файл .launch пишется на XML, функциональность ограничена, динамическая настройка затруднена. | Файл .launch.py пишется на Python, что поддерживает динамическую логику (например, условные операторы, передача параметров). |
6. Различия в практическом применении
| Габариты | ROS1 | ROS2 |
| Поддержка нескольких языков | Основная поддержка — C++ и Python; другие языки требуют адаптации. | Расширенная поддержка дополнительных языков (например, Rust, Java) и кросс-языковая совместимость через Interface Definition Language (IDL). |
| Система сборки | Опирается на систему сборки catkin, которая требует строгого соблюдения структуры рабочего пространства. | Использование системы сборки ament для более гибкого управления зависимостями и многоязычной сборки. |
| Поддержка в реальном времени | Низкая производительность в реальном времени, сложно удовлетворить потребности промышленного управления в реальном времени. | Улучшение поддержки систем реального времени (например, rclcpp в ROS 2 обеспечивает планирование потоков реального времени). |
| Безопасность | Отсутствие встроенных механизмов шифрования и аутентификации. | Поддерживает расширения безопасности DDS (DDS-Security) для обеспечения аутентификации, шифрования данных и контроля доступа. |
| Кросс-платформенная поддержка | Работает преимущественно на Linux, поддержка Windows/macOS ограничена. | Поддерживает несколько платформ, таких как Linux, Windows, macOS, RTOS и другие, с четким разделением на Tier 1 (официально активно поддерживается) и Tier 2 (поддерживается сообществом), что усиливает кросс-системную совместимость. |
| Инструменты отладки | При использовании традиционных инструментов, таких как roslaunch и rviz, система логирования остается относительно базовой. | Предоставляет встроенную систему логирования (например, RCLCPP_INFO), поддержку скриптов на Python и более совершенные инструменты тестирования. |
| Отказоустойчивость | Отказ roscore может привести к остановке всей системы. | Распределенная архитектура позволяет избежать единой точки отказа; узлы могут динамически подключаться и отключаться. |
7. Типичные сценарии применения
- ROS 1: Образование, исследовательские проекты (например, навигация мобильных роботов, SLAM), сценарии, не требующие высокой производительности в реальном времени и безопасности. Если проект зрелый и не требует функций реального времени, безопасности или кросс-платформенности, а также опирается на большое количество ресурсов экосистемы ROS 1, продолжайте использовать ROS 1.
- ROS 2: Промышленная автоматизация, автономное вождение, дроны и другие сценарии, требующие высокого уровня реального времени, безопасности и кросс-платформенной поддержки, а также долгосрочного сопровождения крупномасштабных проектов (например, Доставка роботы, аПромышленные роботы, медицинские роботы). Проекты, требующие промышленной стабильности, управления в реальном времени, защищённого шифрования или кроссплатформенного развёртывания, предпочтительно реализовывать на ROS 2.
8. Совместимость оборудования и платформ
- В основном поддерживает Linux (Ubuntu).
- RO Нативно поддерживает Linux, Windows, macOS и встраиваемые платформы.
9. Поддержка экосистемы и сообщества
- ROS1: Большое количество пакетов и активное сообщество.
- ROS2: Быстрорастущая экосистема, но количество пакетов пока отстаёт.
Вывод: ROS1 имеет зрелую экосистему, а ROS2 быстро её догоняет.
10. Стоимость миграции и модернизации
- API несовместимы, требуется переписывание кода.
- Драйверы могут потребовать адаптации; ros1_bridge может помочь с поэтапной миграцией.
Вывод: Затраты на миграцию высоки, но риски можно снизить за счёт поэтапного обновления.
11. Безопасность и промышленные стандарты
- ROS1: Нет встроенных механизмов безопасности.
- ROS2: Соответствует стандартам безопасности DDS, возможна интеграция с OPC UA и TSN.
Вывод: ROS2 лучше подходит для критически важных с точки зрения безопасности и промышленных приложений.
Будущие тенденции и дорожная карта
- ROS1Noetic — финальный релиз, поддерживается до 2025 года.
- ROS2 Следует стратегии долгосрочной поддержки (LTS) с активными обновлениями функциональности.
Вывод: Тенденция явно в пользу ROS2.
Выводы и рекомендации
Для исследователям или новичкам, ROS1 остаётся зрелым и стабильным выбором; для промышленные пользователи или коммерческие команды, преимущества ROS2 в распределенных системах, производительности в реальном времени и безопасности обеспечивают долгосрочную ценность.
Практические рекомендации: Оценивайте версию ROS на ранних этапах планирования проекта и принимайте решения на основе зрелости экосистемы и возможностей команды.

