Промежуточное программное обеспечение для робототехники

Промежуточное программное обеспечение для робототехники (англ. robotics middleware) — это разновидность промежуточного программного обеспечения, применяемая в сложных программных системах управления роботами. Промежуточное ПО для робототехники часто называют программным «клеем» (software glue), которое упрощает разработчикам роботов фокусировку на решаемых ими задачах[1].

Проекты промежуточного ПО для робототехники

Существует множество проектов в области промежуточного программного обеспечения для робототехники, но ни один из них не является доминирующим — и, фактически, многие робототехнические системы вовсе не используют промежуточного ПО[2]. Продукты этой категории используют широкий спектр стандартов, технологий и подходов, что затрудняет их использование и совместную работу; часть разработчиков предпочитает интегрировать системы самостоятельно[2].

Player Project

Player Project (ранее Player/Stage Project) — проект по созданию свободного ПО для исследований в области робототехники и сенсорных систем[3]. Состоит из сетевого сервера Player и симуляторов робототехнических платформ Stage. Хотя точных статистических данных нет, Player считается одним из самых популярных открытых интерфейсов для управления роботами в научных исследованиях и высшем образовании[4]. Большинство ведущих журналов и конференций в области интеллектуальной робототехники регулярно публикуют работы, использующие Player и Stage для лабораторных и симулированных экспериментов.

RT-middleware

RT-middleware — стандартная платформа для роботов, основанная на технологии распределённых объектов[5]. RT-middleware поддерживает создание различных сетевых робототехнических систем на основе интеграции сетевых элементов — RT-компонентов. Спецификация RT-компонентов обсуждается и утверждается организацией Object Management Group (OMG)[6].

Urbi

Urbi — кроссплатформенная, открытая программная платформа на C++ для разработки приложений для робототехники и сложных систем. Базируется на компонентной архитектуре UObject с распределением компонентов на C++. Также включает язык оркестровки urbiscript — параллельный, событийно-ориентированный скриптовый язык. Компоненты UObject подключаются к urbiscript и воспринимаются как нативные объекты, которые можно программно связывать и обменивать данными. UObjects могут быть связаны с интерпретатором urbiscript либо запускаться автономно в «удалённом режиме» — в отдельных потоках, процессах или даже на других машинах локальной или удалённой сети.

MIRO

Miro — распределённый объектно-ориентированный каркас управления мобильными роботами, основанный на технологии CORBA (Common Object Request Broker Architecture). Ядро Miro создано с применением ACE (Adaptive Communications Environment) — объектно-ориентированной мультиплатформенной среды для независимой от ОС межпроцессной, сетевой и реального времени связи. Как ORB (Object Request Broker) используется TAO (The ACE ORB) — CORBA-реализация для применения в системах с высокими требованиями к производительности и времени отклика. Поддерживаемые платформы включают Pioneers, B21, отдельных роботов для робофутбола и различные датчики[7].

Orca

Orca декларирует свои цели следующим образом:

  • содействовать повторному использованию ПО путём определения набора типовых интерфейсов;
  • упрощать повторное использование через предоставление библиотек с удобным высокоуровневым API;
  • мотивировать повторное использование поддержкой репозитория компонентов.

Также отмечается: «Для успеха, по нашему мнению, такой инфраструктурный каркас должен быть: общим, гибким и расширяемым; достаточно устойчивым, производительным и функционально полным для коммерческого применения и при этом достаточно простым для университетских экспериментов»[8].

Ключевые подходы Orca:

  • использует компонентно-ориентированную методологию разработки ПО без дополнительных архитектурных ограничений;
  • базируется на коммерческой открытой библиотеке для коммуникации и определения интерфейсов;
  • предоставляет вспомогательные инструменты для разработки, но их использование не обязательно, чтобы сохранить полный доступ к коммуникационной подсистеме;
  • использует кроссплатформенные инструменты разработки[8].

ПО Orca распространяется под лицензиями LGPL и GPL.

OpenRDK

OpenRDK — открытый программный каркас для робототехники, поддерживающий разработку слабо связанных модулей. Обеспечивает прозрачное управление параллелизмом, межпроцессное общение (через сокеты), внутрипроцессное взаимодействие через общую память, а также проектирование системы на основе концепции чёрной доски (blackboard). Есть готовые модули для подключения к симуляторам и универсальным драйверам роботов.

Rock

Rock (Robot Construction Kit) — программный каркас для разработки робототехнических систем, построенный на компонентной модели Orocos RTT (Real Time Toolkit). Rock предоставляет инструменты для настройки и эксплуатации высокопроизводительных и надёжных робототехнических комплексов, предназначенных для самых разных задач в исследовании и промышленности. Включённая в дистрибутив коллекция компонентов и драйверов может дополняться новыми модулями.

ISAAC SDK / Simulation

