AI Tools8 мин чтения

Может ли ИИ превратить руку в контроллер для настоящего устройства?

ControlAnything пишет коннектор, когда вы просите добавить жест в смешанной реальности. Синтезатор, стабилизатор и один сеанс с гарнитурой показывают возможности прототипа.

K
Ken Jo

Представьте, что вы держите руку над синтезатором и просите гарнитуру связать высоту пальцев с частотой среза фильтра. Вы уже знаете, что должен делать жест. Сложнее связать движущуюся руку с реальной ручкой, особенно когда инструмент принимает MIDI, а гарнитура видит только коробку на столе.

Исследовательский прототип ControlAnything, описанный Бектуром Рыскельдиевым в препринте от 5 ноября 2026 года, переносит часть интеграции на момент запроса. Пользователь выбирает цель в поле зрения Meta Quest 3, даёт команду и ждёт, пока агент на MacBook напишет коннектор. Система может вернуть виртуальные элементы, программу, считывающую движение руки, или оба варианта. В проекте опубликованы код и демонстрации, включая настольный симулятор.

Созданные элементы управления синтезатором OP-1 Field в записи из гарнитуры ControlAnything

На записи автора Бектура Рыскельдиева с Quest 3 видны сгенерированные элементы управления OP-1 Field во время эксперимента. Telli.sh изменил размер кадра. Препринт и исходный кадр · Уведомление о лицензии MIT для видео проекта

Интересный результат в том, что гарнитура может создать новый контроллер для конкретной задачи. Открытый вопрос — как система узнаёт, что произошло на самом деле. Подтверждение MIDI, отзывчивая виртуальная ручка и изменившийся звук синтезатора дают три разных свидетельства.

Запрос начинается с указания на устройство

Прототип объединяет клиент WebXR, сервер на ноутбуке, агента для программирования и несколько способов связаться с устройствами. SAM 3.1 обводит возможные объекты в поле зрения гарнитуры. Жест щипка превращает объект в метку, а Muse Spark может предположить, что это за предмет. В препринте предложенное название считается гипотезой, которую можно сравнить с именем порта MIDI или ответом устройства. Метка позволяет пользователю назвать цель. Порт, мост к браузеру или механизм имитации клавиш позволяет ноутбуку выполнить действие. Препринт ControlAnything, разделы 3–4

Четыре этапа разделяют выбор цели, создание коннектора, отправку команды и наблюдение за эффектом

От выбранной цели к видимому или слышимому результату. Иллюстрация Telli.sh.

Метка похожа на бирку багажа. Она помогает назвать то, что нужно переместить, а маршрут и место назначения всё ещё нужно определить. Сеанс 5 ноября хорошо показывает это различие. Все запросы были адресованы метке MacBook, заранее созданной автором. Если целью был синтезатор OP-1 Field или стабилизатор DJI Osmo Mobile 4, автор указывал название в запросе. Сеанс показывает подключение к устройствам, с которыми конфигурация уже могла связаться. Выбор незнакомого синтезатора или стабилизатора остаётся отдельным экспериментом.

До первого жеста у системы уже имелись полезные сведения. В проекте описаны MIDI, Bluetooth и имитация нажатий клавиш. Агент заранее сохранил в заметках имя порта OP-1, номера контроллеров фильтра и инструкции по перемещению стабилизатора. Камера показывает, что предмет похож на синтезатор. Предварительные сведения говорят программе, какое значение отправить, куда его отправить и как удержать в нужном диапазоне.

Модель создаёт контроллер один раз, а программа жестов работает непрерывно

Прототип отделяет затратную генерацию интерфейса от многократного выполнения. Устный запрос расшифровывается, агент пишет коннектор, а сервер проверяет, что он запущен и каждый возвращённый элемент связан с объявленным действием. Программа в каждом кадре читает сигналы, рассчитанные по суставам руки, и выдаёт значения или события. Модель работает при настройке. Пока пользователь двигается, гарнитура выполняет полученную программу. Реализация в препринте

