本文へスキップ

マウントおよびワークスペースの変換

2つの変換が、アプリケーション空間におけるデバイスの位置を特定します。パイプラインを理解することで、適切な変換を選択するのに役立ちます。

座標パイプライン​

段階役割設定方法永続的に保存するかどうか
基準座標系軸を再マッピングします(例:Z軸上向き → Y軸上向き)session.configure.basis — チュートリアル 08 (HTTPによるリモート設定)はい
単位変換デバイスの物理的な取り付けオフセット(アームの位置、回転、スケール)configure.mount または configure.preset — チュートリアル 08 (HTTPによるリモート設定)はい
ワークスペースの変換カメラ/シーンの移動に伴うドリフトcommands.set_transform — チュートリアル 09 (WebSocketによるティックごとのストリーミング)はい(値を保持)

単位変換​

マウントとは、デバイスが物理的に設置されている位置を指します。つまり、アームのオフセット、 向き、スケールが含まれます。一度設定されると(あるいはユーザーが物理的な設置構成を変更した際に設定されると)、 実行時にはほとんど更新されません。

プリセット(工場出荷時の設定)​

マウントを直接計算する代わりに、名前が指定されたプリセットを選択してください:

プリセット原点配置がんの方向
defaultsデバイスベース前面(腕の前面)
arm_frontデバイスベース前方
arm_front_centeredワークスペース中心前方
led_frontデバイスベースLEDの側面(前方)
led_front_centeredワークスペース中心LEDの側面(前方)
custom手動 — マウントを直接設定する—

プリセットを使用すると、マウント、基準座標系、ワークスペースの原点を一度に設定できます。

マウントの直接設定​

{
"inverse3": [{
"device_id": "049D",
"configure": {
"mount": {
"transform": {
"position": { "x": 0.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
mountわあ presetは互いに排他的です

同じメッセージに両方を送信すると意味が曖昧になるため、サービスはこれを拒否します。 次のいずれかを選択してください:名前付き preset(マウントを自動的に設定する)または明示的な mount 変換。

コマンドとスナップショットの構造の違い

マウントを 送信 「때」は変換で囲む必要があります: { "mount": { "transform": { … } } }. スナップショットからマウントを 読む これは、覆いのない平らな構造です: { "mount": { "position": …, "rotation": …, "scale": … } }. これは意図された設計です。コマンドは統合された command_data ラッパーを使用し、スナップショットは core::transformを直接シリアライズするためです。

ワークスペースの変換​

ワークスペース変換は、マウントに対して適用されるランタイムドリフトです。 一般的なユースケースはシーンのナビゲーションです。つまり、デバイスを物理的にその場に置いたまま、アプリケーションのビューをパン、回転、またはズームイン/ズームアウトさせることです。

マウントとワークスペースの変換は、いずれも永続的です。サービスは最後に送信された値を記憶します。両者の違いは、用途とパフォーマンスにあります:

  • マウントは、一度設定すればそのまま維持されるように設計されています。物理的なインストール構成を表しており、更新頻度が低いように最適化されています。
  • ワークスペースの変換は、高い頻度でストリーミングされるように設計されています(例:カメラのパン操作中の各フレーム)。内部パイプラインは、この更新サイクルに合わせて最適化されています。
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_transform": {
"transform": {
"position": { "x": 1.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
スケーリングは出力に影響を与えます — 通常、望ましい方向に作用します

マウントまたはワークスペースのスケールを変更すると、デバイスがレンダリングする力が変化します。これは、スケールが接触力の計算に使用される**貫入深度(penetration depth)**に影響を与えるためです。例えば、 2x スケールを適用すると、貫通深度がおよそ半分になります(デバイスの移動範囲に比べて仮想シーンが2倍の大きさになるためです)。したがって、結果として生じる力は 1xそこで感じる力の概算 半分です。逆に 0.5x スケールは力をおよそ2倍にします。

これは通常、意図した動作です。ハプティックシーンを縮小すると、接触が自然に弱まり(「より遠くにある」状態になります)、拡大すると接触が強くなります。ユーザーが拡大・縮小している間、剛性を一定に保つ必要があるなど、意図した動作ではない場合は、力のゲインを逆方向にスケーリングして補正してください。

自動ドリフトには、Navigationモジュールを使用してください

連続的な移動(バブルナビゲーション、速度制御ドリフト)が必要な場合は、ティックごとに set_transform手動でストリーミングする代わりに ナビゲーションモジュールを使用してください。このモジュールが、物理演算、ハプティックフィードバック、ワークスペース境界の処理を代行します。