1年前にAPIを刷新して以来、最大規模のリリースとなります。バージョン3.5.0では、統一された3D数学レイヤー、Minverseの完全なサポート、型付きイベントストリーム、包括的なパラメータAPI、そしてより洗練されたHTTPインターフェースが導入されています。さらに、この1年間にわたるバグ修正や使いやすさの向上も盛り込まれています。
主なポイント
統一された3D数学レイヤー— フレーム、編集変換、ワークスペース変換、ナビゲーション変換のための第一級プリミティブを備えた、組み合わせ可能な変換パイプライン。また、ローカル空間、セッション空間、アプリケーション空間、内部空間間の明示的な変換機能も備えています。バブルナビゲーション— 特定の形状を持つ領域(SDFプリミティブ)を通じて、広大な仮想ワークスペース内を移動します。速度に比例した移動速度制御、ヒステリシスを考慮した衝突検出、およびカーソルへの任意のドリフト機能を備えています。HTTPおよびWebSocketを介して完全に設定可能で、アプリケーション空間内での双方向通信に対応しています。型付きイベントストリーム— デバイスのライフサイクル、セキュリティアラート、キャリブレーション、バッテリー、検査頻度の通知、および非推奨通知に特化したWebSocketイベントチャネル。パラメータAPI— HTTP CRUD操作、型指定、範囲制約、説明を備えた包括的なキーバリュー型パラメータシステムであり、従来のネストされた設定ファイルに代わるものです。デバイスの一貫性のある設定 — 各デバイスごとに1つのHTTPルートセット: 基準, マウント, プリセット, 変える, フィルター, 利き手, トルク・スケーリング, 重力補正, ホームに戻る.Minverseとスタイラスの同期キャリブレーション— 本体とスタイラスが同時にキャリブレーションされるようになりました。ハンドルが物理的に取り付けられていない限り、キャリブレーションはロックされたままとなります。HTTPのユーザビリティ向上 — インデックスによるデバイス選択(IDを指定せずにインデックスでデバイスを指定可能)、WebSocketと共通の統一されたリクエストおよびレスポンス構造、エンベロープ {OK、エラー、データ} 有効にする (?format=json) およびジェネリック型のセッションセレクタ。新機能
機器
Minverse— 本バージョンでは、検出、準備手順、セキュリティ通知、および同期化されたキャリブレーションフローが公式にサポートされています。「ルコ」と「キングフィッシャー」が、公式のハンドル製品タイプとして認定されました。デバイスシミュレータのサポート— 実際のハードウェアと並行して、ソフトウェアによってシミュレートされたデバイスの検出および通信。接続ループに対する保護 — 不具合のあるポートは自動的にブロックされます。リセットするには POST /ports/{port}/reset.スタイラスの装着検知信号— ハンドルの装着および取り外しを確実に検知し、反動防止機能も備えています。セッション、リクエスト、およびWebSocket
セッションプロファイルのフィルタリングと保持— セッションはプロファイル名と必要なSDKのバージョンを宣言し、サービスは再接続のたびにその情報を保持します。クライアントや監視ツールは、このプロファイルに基づいてセッションをフィルタリングし、対象を絞り込むことができます。セッションごとのコマンドタンポニング— 処理の遅いセッションが他のセッションをブロックすることがなくなりました。単発のコマンド向けの「configure」用語集 — 基準, プリセット, マウント, force_gate, 減衰 機器ごとに、および プロフィール et 基準 セッションごとに、これらは今後すべて以下にまとめられます 設定する — 出力設定辞書に合わせて調整されており、送信した内容と読み取った内容が一致するようにしています。カスタマイズ可能な機器の組み立て — 組み込みのワークスペースプリセットを選択してください(デフォルト, 腕(前面), 腕の正面中央, フロントLED, led_front_centered) または明示的な変換を送信してください。編集内容を手動で変更すると、プリセットは自動的に カスタム.名前付きコマンドフィールド — 位置, ベクトル, 角度, トルク 汎用テーブルを置き換える 価値観.角トルクを設定する 置き換える set_angular_torque (単数形は好ましくない)。セッションフレームの拡張 — セッションフレーム v3.0 および v3.1 には、拡張可能なオブジェクトが含まれるようになりました 設定, 状態 et ステータス; 新しい出力フィールドには以下が含まれます current_cursor_force, 現在のカーソル位置, 現在の角トルク, 現在の角度位置, 制御ドメイン, 制御モード, 変える, 変形速度, des config.* 豊かになり、 ステータス・安全 (デフォルトでは非表示)。変換の部分的な更新 — 変更したいサブフィールドのみを送信してください(位置, 回転, スケール) レイアウト、作業スペースの構成、およびナビゲーションの形式について。HTTP
GET / — サービスのバージョン。GET/POST/DELETE /settings et /settings/* — キーと値のペアによる完全なAPI。GET /sessions/{session} et GET/POST/DELETE /sessions/{session}/profile.GET /devices?session=<selector> — 特定のセッションの適用空間において、デバイスの座標を変換します。索引別機器セレクター — 識別子を知らなくても、人差し指で任意のデバイスを指定できます(/inverse3/0/... Inverse3 の最初のものについては; inverse... (Inverseシリーズのすべてのデバイスに対応)。統一されたリクエストおよびレスポンスの構造 — POSTおよびGETリクエストのボディは、同じJSON構造を使用しています command_data WebSocketの場合、あるトランスポート向けに書かれたコードは、別のトランスポートでも動作します。任意の封筒 経由 ?format=json あらゆる道路で; /設定* et GET /home_return utilisent {OK、エラー、データ} デフォルト設定。以下を使用してください。 ?format=plain 粗い構造を得るために。セッションセレクタにおけるワイルドカード — * (任意の文字列)および ? (1文字のみ)をプロフィール名に使用してください。パーセンテージで表示されたセレクター — %2A, %3A、など、はルーティングの前にデコードされます。イベント
WebSocket専用のイベントストリーム(以下) コミュニケーション/イベント/ポート.24種類のイベントカテゴリが定義されており、これには機器のライフサイクル、安全性(緊急ブレーキ、異物検知、ストール)、校正エラー、バッテリーアラート、セッション警告、制御頻度の低下または危機的な状態、入力検証、および非推奨通知などが含まれます。可観測性
プロファイリング時に、レベルに応じた色分けが施されたログメッセージがTracyに送信されました。各HTTPマネージャーにおけるTracyゾーン。メインループの時間統計に関するイベント。ログ出力先とサーバーのホスト名を設定可能(Dockerに対応)。バージョン3.6での新機能
SDFハプティック効果(SDF HFX)— バージョン3.5において、その基盤が整備されました(モジュール、ライフサイクル、モジュールによって提供されるコマンドおよび状態のシリアライズ)。また、バージョン3.6では、完全なドキュメントを伴う公開APIが提供される予定です。改善点
力の振動のフィルタリング— 軸ごとの振動検出、8段階の漸進的回復、ヒステリシスを伴う入力投票、および非対称なリリースのウィンドウ。実行時のフォースゲートフィルタ — 以下の方法で設定可能 configure.force_gate.gain WebSocket または HTTP 経由で、永続的なデフォルト値を使用します。高精度用途向けに、メインループの最大周波数を32 kHzに引き上げました。WebSocketの通信料が削減されました — 変換のサブフィールドで、デフォルト値が恒等変換であるもの(位置 = 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搭載のノートPCで、スリープ状態からの復帰後にワイヤレス「Verse Grip」ドングルが動作しなくなる。Linux および macOSにおけるワイヤレス「Verse Grip」のハンドシェイクは、最初の検出試行が失敗した場合、正しく代替ソリューションに切り替わるようになりました。MacOSにおける設定ファイルの保存場所 — 設定は現在、以下の場所に保存されています ~/Library/Application Support/ 悪しき道に代えて。Linux および macOS における SIGSEGV シグナルの処理— マルチスレッドのクラッシュ捕捉が有効になっている場合、プロセスが致命的なシグナルでループしなくなりました。セッション間のコマンド上書き— あるセッションの設定コマンドが、別のセッションの設定コマンドによって黙って上書きされてしまうことがありましたが、現在はフィルタリングされ、正しく統合されるようになりました。設定を上書きするプローブコマンド — 監視セッション(例:Haply Hub)が送信する プローブの位置 待機中の基本設定、プリセット、またはプロファイルの変更を、もはや静かに上書きすることはありません。プロトタイプのハンドルの表示— プロトタイプの部品が、カスタムハンドルではなく標準ハンドルとして誤って表示されていました。まだ移行を完了していないクライアントに対して、`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 イベントストリームリスナー。「Glaze」の新バリエーション 各C++チュートリアルの(cpp-glz/), 既存の nlohmann/json バリアントと並んで。書き直されたすべてのチュートリアル API v3.1用(ポート10001、 configure.preset, 名前付きコマンドフィールド、ユーティリティ関数 print_state()).以前の「Verse Grip Stopper」チュートリアルは削除され、新しい「Combiné」チュートリアルに置き換えられました。SDKガイド、APIリファレンス、およびハードウェアに関するページで、公開ドキュメントが更新されました。