Это важно для непрерывного управления звуком или кадрированием камеры. Если бы языковая модель определяла каждое новое значение, каждый кадр требовал бы отдельного медленного решения. Небольшая программа может связать высоту руки с параметром, удерживать его в диапазоне и обрабатывать отпускание. Для команды вроде переключения видео она может потребовать осознанный жест и снова включиться только после возвращения руки в нейтральное положение. Это примеры возможных схем управления. Результаты измерения прототипа относятся к другим задачам.

В препринте указана медиана настройки 32,5 секунды по девяти запросам, которые дошли до готовности. Диапазон — от 24,9 до 57,8 секунды. Отсчёт начинается с обработки запроса сервером и исключает расшифровку речи. На вызовы модели приходилось 89,9% времени настройки по медиане. Автор также указывает, что время от движения руки до реакции устройства не измерялось. Результаты препринта

Так становится понятна цена гибкости. Полминуты может быть приемлемо, если это заменяет коннектор, который иначе пришлось бы писать полдня и затем использовать всю репетицию. Труднее оправдать ожидание для задачи, которую существующий пульт выполняет за пять секунд. Наиболее перспективен сценарий, в котором управление нужно многократно, хотя настраивается один раз.

Из результатов вытекает следующий шаг. Два похожих запроса для симуляции воды заняли 31,6 и 32,5 секунды, потому что оба создали новый коннектор. Кэш промптов обслужил 91,7% входных токенов сеанса, однако прежний коннектор не стал готовым к повторному использованию контроллером. Если сохранять проверенные привязки и давать пользователю самому включать их снова, можно сократить другую часть настройки. Понадобится и учёт версий, поскольку повторно используемый коннектор опирается на проверенные предположения об устройстве, аккаунте и диапазоне.

Для фильтра, стабилизатора и браузера нужны разные подтверждения

В сеансе 5 ноября участвовал один пользователь — автор. Он сделал десять запросов для пяти целей. Девять дошли до состояния готовности, а оставшийся запуск остановил пользователь. Это был технический поисковый эксперимент. Запросы формулировались свободно, часть повторяла прежние цели, а настройка уже содержала сведения об устройствах. Число описывает конкретный сеанс. Вероятность того, что новый пользователь подключит неизвестное устройство, нужно измерять отдельно. Таблица и методика препринта

Пример сеансаЧто создал контроллерКак подтвердить результат
Фильтр OP-1 FieldЗапрос ручек фильтра вернул два элемента управления через MIDIИзменение звука инструмента, записанное с контрольным входом или услышанное человеком
DJI Osmo Mobile 4Программа жестов и четыре элемента связались со стабилизатором через Bluetooth-мостНаблюдаемое движение или проверенное положение внутри заданного диапазона
Instagram Reels в ChromeЗапрос жеста вернул программу и три элемента с имитацией клавишНужная вкладка или элемент меняется, остальные окна остаются без изменений

Система может зарегистрировать принятую команду, а физическую реакцию нужно наблюдать отдельно

Подтверждение передачи команды и измерение эффекта отвечают на разные вопросы. Иллюстрация Telli.sh.

Возьмём синтезатор. По MIDI можно отправить правильно составленную команду фильтра, пока на инструменте выбран тембр с другой реакцией или отключён приём MIDI. В препринте описан более ранний случай, когда сообщения подтверждались, а звук не менялся до включения приёма. Слышимое изменение, записанное на известной тестовой ноте, сказало бы больше, чем ещё одна копия записи в журнале.

Стабилизатор показывает то же самое с другой стороны. Мост зарегистрировал 889 успешных ответов на команды вращения, включая остановку и отпускание. Это свидетельствует, что канал принимал команды на протяжении взаимодействия. Надёжного значения угла в журнале не было. В следующем тесте можно задать безопасную цель и сравнить запрошенный угол с видео или отметкой. Тогда станет ясно, было ли движение точным, повторяемым и ограниченным как задумано.

Клавиатура добавляет проблему идентификации. Нажатие может пройти на уровне операционной системы, но попасть не в то окно. При проверке в браузере нужно сверить активную вкладку, увидеть изменение нужного содержимого и убедиться, что другие окна не затронуты. Чем абстрактнее интерфейс коннектора, тем полезнее чёткое определение успешного завершения.

Остановка должна работать до того, как жесту можно доверить устройство

