Цели проектирования системы ROS
В связи с быстрым развитием и растущей сложностью робототехники потребность в повторном использовании кода и модульности становится всё более актуальной. Некоторые робототехнические системы с открытым исходным кодом сталкиваются с трудностями в адекватном удовлетворении этих потребностей. В 2007 году компания Willow Garage выпустила операционную систему для роботов с открытым исходным кодом (ROS), что быстро вызвало волну интереса и широкое внедрение в научном сообществе, занимающемся робототехникой.
Система ROS появилась благодаря сотрудничеству проекта 2007 года в Лаборатории искусственного интеллекта Стэнфордского университета и программы персональных роботов Willow Garage. После 2008 года разработку возглавила Willow Garage. Благодаря впечатляющим возможностям первых роботов на базе ROS, таких как PR2 — складывать одежду, подключать устройства и готовить завтрак, — ROS привлекала всё больше внимания. Willow Garage заявила о намерении использовать разработку с открытым исходным кодом, чтобы превратить PR2 в «универсального» робота.
PR2 имел весьма высокую цену: в 2011 году его розничная стоимость составляла $400 000. В настоящее время он используется преимущественно в научно-исследовательских целях. PR2 оснащен двумя манипуляторами, каждый из которых имеет по семь шарниров, а в качестве конечных эффекторов выступают захватывающие манипуляторы. Передвижение обеспечивается четырьмя колесами, установленными на его основании. Камеры высокого разрешения, лазерные дальномеры, инерциальные измерительные блоки, тактильные датчики и другое современное сенсорное оборудование установлены на голове, груди, локтях и захватах PR2. Два 8-ядерных компьютера, расположенные на основании, служат центром управления и связи для аппаратного обеспечения робота. Оба компьютера работают под управлением Ubuntu и ROS.
Цели проектирования ROS
ROS — это система с открытым исходным кодом, выступающая в качестве вторичной операционной системы для роботов. Она обеспечивает функции, аналогичные функциям операционной системы, включая абстракцию аппаратного обеспечения, управление драйверами низкого уровня, выполнение общих функций, обмен сообщениями между программами и управление пакетами. Кроме того, она предоставляет инструменты и библиотеки для сбора, создания, написания и запуска программ, обеспечивающих совместную работу нескольких роботов. ROS — это система с открытым исходным кодом, которая выступает в качестве бэкэнд-операционной системы, или вторичной операционной системы, для роботов. Она предоставляет функции, аналогичные функциям операционной системы, включая абстракцию аппаратного обеспечения, управление низкоуровневыми драйверами, выполнение общих функций, обмен сообщениями между программами и управление пакетами. Кроме того, она предоставляет утилиты и библиотеки для сбора, сборки, написания и запуска программ совместной работы нескольких роботов.
Основные особенности ROS
Архитектура среды выполнения ROS представляет собой платформу обработки данных, которая использует коммуникационные модули ROS для установления слабосвязанных одноранговых сетевых соединений между модулями. Она реализует несколько типов взаимодействия, в том числе синхронную RPC-коммуникацию (удалённый вызов процедур) на основе сервисов, асинхронную коммуникацию с потоком данных на основе тем, а также хранение данных на сервере параметров. Однако сама по себе ROS не обладает встроенными возможностями работы в режиме реального времени.
Основные характеристики ROS можно обобщить следующим образом:
Одноранговая архитектура
Система, использующая ROS, состоит из ряда процессов, которые существуют на нескольких отдельных хостах и взаимодействуют во время работы по топологии «равный-равному». Хотя программные фреймворки, основанные на центральных серверах, также могут обеспечивать преимущества многопроцессных и многохостовых сред, при подключении компьютеров через разные сети в таких фреймворках возникают проблемы, связанные с центральным сервером данных. Система, использующая ROS, состоит из ряда процессов, которые существуют на нескольких разных хостах и взаимодействуют во время работы через одноранговую топологию. Хотя программные платформы, основанные на центральном сервере, также могут обеспечить преимущества многопроцессных и многохостовых сред, в таких платформах возникают проблемы с центральным сервером данных, когда компьютеры подключены через разные сети.
Многоязычная поддержка
При написании кода многие программисты, как правило, отдают предпочтение определенным языкам программирования. Эти предпочтения обусловлены такими факторами, как количество времени, затрачиваемое на программирование на каждом из языков, эффективность отладки, синтаксис, эффективность выполнения, а также различными техническими и культурными соображениями. Чтобы решить эти проблемы, мы разработали ROS как языконезависимый фреймворк. В настоящее время ROS поддерживает множество различных языков, включая C++, Python, Octave и LISP, а также включает в себя несколько реализаций интерфейсов для других языков.
Уникальность ROS проявляется в первую очередь на уровне обмена сообщениями, а не на более глубоких уровнях. Сквозные соединения и настройки реализуются с помощью механизма XML-RPC, который также включает в себя хорошо документированные реализации для большинства основных языков программирования. Мы стремимся к тому, чтобы ROS реализовывался более естественным образом на различных языках, в соответствии с их синтаксическими конвенциями, а не предоставлял интерфейсы на основе C для других языков. Однако в некоторых случаях удобно использовать существующие библиотеки для инкапсуляции поддержки новых языков. Например, клиент Octave реализован с использованием библиотеки-обёртки на C++.
Для поддержки кроссплатформенной разработки ROS использует простой, не привязанный к конкретному языку язык описания интерфейсов (IDL) для описания обмена сообщениями между модулями. IDL с помощью лаконичного текста определяет структуру каждого сообщения и допускает композицию сообщений. Например, на следующей схеме показано описание точечного сообщения с помощью IDL:
Генераторы кода для каждого языка создают соответствующие файлы с исходным кодом. Во время передачи и приёма сообщений ROS автоматически компилирует и выполняет эти файлы параллельно. Это значительно экономит время на программировании и снижает количество ошибок: файл IDL из трёх строк автоматически преобразуется в 137 строк кода на C++, 96 строк кода на Python, 81 строку кода на Lisp и 99 строк кода на Octave. Поскольку сообщения автоматически генерируются из простых текстовых файлов, можно легко добавлять новые типы сообщений. На момент написания данной статьи известные библиотеки кода на основе ROS содержат более четырёхсот типов сообщений. Эти сообщения передают данные с датчиков, позволяя объектам распознавать окружающую среду.
В результате обеспечивается обработка сообщений, независимая от языка, что позволяет свободно смешивать и сочетать несколько языков.
Оптимизация и интеграция
Большинство существующих проектов в области разработки программного обеспечения для робототехники содержат драйверы и алгоритмы, которые можно повторно использовать за пределами проекта. К сожалению, по разным причинам промежуточные уровни большей части кода чрезмерно запутанны, что затрудняет извлечение их функциональности и применение за пределами этапа прототипирования.
Чтобы противодействовать этой тенденции, мы рекомендуем постепенно преобразовывать все драйверы и алгоритмы в автономные библиотеки, не зависящие от ROS. Системы, построенные на основе ROS, отличаются модульностью, благодаря которой код внутри каждого модуля можно компилировать отдельно. Инструмент CMake, используемый для компиляции, способствует реализации концепции минимализма. ROS, по сути, инкапсулирует сложный код в библиотеках, создавая лишь небольшие приложения для демонстрации функциональности библиотек. Это позволяет переносить и повторно использовать простой код не только на этапе прототипирования. Еще одним преимуществом является то, что модульное тестирование становится значительно проще, когда код распределен по библиотекам. Одна тестовая программа может проверять несколько функций внутри библиотеки.
ROS использует код из множества существующих проектов с открытым исходным кодом. Например, он заимствует код драйверов, управления движением и моделирования из проекта Player; алгоритмы обработки изображений — из OpenCV; алгоритмы планирования — из OpenRAVE; а также из многих других проектов. В каждом случае ROS предоставляет разнообразные возможности настройки и облегчает обмен данными между программными компонентами, при этом применяя минимальное количество оберток и модификаций. ROS постоянно развивается благодаря поддержке со стороны сообщества, которое включает в исходный код обновления из других программных библиотек и исправления для приложений.
Комплексный набор инструментов
Для управления сложной программной платформой ROS мы использовали множество утилит для компиляции и запуска различных компонентов ROS, реализовав их в виде ядра, а не создавая громоздкую среду разработки и выполнения. Эти инструменты выполняют различные задачи, такие как организация структуры исходного кода, получение и настройка параметров конфигурации, визуализация сквозных топологических соединений, измерение использования пропускной способности, наглядное представление информационных данных и автоматическое создание документации. Хотя мы протестировали основные сервисы, такие как глобальные часы и регистратор для модулей контроллеров, мы по-прежнему стремимся к модуляризации всего кода. Мы считаем, что любые потери в эффективности с лихвой компенсируются преимуществами стабильности и снижения сложности управления.
Бесплатное программное обеспечение с открытым исходным кодом
Весь исходный код ROS находится в открытом доступе. Мы считаем, что это неизбежно будет способствовать отладке на всех уровнях программного обеспечения ROS и постоянному исправлению ошибок. Хотя программное обеспечение с закрытым исходным кодом, такое как Microsoft Robotics Studio и Webots, обладает многими достойными внимания качествами, мы по-прежнему считаем, что платформа с открытым исходным кодом остается незаменимой. Это особенно верно в тех случаях, когда аппаратное и программное обеспечение на всех уровнях разрабатываются и отлаживаются одновременно. Весь исходный код ROS находится в открытом доступе. Мы считаем, что это неизбежно будет способствовать отладке на всех уровнях программного обеспечения ROS и постоянному исправлению ошибок. Хотя программное обеспечение с закрытым исходным кодом, такое как Microsoft Robotics Studio и Webots, также обладает многими достоинствами, мы считаем платформу с открытым исходным кодом незаменимой. Это особенно верно в тех случаях, когда аппаратное и программное обеспечение на всех уровнях разрабатываются и отлаживаются одновременно.
Типичные роботы на базе ROS, представленные на рынке
Представленные на рынке роботы, использующие ROS, демонстрируют, как эта платформа с открытым исходным кодом поддерживает самые разные области применения. Например, мобильные роботы Например, роботы TurtleBot и Husarion на базе ROS широко используются в образовательных и научно-исследовательских целях; сервисные роботы, такие как Fetch и PR2, демонстрируют передовые возможности манипулирования и навигации; а промышленные платформы, например Husky от Clearpath, показывают возможности интеграции ROS в суровых условиях эксплуатации. Эти примеры отражают гибкость и масштабируемость ROS как в академической, так и в коммерческой робототехнике.
Ниже приведены типичные примеры четвероногих роботов на базе ROS, колесных роботов на базе ROS и гусеничных роботов на базе ROS.
Лучшие четвероногие роботы на базе ROS
| Название компании | Страна | Изображение робота | Применение | Официальный сайт |
| Unitree Robotics | Китай | ![]() | образование, научные исследования и промышленные задачи | https://www.unitree.com/go2 |
| Boston Dynamics | США | ![]() | Промышленный контроль | https://bostondynamics.com/products/spot/ |
Топ-5 колесных роботов на базе ROS
| Название компании | Страна | Изображение робота | Полезная нагрузка | Официальный сайт |
| MiR | Дания | ![]() | 600 кг | https://www.mobile-industrial-robots.com |
| Robotnik Robot | Испания | ![]() | 150 кг | https://bostondynamics.com/products/spot/ |
| Robotnik | Испания | ![]() | 250 кг | |
| Clearpath Robotics | Канада | ![]() | 100 кг | https://clearpathrobotics.com |
| Fdata Robot | Китай | ![]() | 1000 кг | https://www. fdatabot.com |
Лучшие роботы на гусеничном ходу с интеграцией ROS
| Название компании | Страна | Изображение робота | Применение | Официальный сайт |
| Superdroid Роботы | Канада | ![]() | Тактический робот Тактический робот | https://www.superdroidrobots.com/store/tracked-robots |
Ищете индивидуальные решения в области робототехники? Свяжитесь с нами
Свяжитесь с нами
Fdata — китайский производитель мобильных роботов. Мы специализируемся на разработке индивидуальных решений в области мобильных роботов и сопровождаем клиентов на всех этапах — от идеи до серийного производства.









