1年前のAPI再設計以来、最大規模のリリースとなります。バージョン3.5.0では、統一された3D数学レイヤー、Minverseの完全サポート、型付きイベントストリーム、包括的な設定API、そしてより洗練されたHTTPインターフェースが導入されました。さらに、この1年間にわたるバグ修正や利便性向上の改善も盛り込まれています。
見どころ
統一された3D数学レイヤー— デバイス基準(フレーム)、マウント変換、ワークスペース変換、ナビゲーション変換のための第一級プリミティブを備えた、組み合わせ可能な変換パイプライン。さらに、ローカル空間、セッション空間、アプリケーション空間、内部空間間の明示的な変換機能も備えています。Bubble Navigation— 形状ゾーン(SDFプリミティブ)を通じて大規模な仮想ワークスペース内を移動するシステムです。速度マッピングによる速度制御、ヒステリシスを考慮した衝突検出、およびオプションの「カーソルへのドリフト」機能を備えています。HTTPおよびWebSocket経由で、アプリとワークスペース間の往復通信を通じて完全に設定可能です。タイプ付きイベントストリーム— デバイスのライフサイクル、安全アラート、キャリブレーション、バッテリー、制御レートに関する警告、および非推奨の通知専用のWebSocketイベントチャネル。Settings API— HTTP CRUD、型ヒント、範囲制約、説明機能を備えた完全なキーバリュー型設定システムであり、従来のネストされた設定ファイルに代わるものです。一貫したデバイス設定 — デバイスごとに1セットのHTTPルート: 基準, マウント, プリセット, 変える, フィルター, 利き手, トルク・スケーリング, 重力補正, ホームに戻る.Minverseとペンの同期キャリブレーション— デバイスとペンが同時にキャリブレーションされるようになりました。グリップが物理的に装着されるまで、キャリブレーション設定は固定されたままになります。QoS HTTP — インデックスベースのデバイスセレクタ(インデックスでデバイスを指定するため、IDは不要)、WebSocketと共通の統一されたリクエスト/レスポンス形式、オプトイン {OK、エラー、データ} 封筒 (?format=json)、およびワイルドカード・セッション・セレクタ。新機能
デバイス
Minverse— 本リリースで公式サポートが提供されました:検出、準備シーケンス、安全通知、および同期化されたキャリブレーションワークフロー。「Ruko」と「Kingfisher」が公式グリップ製品として認定されました。デバイス・シミュレータのサポート— 実際のハードウェアと並行して、ソフトウェアでシミュレートされたデバイスを検出し、通信を行う。接続ループ保護 — 不正な動作をするポートは自動的にブロックされます。リセットするには POST /ports/{port}/reset.ペンの装着状態の検出— デバウンス処理を施した、確実なグリップの装着・取り外し検出。セッション、コマンド、およびWebSocket
セッションプロファイルのフィルタリングと永続化— セッションはプロファイル名と必要なSDKバージョンを宣言し、サービスは再接続時にもその情報を保持します。クライアントや監視ツールは、そのプロファイルに基づいてセッションをフィルタリングしたり、対象を絞り込んだりすることができます。セッションごとのコマンドバッファ— 1つのセッションの処理が遅くても、他のセッションの処理が滞ることはなくなりました。ワンショットコマンド用の明示的な `configure` マップ — 基準, プリセット, マウント, force_gate, 減衰 1台あたり、さらに プロフィール そして 基準 1回あたり、現在はすべて 設定する — 出力設定マップと整合しているため、送信した内容と読み取った内容が一致します。カスタマイズ可能なデバイス用マウント — 組み込みのワークスペースプリセットを選択する (デフォルト, 腕(前面), 腕の正面中央, フロントLED, led_front_centered) または明示的な変換を送信する;手動でのマウント変更により、プリセットは自動的に カスタム.名前付きコマンドフィールド — 位置, ベクトル, 角度, トルク 汎用的なものを置き換える 価値観 配列。角トルクを設定する 置き換える set_angular_torque (単数形は非推奨)。セッションフレームの拡張 — v3.0 および v3.1 のセッションフレームは、拡張可能な 設定, 状態そして ステータス オブジェクト;新しい出力フィールドには以下が含まれます current_cursor_force, 現在のカーソル位置, 現在の角トルク, 現在の角度位置, 制御ドメイン, 制御モード, 変える, 変形速度、より豊かな config.*そして ステータス・安全 (デフォルトでは非表示)。部分的な変換の更新 — 変更したいサブフィールドのみを送信してください(位置, 回転, スケール) マウント、ワークスペース変換、およびナビゲーション形状について。HTTP
GET / — サービス版。GET/POST/DELETE /settings そして /settings/* — 完全なキーバリュー設定API。GET /sessions/{session} そして GET/POST/DELETE /sessions/{session}/profile.GET /devices?session=<selector> — デバイスの座標を、指定されたセッションのアプリケーション空間に変換する。インデックスベースのデバイスセレクタ — デバイスIDを知らなくても、インデックスで任意のデバイスを指定できます(/inverse3/0/... 最初のInverse3について; inverse... (すべてのInverseInverseデバイスについて)。統一されたリクエスト/レスポンスの形式 — POST/GETのボディは同じものを使用します command_data JSONはWebSocketとして機能します。一方のトランスポート向けに書かれたコードは、もう一方でも動作します。事前登録用封筒 経由 ?format=json どのルートでも; /設定* そして GET /home_return デフォルトで {OK、エラー、データ}. 使用する ?format=plain 元の形状について。セッションセレクタのワイルドカード — * (任意のシーケンス)および ? プロフィール名に(1文字)が含まれている。パーセント記法によるセレクタ — %2A, %3A、など、ルーティングの前にデコードされます。イベント
専用のWebSocketイベントストリームを有効にする コミュニケーション/イベント/ポート.デバイスのライフサイクル、安全性(電子ブレーキ、異物検知、ストール)、キャリブレーションの失敗、バッテリーアラート、セッション警告、制御レートの低下/臨界状態、入力検証、および非推奨のヒントなど、24種類のイベントカテゴリ。可観測性
プロファイリング時に、レベルに応じた色分けが施されたログメッセージがTracyに転送されます。TracyはすべてのHTTPハンドラーで動作します。メインループのタイミング統計イベント。ログディレクトリとサーバーのホスト名を設定可能(Docker対応)。バージョン3.6で登場
SDF Haptic Effects (SDF HFX)— 基盤となる機能はバージョン3.5で実装されました(モジュール、ライフサイクル、モジュール提供のコマンド/状態のシリアライズ)。公開APIは、完全なドキュメントと共にバージョン3.6で提供される予定です。改善点
フィルタ処理されたフォース振動— 軸ごとの振動検出、8段階の段階的回復、ヒステリシスを伴うエントリー投票、および非対称なリリースwindows。実行時フォースゲートフィルタ — 設定可能 configure.force_gate.gain WebSocket または HTTP 経由で、永続的な接続をデフォルトとして使用します。高精度用途向けに、メインループの最大周波数を32 kHzに引き上げました。WebSocketのペイロードを小さくする — identity-default 変換のサブフィールド (位置 = 0, rotation = 単位行列, スケール = 1) はデフォルトでは出力から除外され、これによりペイロードサイズが削減され、旧バージョンのUnityパッケージにおける4KBのメッセージ制限との互換性が回復されます。2つの詳細設定(シリアライズ/明示的なフィールド, シリアライズ/変換の強制完了) 必要なユーザー向けに、すべてのフィールドを復元します。メインループのジッターを低減— WebSocketメッセージの処理において、JSONの解析やネットワーク送信中にメインループのティックがブロックされることがなくなりました。また、セッションティックのスケジューリングが、レスポンスのシリアライズ処理の前に移動されました。サーバーはデフォルトでlocalhostのみに対応しています — ネットワークアクセスを有効にするには、 通信/すべてのインターフェースをバインド 設定。デバイスセレクタのワイルドカードは接頭辞構文を使用します (例: inverse (Inverseすべてのデバイスに一致します)。減衰指令 ~に引っ越した 設定する 横に並べて表示 force_gate.ローテーションファイルロガーは、設定可能なディレクトリを使用して、以前のものを置き換えます。モジュールが提供するコマンドと状態— モジュールは、コアスキーマを変更することなく、独自のコマンド、設定フィールド、および状態出力をWebSocketフレームに挿入することができます。修正点
1年間のバグ修正。特に影響の大きかったものは以下の通りです。
特定の条件下で、セッション速度が不安定になる。シミュレーションが実行されていないとき、GripHook(Verse Grip Stopper)が正常に解除されませんでした。Inverse3のタイムアウト設定が厳しすぎたため、起動に時間がかかるデバイスで接続切断のループが発生していました。 Windowsでの不完全なサービス停止— シャットダウン時に HTTP サーバーが必ずしも正常にクリーンアップされなかった。サービスが古いファームウェアバージョンに対して未対応のコマンドを送信した際の再接続ループ。Bluetoothデバイスの列挙により、Bluetoothアダプタを搭載したシステムのログが溢れかえった。サービスを連続して再起動するとクラッシュする。Ubuntu搭載のノートパソコンで、スリープから復帰した後にWireless Verse Gripのドングルがフリーズする。Linux および macOS におけるWireless Verse Grip のハンドシェイク処理において、最初の検出試行が失敗した場合、正しくフォールバックするようになりました。MacOSの設定ファイルの保存場所 — 設定は現在、 ~/Library/Application Support/ 間違った道ではなく。Linux および macOS における SIGSEGV シグナルの処理— マルチスレッド・クラッシュ・キャプチャが有効になっている場合、致命的なシグナルが発生してもプロセスがループしなくなりました。セッション間のコマンド上書き— あるセッションの設定コマンドが、別のセッションのコマンドによって黙って上書きされることがありましたが、これらは現在、フィルタリングされ、正しく統合されるようになりました。プローブコマンドが設定を上書きする — モニタリングセッション(例:Haply )の送信 プローブの位置 保留中のベース/プリセット/プロファイルの変更を、黙って上書きしなくなりました。プロトタイプのグリップ表示— プロトタイプのハードウェアが、カスタムグリップではなく標準グリップとして誤って表示されていました。移行していないクライアントに対しては、従来の `set_basis` 行列の規約が再び適用されるようになりました。セッションの切断時に発生するInverse3のフォースキックにより、残留フォースの急上昇が生じなくなりました。高速な接続・切断の繰り返し中に、WebSocket接続が切断される競合が発生しました。WebSocketの`session_id` 『~』として連載された 0 一部の発信ペイロードにおいて。Windowsでは、 --ログレベル と組み合わせると、現在ではこれが考慮される --dev (以前は自動的にリセットされ、 デバッグ).非推奨
現在も機能していますが、今後のメジャーバージョンアップで削除される予定です。応答には以下のものが含まれます。 非推奨警告 該当する場合は、その欄に記入してください。
| 非推奨 | 代替 |
|---|---|
| POST /force_scale | POSTinverse |
| 投稿 /重力補正 | POST /{device}/{id}/config/gravity_compensation |
| 投稿 /torque_scaling | POST /{device}/{id}/config/torque_scaling |
| 投稿 /デバイスの利き手 | POST /{device}/{id}/config/handedness |
| POST /serial_enable | POST /settings/communication/serial/enabled |
| POST /experimental/features/グリップ脱落シミュレーションストッパー | Settings API |
| POST /experimental/features/screensaver_enable | Settings API |
| WebSocket command_data.values | 位置, ベクトル, 角度, トルク |
| WebSocket set_angular_torque | 角トルクを設定する |
| WebSocket カーソルの位置を取得 | プローブの位置 |
| WebSocket 座標原点を設定する | configure.preset |
| WebSocket セッションレベル 基底を設定する | configure.basis |
互換性に関する注意事項
3.4.19 との互換性を損なう重大な変更はありません。既存の統合機能に関して、以下の2点にご注意ください:
非推奨となったHTTPエンドポイントには、現在 非推奨警告 レスポンス内のフィールド — レスポンススキーマを厳密に検証するクライアントは、この追加フィールドを許可する必要があります。について 価値観 WebSocketのフィールド command_data 非推奨ですが、依然として解析されます。名前付きフィールドの使用を推奨します。チュートリアルとドキュメント
新しいチュートリアル:05 位置制御、06 複合(Inverse3 + Verse Grip)、07 ベースとマウント、08 HTTP リモートコンフィギュレーター、09 WebSocket リモートコントロール、10 イベントストリームリスナー。新しいグレイズのバリエーション あらゆるC++チュートリアルの(cpp-glz/) 既存の nlohmann/json バリアントと並行して。すべてのチュートリアルを書き直しました v3.1 API用(ポート10001、 configure.preset、名前付きコマンドフィールド、 print_state() (ヘルパー)。旧バージョンの「Verse Grip Stopper」チュートリアルを削除しました。代わりに新しい「Combined」チュートリアルを掲載しています。SDKガイド、APIリファレンス、およびハードウェアページ全体の公開ドキュメントを更新しました。