Остановка в ControlAnything не зависит от модели. Пользователь может прекратить генерацию, выставить обе ладони во время использования или нажать кнопку в меню на запястье. Хост может отключить коннектор и отправить нейтральные команды, например остановить стабилизатор или сбросить состояние MIDI. Программа жестов выполняется в ограниченном рабочем процессе гарнитуры. Перед запуском её проверяют на 480 синтетических кадрах. Реализация ограничивает допустимые действия и диапазоны значений. Безопасность и остановка в препринте

Коннектор ноутбука работает иначе. Препринт описывает обычный процесс Node с правами пользователя ноутбука. Этот сгенерированный процесс прототип не изолирует. SDK может ограничивать команды поддерживаемого интерфейса, а коннектор с произвольным кодом сохраняет полномочия учётной записи. Для надёжной рабочей версии права коннектора потребовалось бы ограничить на уровне операционной системы и дать ему доступ только к нужным устройствам.

Представьте установку с двумя движущимися объектами. Контроллер, на котором подписан один объект, может выглядеть безопасным. Важно, может ли коннектор обнаружить другой и управлять им. Безопасная демонстрация использует схему, где доступна лишь тестируемая цель. Она отдельно проверяет остановку, позволяет оператору отойти и показывает поведение при потере отслеживания или отключении устройства.

То же различие относится к сгенерированному коду, который читает окружение. Прототип просит модель воспринимать текст из кадров камеры и ответов инструментов как данные. Эта инструкция направляет поведение. Права процесса и доступные каналы определяют последствия ошибки. До подключения ноутбука к реальным устройствам или действующим аккаунтам оба вопроса стоит проверить отдельно.

Начните с симуляции и ограничьте эксперимент

В README проекта описана настольная симуляция с Node 22.12 или новее и Chrome. По словам разработчика, без ключа API сервер воспроизводит записанные ответы в явно отмеченном режиме. Так можно пройти путь от метки цели до созданных ручек без гарнитуры, вызовов модели и физического оборудования. Граница эксперимента остаётся ясной. Записанный пример демонстрирует известный путь через интерфейс. Проверка вживую начинается, когда меняется цель, жест или ответ модели. Инструкции к демонстрации ControlAnything

  1. Прочитайте инструкции репозитория и запустите симуляцию в одноразовой среде. Откройте симулятор и настольный эмулятор гарнитуры, затем пометьте симулированный ноутбук с виртуальным синтезатором.
  2. Выберите предложенный запрос на создание ручек и убедитесь, что виден индикатор режима воспроизведения. Посмотрите, как интерфейс показывает выбранную цель и когда появляются созданные элементы.
  3. Поверните виртуальную ручку, проверьте эффект на симулированной цели и испробуйте описанную остановку. Различайте наблюдения в интерфейсе и записи коннектора.
  4. Для будущей физической демонстрации выберите устройство с небольшим риском и обратимым управлением. До отправки команды запишите ожидаемый эффект. Предусмотрите независимый способ увидеть или услышать результат и остановить устройство.

Для занятия начните с виртуального визуального синтезатора, избегая сценария, который открывает настоящий сервис или имитирует клавиши на компьютере. В README путь с Instagram Reels явно отделён от симуляции. Если вы изучаете привязку жестов, ограниченная локальная цель даёт более чистый эксперимент.

На реальном оборудовании измеряйте отдельно время настройки и качество управления. Засекайте время до готовности. Наблюдайте задержку между жестом и эффектом, уход параметра при выходе руки из области отслеживания и поведение при отмене действия. На эти вопросы может ответить более длинное исследование. Оно также может проверить, выберет ли нужную цель человек, впервые увидевший интерфейс.

Полезный контроллер можно создать и проверить

Главная идея ControlAnything — дать человеку описать физическое действие без заранее подготовленного интерфейса. Эксперимент показывает, как это работает на известных целях и одной гарнитуре. Для повторного использования контроллеру недостаточно установить соединение. Он должен однозначно определить устройство, ограничить свои полномочия и показать эффект так, чтобы человек мог доверять тому, что произошло.

Источники


Чтобы позже легко найти заметки и решения по испытанию прототипа, создайте аккаунт Telli.sh.


← Вернуться в блог