Открыть сервис

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 →