ISAAC, набор инструментов NVIDIA Isaac Software Development Kit (SDK), предназначен для ускорения разработки и развёртывания роботов на базе искусственного интеллекта. SDK включает движок Isaac Robot Engine, наборы алгоритмов (распознавание и навигация), а также эталонные аппаратные реализации. Isaac Sim — это виртуальная лаборатория и высокоточный 3D-симулятор, ускоряющий исследования и разработку, снижая издержки и риски. Разработчики могут быстро обучать и тестировать роботов в сложных сценариях. Доступна открытая версия проекта на GitHub, поддерживаемое оборудование и BOM.

ROS

ROS (Robot Operating System)[9] — коллекция программных каркасов для разработки робототехнического ПО на гетерогенных вычислительных кластерах. ROS предоставляет стандартные службы операционной системы: аппаратную абстракцию, низкоуровневое управление устройствами, реализацию стандартных функций, межпроцессное взаимодействие, передачу сообщений между процессами и пакетное управление.

YARP

YARP — открытая программная платформа на C++ для межсвязи датчиков, процессоров и исполнительных устройств в роботах.

DDX

DDX (Dynamic Data eXchange) — промежуточное ПО под Linux, BSD и Unix, разработанное CSIRO для организации лёгкой и быстрой pub/sub-системы в распределённых контроллерах роботов. DDX позволяет группе программ обмениваться данными в реальном времени через механизм общей памяти, поддерживает объединение нескольких машин при помощи глобального сервиса имён, multicast-передачу данных[10]. DDX применено для автоматизации ряда крупных горных машин: экскаваторов-драглайнов, LHD-транспорта, обычных экскаваторов и разрушителей.

Примечания

  1. What is Middleware? (англ.). Middleware.org. Defining Technology (2008). Дата обращения: 17 июня 2024. Архивировано 29 июня 2012 года.
  2. 1 2 Tools, Standards, and Platforms for Commercial Robotics Development: An Adoption Profile (англ.). roboticsbusinessreview.com (октябрь 2009). Дата обращения: 17 июня 2024. Архивировано 16 января 2018 года.
  3. Gerkey, B., Vaughan, R., Howard, A. (2003) The Player/Stage Project: Tools for Multi-Robot and Distributed Sensor Systems. Proceedings of the International Conference on Advanced Robotics, 317—323.
  4. Collet, T. H. J., MacDonald, B. A., Gerkey, B. (2005) Player 2.0: Toward a practical robot programming framework. Proceedings of the Australasian Conference on Robotics and Automation (ACRA).
  5. Noriaki Ando, Takashi Suehiro, Kosei Kitagaki, Tetsuo Kotoku, Woo-Keun Yoon, «RT-Middleware: Distributed Component Middleware for RT (Robot Technology)», 2005 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS2005), стр. 3555-3560, август 2005, Эдмонтон, Канада.
  6. Robotics Technology Component Specification version 1.0, Object Management Group (OMG)
  7. Enderle, Stefan; Utz, Hans; Sablatnög, Stefan; Simon, Steffen; Kraetzschmar, Gerhard; Palm, Günther (2001). “Miro: Middleware for Autonomous Mobile Robots”. IFAC Proceedings Volumes [англ.]. 34 (9): 297—302. DOI:10.1016/S1474-6670(17)41721-6. Дата обращения 2024-06-17.
  8. 1 2 Orca Overview (англ.). Дата обращения: 17 июня 2024.
  9. ROS Core Components (англ.). ros.org. Дата обращения: 17 июня 2024. Архивировано 15 января 2018 года.
  10. Corke, Peter; Sikka, Pavan; Roberts, Jonathan; Duff, Elliot (2004). “DDX: A distributed software architecture for robotic systems”. Australasian Conference on Robotics and Automation 2004 [англ.]. Дата обращения 2024-06-17.

Литература

  • Elkady, Ayssam. Robotics Middleware: A Comprehensive Literature Survey and Attribute-Based Bibliography. Journal of Robotics. 2012, 2012: 1-15. doi:10.1155/2012/959013.
  • Noriaki Ando, Takashi Suehiro, Kosei Kitagaki, Tetsuo Kotoku, Woo-Keun Yoon. «RT-Middleware: Distributed Component Middleware for RT (Robot Technology)». In: 2005 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS2005). Edmonton, Canada, 2005. С. 3555-3560.
  • Enderle, S.; Utz, H.; Sablatnög, S.; Simon, S.; Kraetzschmar, G.; Palm, G. Miro: Middleware for Autonomous Mobile Robots. IFAC Proceedings Volumes. 2001, 34(9): 297—302. doi:10.1016/S1474-6670(17)41721-6.
  • Collet, T. H. J., MacDonald, B. A., Gerkey, B. Player 2.0: Toward a practical robot programming framework. Proceedings of the Australasian Conference on Robotics and Automation (ACRA).

Ссылки

  • BRICs: европейский проект по выработке лучших практик в робототехнике

Категории