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