NAOqi API
NAOqi API — это программный интерфейс приложения (API), предназначенный для управления роботами семейства NAO, а также Pepper и Romeo, разработанными французской компанией Aldebaran Robotics (ныне подразделение SoftBank Robotics). NAOqi API предоставляет набор библиотек и инструментов для разработки приложений, взаимодействия с аппаратными компонентами робота (двигатели, сенсоры, камеры, микрофоны) и реализации алгоритмов автономного поведения, включая распознавание речи, навигацию и социальное взаимодействие.
История
Разработка NAOqi API началась в середине 2000-х годов в рамках проекта по созданию гуманоидного робота NAO, который изначально предназначался для образовательных и исследовательских целей. Первая версия API была выпущена вместе с роботом NAO в 2008 году. Ключевой задачей при создании NAOqi было обеспечение модульности и кроссплатформенности, чтобы разработчики могли писать программы на C++ и Python, а также использовать визуальную среду программирования Choregraphe.
В 2014 году, с выходом робота Pepper, NAOqi API был расширен для поддержки новых функций, таких как работа с сенсорным экраном, улучшенное распознавание эмоций и навигация в людных пространствах. В 2018 году SoftBank Robotics объявила о прекращении поддержки NAOqi 1.x и переходе на NAOqi 2.x, которая стала основной платформой для всех последующих моделей. В 2020-х годах, с появлением робота Romeo, API продолжал эволюционировать, но в 2023 году SoftBank Robotics объявила о сворачивании разработки новых версий NAOqi, сосредоточившись на облачных решениях.
Архитектура
NAOqi API построен на клиент-серверной архитектуре, где основным процессом является NAOqi broker (брокер). Брокер выполняет роль диспетчера, управляющего запуском, остановкой и взаимодействием модулей (называемых «сервисами»). Каждый модуль реализует определённую функциональность: движение, речь, зрение, сенсоры и т.д.
Основные компоненты
- NAOqi broker — центральный процесс, который запускается на бортовом компьютере робота. Он регистрирует все сервисы и обрабатывает запросы от внешних приложений.
- Сервисы (modules) — динамические библиотеки (DLL/SO) или скрипты, которые реализуют конкретные функции. Например, сервис
ALMotionуправляет двигателями,ALTextToSpeech— синтезом речи,ALMemory— общим хранилищем данных. - Прокси-объекты — клиентские интерфейсы, которые позволяют удалённо вызывать методы сервисов. Прокси создаются на стороне приложения (C++, Python, Java, .NET) и подключаются к брокеру по протоколам TCP/IP или HTTP.
Протоколы взаимодействия
NAOqi API поддерживает несколько протоколов для связи между модулями и внешними приложениями:
- NAOqi Protocol (NQI) — бинарный протокол, оптимизированный для низкой задержки. Используется по умолчанию для внутренних вызовов.
- SOAP (Simple Object Access Protocol) — протокол на основе XML, позволяющий вызывать методы через HTTP. Поддерживается для совместимости с веб-сервисами.
- REST API — в версиях NAOqi 2.x добавлена поддержка RESTful интерфейсов для упрощения интеграции с современными веб-приложениями.
Основные сервисы
NAOqi API включает десятки сервисов, которые можно разделить на несколько функциональных групп:
Движение и манипуляция
- ALMotion — управление всеми суставами робота (25 степеней свободы у NAO, 20 у Pepper). Поддерживает позиционирование, ходьбу, жесты, а также управление захватами (руки).
- ALRobotPosture — управление позами робота (сидение, стояние, лёжа). Позволяет задавать предустановленные позы или вычислять их динамически.
- ALNavigation — навигация в пространстве с использованием карт, одометрии и лазерных дальномеров (у Pepper).
Восприятие
- ALVideoDevice — доступ к камерам (2 камеры у NAO, 3 у Pepper). Поддерживает захват изображений, распознавание лиц, объектов и QR-кодов.
- ALAudioDevice — управление микрофонами (4 у NAO, 4 у Pepper). Позволяет записывать звук, определять направление источника звука и выполнять базовую обработку аудио.
- ALSonar — работа с ультразвуковыми датчиками для обнаружения препятствий (только у NAO).
- ALTouch — обработка данных с тактильных датчиков на голове, руках и ногах.
Коммуникация и взаимодействие
- ALTextToSpeech — синтез речи на нескольких языках, включая русский. Поддерживает настройку голоса, скорости и интонации.
- ALSpeechRecognition — распознавание речи с использованием предустановленных словарей. В версии 2.x добавлена поддержка облачных сервисов распознавания.
- ALDialog — диалоговая система, позволяющая создавать сценарии общения на основе правил (AIML-подобные шаблоны).
- ALAutonomousLife — управление автономным поведением: робот может сам решать, когда включать/выключать движения, речь и реакции на внешние стимулы.
Состояние и память
- ALMemory — общее хранилище данных, доступное всем сервисам. Используется для обмена событиями, хранения конфигураций и результатов сенсоров.
- ALPreferences — управление настройками робота, включая калибровку, параметры сети и пользовательские профили.
Программирование
Разработка приложений для NAOqi API ведётся на нескольких языках и в нескольких средах:
Языки программирования
- C++ — основной язык для написания модулей. Требует компиляции под целевую архитектуру (x86 или ARM).
- Python — наиболее популярный язык для быстрого прототипирования. Поддерживается как на борту робота, так и на внешних компьютерах.
- Java — поддерживается через JNI (Java Native Interface) для Android-приложений.
- .NET (C#) — поддерживается через прокси-библиотеки для Windows-приложений.
Среда разработки Choregraphe
Choregraphe — это визуальная среда разработки, входящая в состав SDK. Она позволяет создавать программы путём перетаскивания блоков (боксов), каждый из которых соответствует вызову метода NAOqi API. Блоки могут быть объединены в последовательности, циклы и условия. Choregraphe также включает симулятор робота, что позволяет отлаживать код без физического устройства.
Примеры использования
- Управление движением: вызов
ALMotion.walkTo(0.5, 0.0, 0.0)заставляет робота пройти 0,5 метра вперёд. - Распознавание лиц:
ALFaceDetection.subscribe("Test")запускает детектор лиц, результаты которого передаются через события. - Синтез речи:
ALTextToSpeech.say("Привет, мир!")воспроизводит фразу через динамики робота.
Применение
NAOqi API используется в нескольких ключевых областях:
- Образование — роботы NAO и Pepper применяются для обучения программированию, робототехнике и иностранным языкам. API позволяет студентам писать простые программы на Python, управляющие движениями и речью.
- Исследования — в университетах и лабораториях NAOqi API используется для экспериментов в области искусственного интеллекта, компьютерного зрения, обработки естественного языка и социальной робототехники.
- Коммерция — робот Pepper часто используется в розничных магазинах, банках и выставочных центрах для привлечения клиентов. API позволяет настраивать сценарии взаимодействия, например, консультации по товарам или проведение опросов.
- Медицина — роботы NAO применяются в терапии детей с расстройствами аутистического спектра, где API используется для создания повторяющихся социальных сценариев.
Критика и ограничения
Несмотря на широкую распространённость, NAOqi API имеет ряд недостатков, отмеченных разработчиками:
- Закрытость исходного кода — брокер и многие сервисы распространяются в бинарном виде, что ограничивает возможности глубокой модификации и отладки.
- Зависимость от версий — API не является полностью обратно совместимым. Переход с NAOqi 1.x на 2.x потребовал переписывания многих приложений.
- Производительность — на старых моделях NAO (с процессором Intel Atom) выполнение сложных сценариев (например, одновременное распознавание речи и лиц) может приводить к задержкам.
- Документация — в ранних версиях документация была неполной, а примеры на C++ часто отсутствовали. В версии 2.x ситуация улучшилась, но остаются пробелы в описании некоторых сервисов.
Интересные факты
- NAOqi API поддерживает до 100 одновременных подключений от внешних приложений, что позволяет организовывать распределённые системы управления.
- В 2015 году робот NAO с использованием NAOqi API участвовал в эксперименте по обучению детей с аутизмом, где API обеспечивал точное воспроизведение жестов и мимики.
- Название «NAOqi» происходит от японского слова «наоки» (直樹), означающего «прямое дерево» или «честность», что отражает стремление к прямолинейному и прозрачному взаимодействию.
Источники
- Aldebaran Robotics. «NAOqi API Documentation» (версии 1.14 и 2.1).
- SoftBank Robotics. «Developer Guide for NAO and Pepper».
- Pot, E. et al. «A Review of the NAOqi Framework for Humanoid Robotics». Journal of Robotics, 2018.
- Международные конференции по робототехнике (ICRA, IROS) — доклады о применении NAOqi API.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →