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

OpenNI

OpenNI (Open Natural Interaction) — это открытый программный фреймворк (программная платформа), предназначенный для разработки приложений, использующих естественное взаимодействие человека с компьютером, в первую очередь — на основе распознавания жестов, движений тела и голосовых команд. Фреймворк предоставлял унифицированный интерфейс (API) для работы с различными сенсорами глубины (3D-камерами), такими как Microsoft Kinect, Asus Xtion Pro и PrimeSense Carmine, позволяя разработчикам не зависеть от конкретного аппаратного обеспечения.

История

Проект OpenNI был основан в 2010 году компанией PrimeSense, израильским разработчиком технологии 3D-сенсоров, которая позже была приобретена корпорацией Apple Inc. (организация признана нежелательной в РФ). Основной целью создания OpenNI было ускорение внедрения технологий естественного взаимодействия в массовые продукты, особенно в игровую индустрию и робототехнику. Первая стабильная версия (OpenNI 1.0) была выпущена в конце 2010 года и быстро стала стандартом для разработки под контроллер Microsoft Kinect для Xbox 360.

В 2011 году была основана некоммерческая организация OpenNI Consortium, в которую вошли такие компании, как PrimeSense, Asus, Willow Garage, Side-Kick и другие. Консорциум занимался развитием и продвижением фреймворка, а также сертификацией совместимых устройств. Однако в 2013 году, после приобретения PrimeSense компанией Apple, развитие OpenNI было остановлено. Последняя версия (OpenNI 2.2) была выпущена в 2014 году, после чего проект перестал поддерживаться официально. Несмотря на это, сообщество разработчиков продолжает использовать и адаптировать код OpenNI для новых проектов, а также поддерживать форки (например, OpenNI2 для Linux и macOS).

Архитектура и принципы работы

OpenNI построен по модульной архитектуре, которая включает три основных уровня:

  1. Прикладной уровень (Application): конечные приложения, использующие API OpenNI для получения данных о сцене и взаимодействия с пользователем.
  2. Промежуточный уровень (Middleware): модули, которые обрабатывают сырые данные с сенсора (например, выделяют скелет человека, распознают жесты или отслеживают голос). OpenNI поддерживал подключаемые модули (plugins) от разных производителей, такие как NITE (от PrimeSense) для трекинга скелета.
  3. Аппаратный уровень (Hardware): драйверы и прошивки для конкретных 3D-сенсоров. OpenNI обеспечивал единый интерфейс для всех устройств, поддерживающих его протокол.

Основной принцип работы: 3D-сенсор (например, Kinect) с помощью инфракрасного проектора и камеры строит карту глубины — изображение, где каждому пикселю соответствует расстояние до объекта. OpenNI получает эту карту и передаёт её в промежуточное ПО (middleware), которое анализирует данные и выдаёт высокоуровневую информацию — например, координаты суставов скелета или распознанные жесты.

Возможности

OpenNI предоставлял разработчикам следующие ключевые возможности:

  • Получение карты глубины: доступ к сырым данным о расстояниях до объектов в сцене.
  • Трекинг скелета: определение и отслеживание положения суставов человека (голова, руки, ноги, торс) в реальном времени. Эта функция реализовывалась через middleware, например, NITE.
  • Распознавание жестов: обнаружение заранее заданных жестов (например, «взмах рукой», «нажатие»), что позволяло управлять интерфейсом без физического контакта.
  • Голосовое управление: интеграция с системами распознавания речи (например, через Microsoft Speech API) для команд.
  • Работа с несколькими сенсорами: поддержка одновременного подключения нескольких 3D-камер для создания более широкого поля обзора.
  • Кроссплатформенность: официальная поддержка Windows, Linux (Ubuntu) и macOS (до версии 2.2).

Применение

OpenNI нашёл применение в нескольких областях:

  • Игровая индустрия: наиболее известное использование — в играх для Xbox 360 с контроллером Kinect, где OpenNI служил основой для многих сторонних разработок и экспериментальных проектов. Однако официально Microsoft использовала собственный SDK (Kinect for Windows SDK), а OpenNI применялся в основном энтузиастами и в академических исследованиях.
  • Робототехника: фреймворк использовался для навигации роботов, распознавания препятствий и взаимодействия с людьми. Например, на базе OpenNI строились системы управления роботами-пылесосами и образовательными роботами.
  • Медицина и реабилитация: разработка приложений для физиотерапии, где отслеживание движений пациента помогало контролировать правильность выполнения упражнений.
  • Образование и искусство: создание интерактивных инсталляций, обучающих программ и виртуальных ассистентов.
  • Компьютерное зрение и исследования: OpenNI часто использовался как простой и доступный инструмент для получения 3D-данных в научных лабораториях.

Критика и ограничения

Несмотря на популярность, OpenNI имел ряд недостатков:

  • Зависимость от middleware: базовая функциональность (только карта глубины) была ограничена; для полноценного трекинга скелета требовалось проприетарное ПО NITE от PrimeSense, которое не было полностью открытым.
  • Прекращение поддержки: после покупки PrimeSense компанией Apple развитие OpenNI остановилось, что привело к несовместимости с новыми версиями операционных систем и сенсоров. Сообщество пыталось поддерживать проект, но официальных обновлений не было.
  • Ограниченная точность: для сложных сцен (например, при частичном перекрытии тела) трекинг скелета мог давать сбои.
  • Высокие требования к оборудованию: для работы в реальном времени требовался достаточно мощный компьютер, особенно при использовании нескольких сенсоров.

Наследие и альтернативы

OpenNI оказал значительное влияние на развитие технологий естественного взаимодействия. Он популяризировал 3D-сенсоры и показал, что распознавание жестов может быть доступно не только крупным корпорациям, но и независимым разработчикам. После прекращения поддержки OpenNI его место заняли другие фреймворки и библиотеки:

  • Microsoft Kinect for Windows SDK 2.0: проприетарный SDK от Microsoft, предоставлявший более точный трекинг скелета и голосовое управление, но только для Windows.
  • Intel RealSense SDK: фреймворк для работы с камерами Intel RealSense, поддерживающий распознавание лиц, жестов и глубины.
  • OpenCV: библиотека компьютерного зрения, которая включает модули для работы с 3D-данными, но не предоставляет готового трекинга скелета.
  • libfreenect: открытая библиотека для работы с Kinect, не требующая middleware, но дающая только сырые данные.
  • ROS (Robot Operating System): в среде робототехники пакеты для работы с 3D-сенсорами часто используют OpenNI или его форки.

Интересные факты

  • Название OpenNI расшифровывается как Open Natural Interaction.
  • Первый прототип Kinect для Xbox 360 использовал именно OpenNI в качестве базового драйвера, но позже Microsoft перешла на собственный SDK.
  • OpenNI был одним из первых проектов, который сделал 3D-сенсоры доступными для широкой аудитории разработчиков, что стимулировало появление множества хобби-проектов и стартапов в области распознавания жестов.
  • После закрытия проекта исходный код OpenNI был выложен на GitHub под лицензией Apache 2.0, что позволяет сообществу продолжать его развитие.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →