Цели проектирования системы ROS
С быстрым развитием и усложнением робототехники все острее встает вопрос о необходимости повторного использования и модульности кода. Некоторые робототехнические системы с открытым исходным кодом не смогли удовлетворить эти потребности. В 2007 году компания Willow Garage выпустила операционную систему Robot Operating System (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 (Remote Procedure Call) на основе сервисов, асинхронную связь потоков данных на основе тем и хранение данных на сервере параметров. Однако 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 bot, широко используются для обучения и исследований; сервисные роботы, такие как 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
| Имя Копмай | Страна | Изображение робота | Playload | Официальный сайт |
| MiR | Дания | ![]() |
600 кг | https://www.mobile-industrial-robots.com |
| Робот Роботник | Испания | ![]() |
150 кг | https://bostondynamics.com/products/spot/ |
| Роботник | Испания | ![]() |
250 кг | |
| Clearpath Robotics | Канада | ![]() |
100 кг | https://clearpathrobotics.com |
| Робот Fdata | Китай | ![]() |
1000 КГ | https://www. fdatabot.com |
Лучшие гусеничные роботы с интеграцией ROS
| Имя Копмай | Страна | Изображение робота | Приложение | Официальный сайт |
| Superdroid
Роботы |
Канада | ![]() |
Тактический робот Тактический робот | https://www.superdroidrobots.com/store/tracked-robots |
Ищете индивидуальные решения для робототехники? Свяжитесь с США
Свяжитесь с нами
Fdata - производитель мобильных роботов в Китае, мы специализируемся на индивидуальных решениях для мобильных роботов, помогая клиентам от идеи до серийного производства.









