AIで手の動きを実機のコントローラーにできる?
ControlAnythingは複合現実で新しいジェスチャーを頼むとコネクターを書きます。シンセサイザー、ジンバル、ヘッドセットでの一回の試験から、何がわかったのかを見ていきます。
シンセサイザーの上に手をかざし、指の高さでフィルターのカットオフを変えるようヘッドセットに頼む場面を考えてみましょう。どんな動作にしたいかはわかっています。難しいのは、手の動きと実物のつまみを結び付けることです。楽器はMIDIで動く一方、ヘッドセットに見えるのは机の上の箱だけです。
ControlAnythingはBektur Ryskeldievが2026年11月5日のプレプリントで発表した研究試作です。接続のための作業の一部を、利用者が指示を出した時点で行います。利用者はMeta Quest 3の視野から対象を選び、指示を出し、MacBook上のエージェントがコネクターを書くのを待ちます。戻ってくる操作部品は、仮想ウィジェット、手の動きを読むプログラム、またはその両方です。プロジェクトはコードとデモを公開しており、デスクトップ用のシミュレーションもあります。

著者Bektur RyskeldievによるQuest 3の録画。評価中に生成されたOP-1 Field用の操作部品が映っています。Telli.shが静止画のサイズを調整しました。 プレプリントと元のフレーム · プロジェクト動画のMITライセンス表記
ヘッドセットが特定の作業用に新しい操作を作れる点が、この試作の成果です。残る問いは、システムが実際に起きたことをどう知るかです。MIDIの受理応答、反応する生成つまみ、音が変わるシンセサイザーは、それぞれ別の証拠です。
機器を指し示して操作の依頼を始める
試作はWebXRクライアント、ノートパソコンのサーバー、コーディングエージェント、少数の機器接続方法を組み合わせています。SAM 3.1がヘッドセットの視野に入る物体の輪郭を示します。指でつまむ動作で物体にタグを付け、Muse Sparkで何の機器かを推定できます。プレプリントでは、その名前を仮説として扱い、MIDIポート名や機器の応答などと照合します。タグは装着者が対象を指すための手段です。ノートパソコンが操作できるのは、ポート、ブラウザーブリッジ、キーボード操作の実行機構があるからです。 ControlAnythingプレプリントの第3~4節
対象の選択から、目や耳で確かめられる結果まで。Telli.sh作成。
タグは荷物の札に似ています。何を動かしたいか示せますが、経路と送り先は別に確かめます。11月5日の試験はこの違いをよく示しています。すべての依頼先は、著者が以前に作ったMacBookのタグでした。目的がOP-1 FieldシンセサイザーやDJI Osmo Mobile 4ジンバルであれば、依頼文でその機器名を指定しました。この試験が示すのは、接続方法がわかっていた機器の操作です。未知のシンセサイザーやジンバルを視野から選ぶ手順は、次の実験に残されています。
最初のジェスチャーを使う前から、接続に役立つ情報もありました。プロジェクトはMIDI、Bluetooth、キー入力による操作経路を案内しています。エージェントの保持メモには、試験前からOP-1のポート名、フィルターのコントローラー番号、ジンバルを動かす方法が入っていました。カメラ画像でシンセサイザーらしいと判断できます。どの値をどこに送るか、どの範囲に収めるかをプログラムに伝えるのは、その事前情報です。
モデルは操作を一度作り、手のプログラムは繰り返し動く
試作は操作方法を作る重い工程と、それを繰り返し実行する工程を分けます。音声の指示を文字起こしし、エージェントがコネクターを書きます。サーバーはコネクターが動いているか、すべての操作部品が宣言済みのアクションに結び付いているかを確認します。手の動きを扱うプログラムは各フレームで関節から得られる信号を読み、値やイベントを出します。モデルが動くのは準備時です。手を動かす間はヘッドセットが生成されたプログラムを実行します。 プレプリントの実装説明
音やカメラの構図のような連続操作では、この違いが重要です。言語モデルが新しい値を毎回決めるなら、各フレームで時間のかかる判断が発生します。小さなプログラムなら、手の高さを値に対応させ、範囲を制限し、手を離すイベントに反応できます。動画を送るような操作では、はっきりしたジェスチャーを要求し、手が中立位置に戻るまで次の動作を受け付けないようにもできます。これらは実装方式で考えられる設計例です。試作の測定結果とは区別します。
プレプリントによると、準備完了に達した9件の中央値は32.5秒で、範囲は24.9~57.8秒でした。サーバーが依頼を処理し始めた時点からの時間で、音声の文字起こしは含みません。準備時間に占めるモデル呼び出しの割合は中央値89.9%です。手が動いてから機器が反応するまでの時間は、この試験では測っていません。 プレプリントの結果
これで柔軟性の代わりに払う時間が見えます。午後いっぱいかかるコネクターを置き換え、リハーサル中に何度も使うなら、30秒は許容できるかもしれません。既存のリモコンで5秒で済む作業なら割に合いにくくなります。有力なのは、一度だけ設定すれば、その操作を何度も使う価値がある仕事です。
次に改善できる箇所も見えてきます。似た水のシミュレーション操作を依頼した2件は、それぞれ新しいコネクターを作ったため、31.6秒と32.5秒かかりました。プロンプトキャッシュは試験の入力トークンの91.7%を処理しましたが、以前のコネクターをすぐに使える状態にはできませんでした。確認済みの割り当てを保存し、装着者が再利用のタイミングを選べれば、準備コストの別の部分を減らせます。再利用するコネクターには、試験時と同じ機器、アカウント、値域の前提が必要なので、版の管理も重要になります。
フィルター、ジンバル、ブラウザーでは成功の証拠が違う
11月5日の試験では、著者一人がヘッドセットを装着し、五つの対象に十件の依頼を行いました。九件が準備完了になり、残る一件は装着者が停止しました。技術的な探索試験です。依頼の言い方は自由で、前の目的を繰り返す例もあり、すでに機器情報を持つ構成でした。この件数はその試験で起きたことを表します。初めて使う人が未知の機器を接続できる確率は別の測定です。 プレプリントの表と手法
| 試験での例 | 生成された操作が行ったこと | 動作を確認する証拠 |
|---|---|---|
| OP-1 Fieldのフィルター | フィルターつまみの依頼に対し、MIDI経由の操作を二つ返した | 入力を固定して録音するか、人が聞いて確認した楽器出力の変化 |
| DJI Osmo Mobile 4 | 手のプログラムと四つの操作がBluetoothブリッジでジンバルに届いた | 所定の可動範囲内の動き、または検証した位置の読み取り値 |
| ChromeでのInstagram Reels | キー入力を模擬する手のプログラムと三つの操作を返した | 対象のタブや項目だけが変わり、ほかのウィンドウに影響がない |
通信経路の受理応答と、測定した結果は異なる問いに答えます。Telli.sh作成。
シンセサイザーでは、正しい形式のMIDIフィルターコマンドが届いても、選んだパッチの反応が異なったり、MIDI受信が無効だったりします。プレプリントには、メッセージが受理されても、受信を有効にするまで音が変わらなかった事例が載っています。同じログをもう一つ取るより、既知のテスト音を鳴らして変化を録音した方が確かです。
ジンバルにも同じことが当てはまります。ブリッジは試験中に、停止と解放を含む889件の回転関連の成功応答を記録しました。一定時間の操作で通信経路がコマンドを受け付けた証拠です。ログには信頼できる角度がありませんでした。次に試すなら、安全な目標角度を設定し、依頼した角度を動画や目印で比較します。そこで初めて動きが正確で、繰り返せて、意図した範囲内だったかがわかります。
キーボード操作では対象の識別が課題になります。OSレベルでキー入力に成功しても、別のウィンドウに送られることがあります。ブラウザーで試す場合は、アクティブなタブを確かめ、目的の内容が変わり、ほかのウィンドウがそのままであることを確認します。接続インターフェースが抽象化されるほど、どの状態を「完了」とするかの明確な定義が役立ちます。
ジェスチャーを任せる前に停止操作を確かめる
ControlAnythingの停止経路はモデルから独立しています。装着者は生成を中断でき、操作中に両手のひらを外へ向けるか、手首のメニューから停止できます。ホストはコネクターを終了し、ジンバルの停止やMIDI状態の解放など、中立状態に戻す操作を送れます。実装はヘッドセットの手のプログラムを制限付きワーカーで動かし、配備前に480フレームの合成入力で検査します。プログラムが出せるアクションと値の範囲も、宣言されたものに限ります。 プレプリントの安全性と停止
ノートパソコン側のコネクターは別の条件で動きます。プレプリントでは、ノートパソコンの利用者権限で動く通常のNodeプロセスで、試作では生成プロセスをサンドボックス化していないと説明しています。SDKは対応経路を通るコマンドを制限できますが、一般のコードを実行できるコネクターには、実行アカウントの権限が残ります。実運用の版では、OSでコネクター権限を管理し、依頼に必要な機器にアクセスを限定する必要があります。
動く装置が二つある設備を想像すると理由がわかります。操作画面に一台しか表示されないと安心に見えますが、コネクターがもう一台を見つけて操作できるかどうかが重要です。安全なデモは、試す対象だけに届く環境を使います。独立した方法で停止を確認し、装着者が退避できるようにし、手の追跡が外れたときや機器が切断されたときの挙動も示します。
生成コードが周囲の情報を読む場合も同じです。試作は、カメラ画像やツール応答に現れる文字をデータとして扱うようモデルに指示します。この指示は挙動を導きます。誤りがどこまで影響するかは、プロセス権限と利用可能な接続経路で決まります。試作を動かすなら、実機や利用中のアカウントをノートパソコンから扱えるようにする前に、両方を別々に確認します。
シミュレーターから始め、試験範囲を意図的に絞る
READMEにはNode 22.12以降とChromeを使うデスクトップシミュレーションが記載されています。プロジェクトによると、APIキーがない場合、サーバーは表示で区別できるフィクスチャーモードで、記録済みの応答を再生します。ヘッドセット、モデル呼び出し、実機を用意する前に、対象のタグ付けから操作つまみの生成までを見られます。試験の範囲も明確です。フィクスチャーは既知の画面遷移を示します。対象、ジェスチャー、モデルの応答を変えた時点から、実際の評価が始まります。 ControlAnythingのデモ手順
- リポジトリの手順を読み、使い捨ての環境でシミュレーションを実行します。シミュレーターとデスクトップ用のヘッドセットエミュレーターを開き、仮想シンセサイザーを動かす模擬ノートパソコンにタグを付けます。
- 用意されたつまみの依頼を選び、フィクスチャーの表示が出ることを確認します。選択した対象がどう表示され、いつ生成された操作が使えるようになるかを記録します。
- 仮想つまみを動かし、模擬対象の変化を確認し、案内されている停止を試します。画面で観察したこととコネクターログが示すことを分けて記録します。
- 将来実機で試すなら、元に戻せる操作を持つ低リスクの機器を選びます。コマンドを送る前に予想結果を書き、変化を独立に見たり聞いたりできる手段と、機器を止める手段を用意します。
ワークショップでは、実サービスを開いたりホストでキー入力を送ったりする機能より、仮想のビジュアルシンセから始めます。プロジェクトのREADMEも、Instagram Reelsの経路とシミュレーションを区別しています。知りたいのが操作の割り当てなら、対象を限定したローカル試験で見通しが良くなります。
実機へ進むときは、準備時間と操作の品質を別に測ります。準備完了までを計り、ジェスチャーから反応までの遅れ、手が追跡範囲を出たときのずれ、利用者が指示を変えたときの動きを見ます。より長い研究なら、この画面を初めて使う人が手助けなしで対象を選べるかどうかも含め、実用上の問いを調べられます。
使える操作には、作る手段と確かめる手段がある
ControlAnythingの大きな着想は、専用の画面を先に作らなくても、利用者が物理的な操作を言葉で指定できることです。評価は、既知の対象を一台のヘッドセットで操作する様子を示しています。繰り返し使うには、接続に成功しただけでは足りません。機器を特定し、自分の権限を制限し、装着者が実際の結果を確認できるようにする必要があります。
出典
試作時のメモと判断を後から探しやすくするには、Telli.shのアカウントを作成してください。