v3.5.3
3.5.3はパッチリリースです。主な変更点は、ペアリングされたInverse3とグリップのセットの片方を交換した際に再ペアリングを行うスマートな自動ペアリング機能、有線接続のVerse Gripにおける誤ったバッテリー警告の解消、非対応のコマンドを黙って破棄しないよう改善された正確なファームウェア機能チェック、接続時のステータスLEDの安定化、そしてクラッシュしないようサービスを停止・再起動する機能です。また、複数のデバイスおよびシリアル化に関する修正、ならびにバイト単位のワイヤ仕様に関するいくつかの注記も含まれています。
ハイライト
- セットの片方を交換すると、自動的に再ペアリングされます。自動ペアリングされたInverse3 + Verse Gripのセットの片方のデバイスが交換された場合、SDKは以前のペアリングを解除し、新しく接続されたデバイスと再ペアリングするようになりました。手動でのペアリングには影響ありません。
- 有線のVerse Gripで誤ったバッテリー警告が表示されなくなりました。バッテリー残量が「低」または「危険」レベルに達した際の警告は、ワイヤレス接続のVerse Gripに対してのみ表示されるようになりました。有線のVerse Gripが誤って「低」または「危険」レベルの警告を表示することはなくなりました。
- ファームウェア機能の正確なチェック。 ファームウェアが古く、実行できない触覚機能(バージョン7.5以前のファームウェアにおける均一または方向性のダンピング、バージョン7.4以前のファームウェアにおけるホームへの復帰)をデバイスに要求した場合、以前のように要求を黙って破棄して誤解を招く200を返すのではなく、
device-protocol-unsupportedイベントとともにHTTP 422を返すようになりました。 - 接続時のステータスLEDの安定化。Inverse3のステータスLEDは、接続や再接続のたびに赤く点滅しなくなりました。ウェイクアップ後の約5秒間の安定化期間中も接続が維持されるため、ファームウェアの接続ウォッチドッグが作動しなくなりました。
- クラッシュしないサービスの停止と再起動。サービスの停止および再起動時に、クラッシュやハングが発生しなくなりました。サービスのオン/オフを切り替えた際に発生していたパニックやハングを解消するため、シャットダウンおよび再起動の処理を書き直しました。
内部の改善
- クラッチナビゲーションモード(実験的機能、デフォルトではオフ)。これは、物理デバイスが動き続けている間、オペレーターがサービスがシーンに出力する動きを縮小したり、完全に固定したりできる新しいナビゲーションモードです。微細な位置決め用の半速「precise」モードと、ワークスペースを再配置するための完全固定モードがあります。モードを解除する際、蓄積されたオフセットがワークスペースに取り込まれるため、シーン内のカーソルがジャンプすることはありません。フォースフィードバックは、どの比率であっても継続して送信されます。今回のリリースサイクルではオプトイン方式となっており、デフォルトのワイヤー仕様は変更されていません。
- セッション単位のフォーススケーリング(プレビュー)。クライアントは、例えばパイメニューの表示中などに、あるシミュレーションセッションの触覚出力をゼロ方向に下げ、デバイスの制御をハブに引き渡すことができます。これにより、メニューの触覚は通常の制御経路を通じて生成されます。セッションが終了したとき、またはメニューが閉じられたときには、自動的に元の状態に戻ります。今回のリリースサイクルではプレビューでのみ有効であり、デフォルトのワイヤ仕様は変更されていません。
- ピボットを中心としたワークスペースのズーム(実験的機能)。ワークスペースの変換を更新する際にピボットポイント(例:現在のカーソル位置)を指定すると、ビューはそのポイントを基準に拡大・縮小されるため、ピボットの画面上の位置は変わりません。これにより、カーソル位置へのズームが即座に実現されます。Inverse3でのみ利用可能です。今回のリリースサイクルでは実験的機能であるため、デフォルトのワイヤ仕様は変更されていません。
- JSONのシリアライズエンジン(glaze)をv7.8.4にアップグレードしました。これはインフラのみの変更であり、公開APIや動作の変更はありません。また、値を保持する浮動小数点テキストのワイヤ形式の再フォーマットが1件含まれています。詳細については、以下の「潜在的な破壊的変更」を参照してください。
修正
- デバイスのマウントトランスフォームを変更またはリセットしても、もはやクラッシュの危険はありません。試作段階の名残であるコードパスが、マウントを変更するたびにファームウェアのワークスペースのバウンディングボックスを送信していました。このコードパスは削除されました。
- インクウェルドックでの再キャリブレーション後、ボディの向きが更新されるようになりました。インクウェルでの再ドッキングおよび再キャリブレーションの後、ストリーミングされるボディの向きは、次回の再接続までキャリブレーション前の値を報告するのではなく、デバイスから更新されるようになりました。最新のデバイスファームウェアが必要です。ワイヤフォーマットに変更はありません。
- Minverse は、キャリブレーションのブロックを常に報告するようになりました。 ファームウェアがキャリブレーションのブロックを報告するたびに、Minverse は
device-calibration-failedイベントが発生するようになりました。これには、以前は失敗を黙って隠していたオシレーティングホールのエッジケースも含まれます。これにより、デバイスマネージャーには常に「キャリブレーションに失敗しました」というメッセージが表示されます。 - センタリングプリセットでは、原点がワークスペース内で実際に到達可能な中心に設定されるようになりました。
arm_front_centeredとled_front_centered(Inverse3 / Inverse3x)は、アームジョイントの軸に沿って位置合わせされていましたが、この軸は到達可能なエンベロープの中心ではありませんでした。そのため、原点{0, 0, 0}でset_cursor_positionを実行したところ、中心からずれていました。また、Minverse のセンタリング原点も約10 mm右にずれていました。各オフセットは、各軸の到達可能範囲の半分になるよう修正されました。これは機械的に可能な範囲ではなく、ファームウェアの安全スプリング制限ゾーンを除外して測定したものです。(「破壊的な変更の可能性」セクションの原点シフトに関する注記を参照してください。)
破壊的変更の可能性
- 7.5 より古いファームウェアでは、
POST/DELETE /config/filters/dampingHTTP 422 を返すようになりました。200件の書き込みを黙って破棄していた代わりに、device-protocol-unsupportedイベントが発生します。ファームウェア 7.5 以降では影響を受けません(引き続き 200 を返します)。対応方法:デバイスのファームウェアを 7.5 以降にアップグレードするか、422 を処理してください。 - ファームウェアがこのコマンドに対応していない場合(バージョン7.4より前のもの)、
POST/DELETE /home_return無条件の 200 の代わりに HTTP 422 を返すようになりました。影響を受けるのは、古いファームウェアを搭載したデバイスのみです。対処方法:ファームウェアを 7.4 以降にアップグレードするか、422 を処理してください。 config/mountとstate/transform(GET/POST/PATCH/DELETE)のコマンドエコーでは、transform.rotationが{x,y,z,w}の代わりに{w,x,y,z}のキー順でシリアライズされるようになりました。これは、ストリーミングされるstateスナップショットの回転順序に合わせて変更を行いました。変更はバイトレベルのみです。値とキー名は同じで、変わるのはキーの順序だけです。3つの要素はすべて引き続き出力されます。名前をキーとするJSONクライアントについては、対応は不要です。バイト列や順序の厳密な比較を行っている場合は、期待される値を再生成してください。- 単一デバイスへの設定適用時の変更通知のスコープ名。 単一デバイスの設定が適用されると、セッション更新の変更通知イベントは、ベース名(
mount、basis、preset)の代わりに、設定スコープ名(config.mount、config.basis、config.preset)を報告するようになりました。これらのイベントのスコープ文字列でフィルタリングを行っているクライアントは、そのマッチング処理を更新する必要があります。 - v3.0 および v3.1 におけるすべての数値ワイヤ値に対する Glaze の浮動小数点テキストの再フォーマット(例:
1.0E-7->1E-7、16777216->1.6777216E7、-1.0E-37->-1E-37)。変更はバイトレベルのみです。数値パーサーは同じ値を読み取ります。変更されたのはテキスト形式のみです。文字列の等価比較を行うコンシューマーについては、フィクスチャを更新してください。 - センタリングプリセットの原点シフト。 センタリングプリセットは、実際に到達可能な中心を対象とするようになったため、設定される原点は 3.5.2 と比べて移動します。
arm_front_centered/led_front_centeredは、デバイスの奥行き軸に沿って 25 mm シフトします。Minverse のセンタリングプリセットは、X 方向に 10 mm、Y 方向に 20 mm、Z 方向に 20 mm シフトします。minverse_zupは X 方向に 20 mm、Y 方向に 30 mm シフトします。これはデフォルトで有効になっている動作であり、minverse_zupは、検出された Freeform セッションに対して自動的に適用されます。影響範囲:センタリングプリセットが有効な間に原点に配置されたコンテンツ、または原点を基準に配置されたジオメトリは、原点とともに移動します。移行方法:原点に固定されたジオメトリを再確認するか、以前のオフセットをカスタムマウントトランスフォームとして明示的に記述してください。センタリングされていないプリセット(device_defaults、arm_front、led_front)は恒等変換であり、影響を受けません。
非推奨
- inverse3 制御コマンドのレガシー
valuesこの入力方法は、警告が表示されるようになり、非推奨となりました。set_cursor_force、set_cursor_position、set_angular_position、set_angular_torquesに、コマンドの名前付きフィールド(vector/position/angles/torques)の代わりにvalues配列を送信した場合でも、引き続き動作します。ただし、黙って受け入れられる代わりにcommand-deprecatedイベントが発生するようになりました(コマンドごとに30秒に1回に制限されています)。valuesを名前付きフィールドに移行してください。レガシー入力はバージョン 4.0 で削除される予定です。 - なお、今回のリリースサイクルにおいて、公開ワイヤに影響を与える変更はありません。