マウントおよびワークスペースの変換
2つの変換によって、このデバイスはアプリケーション領域内で位置づけられます。 パイプラインの仕組みを理解することで、適切な変換を選択するのに役立ちます。
座標パイプライン
| レベル | 機能 | 設定 | 永続的? |
|---|---|---|---|
| 基礎 | 軸の順序を変更する(例:Z軸が上 → Y軸が上) | session.configure.basis — 参照 チュートリアル 08 (HTTPリモート設定) | Ja |
| モンタージュ・トランスフォーメーション | 装置の物理的な位置ずれ(アームの位置、回転、拡大・縮小) | configure.mount oder configure.preset — 参照 チュートリアル 08 (HTTPリモート設定) | Ja |
| ワークスペースの変換 | カメラナビゲーションおよびシーンナビゲーション時のズレ | commands.set_transform — 参照 チュートリアル 09 (WebSocketストリーミング(Takt用)) | はい(永続的に保存) |
モンタージュ・トランスフォーメーション
「配置」とは、デバイスが物理的にどこにあるか――アームのオフセット、 向き、およびスケール――を表します。これは一度設定される(あるいは物理的な 配置が変更された場合)ものであり、実行時にはめったに更新されません。
初期設定(工場出荷時の設定)
組み立てを自分で計算する代わりに、名前付きのプリセットを選択してください:
| デフォルト設定 | 初期位置 | 腕の位置 |
|---|---|---|
defaults | デバイス基盤 | 前面(腕の前面) |
arm_front | デバイス基盤 | ヴォルネ |
arm_front_centered | ワークスペース・ミッテ | ヴォルネ |
led_front | デバイス基盤 | 前面のLEDパネル |
led_front_centered | ワークスペース・ミッテ | 前面のLEDパネル |
custom | Manuell — 組み立て方法を自分で決める | — |
プリセットを使用すると、アセンブリ、ベース、およびワークスペースの原点を一度に設定できます。
モンタージュを直接指定する
- WebSocket
- HTTP
{
"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 }
}
}
}
}]
}
curl -X POST "http://localhost:10001/inverse3/049D/config/mount?session=:0" \
-H "Content-Type: application/json" \
-d '{"transform":{"position":{"x":0,"y":0,"z":0},"rotation":{"w":1,"x":0,"y":0,"z":0},"scale":{"x":1,"y":1,"z":1}}}'
mount und preset 互いに排他的である同じメッセージ内で両方の情報を同時に送信すると、意味が曖昧になるため、本サービスではこれを拒否します。
どちらか一方を選択してください:名前付き preset (組み立てを決定するもの)または明示的な
mount-変容。
ベーム センデン あるモンタージュの中に、その変容を包み込む: { "mount": { "transform": { … } } }.
バイム 読む スナップショットからのモンタージュの一つでは、それは平らです: { "mount": { "position": …, "rotation": …, "scale": … } }.
これは意図的な仕様です — コマンドでは統一された command_data-Wrapper、Snapshots
は、これらをシリアライズする core::transform direkt。
ワークスペースの変換
ワークスペース変換は、アセンブリ上に適用される実行時ドリフトです。 その代表的な用途はシーンナビゲーションであり、デバイスが物理的にその場に留まったまま、 アプリケーションのビューをパン、回転、またはズームさせるものです。
モンタージュ変換もワークスペース変換も永続的です。このサービスは 最後に送信された値を記憶します。両者の違いは、目的と機能にあります:
- モンタージュは、一度設定すればそのまま維持されるように設計されています。これは物理的な 構成を表しており、更新頻度が低い場合に最適化されています。
- Workspace-Transformationは、高頻度でのストリーミング (例:カメラナビゲーション中の各フレームごと)に対応するように設計されており、内部パイプラインは この更新レートに合わせて最適化されています。
- WebSocket
- HTTP
{
"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 }
}
}
}
}]
}
curl -X POST "http://localhost:10001/inverse3/049D/state/transform?session=:0" \
-H "Content-Type: application/json" \
-d '{"transform":{"position":{"x":1,"y":0,"z":0},"rotation":{"w":1,"x":0,"y":0,"z":0},"scale":{"x":1,"y":1,"z":1}}}'
GET 現在の変換を返します; DELETE それらを元の状態に戻します。
組み立て工程や作業スペースのスケール変更は、デバイスが発生させる力に影響を与えます。これは、スケール変更によって 貫入深度 接触力の計算に用いられるパラメータに影響を与えます。例えば、スケール係数を 2x 貫入深さはおよそ(仮想シーンは装置の移動距離に比べて2倍の大きさである)ため、その結果生じる力はおよそ halb ~と同じくらい大きい 1x. 逆に、スケールが 0.5x おおよその力。
これは通常、望ましい動作です。ハプティックシーンからズームアウトすると、接触の強さは自然に弱くなります(「距離が遠くなる」ため)。逆に、ズームインすると接触の強さは強くなります。これが望ましくない場合(たとえば、ユーザーがズームしても剛性を一定に保ちたい場合など)は、力の増幅率を反比例にスケーリングすることでこれを補正してください。
継続的な移動が必要な場合(膀胱ナビゲーション、速度制御付きドリフト)、
以下の機能をご利用ください。 ナビゲーションモジュール, ではなく set_transform 各小節ごとに
手動でストリーミング — 物理演算、触覚
フィードバック、およびワークスペース内への制限は、システムが自動的に処理します。