本文へスキップ

制御コマンド

以下は、各デバイスの commands マップの下部に送信される、ティック単位の非永続的なコマンドです。コマンドは たった一度だけ 適用された後、その設定は忘れられます。コマンドの送信を停止すると、デバイスはアイドル状態に戻ります。

特に明記されていない限り、すべての制御コマンドはWebSocket専用です(HTTPに対応するコマンドはありません)。

set_cursor_force​

カーソル(エンドエフェクタ)にデカルト座標系の力を適用します。

{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_cursor_force": {
"vector": { "x": 0.0, "y": 0.0, "z": 1.5 }
}
}
}]
}
フィールドタイプ説明
vectorvec3アプリケーション空間におけるニュートン単位の力

力は1ティック内で**加算**されます。複数のソース(アプリ、SDF HFX、ナビゲーション)から発生した力は、デバイスに送信される前に合算されます。


set_cursor_position​

カーソルを目的の位置に移動するよう指示します(位置モード制御)。

{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_cursor_position": {
"position": { "x": 0.0, "y": -0.12, "z": 0.15 }
}
}
}]
}
フィールドタイプ説明
positionvec3アプリケーション空間におけるメートル単位の目標位置

このサービスは、カーソルを目標地点まで移動させるために必要な力を計算します。safe-trajectory が有効になっている場合、カーソルの速度は速度制限の対象となります。


set_angular_torques​

3つの関節にトルクを印加します(角度・力モード制御)。

{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_angular_torques": {
"torques": { "a0": 0.0, "a1": 0.0, "a2": 0.0 }
}
}
}]
}
フィールドタイプ説明
torquesangles3関節トルク

set_angular_position​

関節を目標角度まで移動させるよう指示します(角度・位置モード制御)。

{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_angular_position": {
"angles": { "a0": 30.0, "a1": 45.0, "a2": 60.0 }
}
}
}]
}
フィールドタイプ説明
anglesangles3度(degree)単位の目標関節角度

set_transform​

ワークスペースの変換(デバイス空間 → アプリケーション空間)を設定します。他のコマンドとは異なり、 set_transformこれは**永続的(persistent)**です。サービスは最後に送信された値を記憶しています。カメラが動いている間、ストリーミングしてもよいですし、一度だけ送信しておいても構いません。

{
"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 }
}
}
}
}]
}
Verseグリップ / ワイヤレスVerseグリップ

グリップ装置については rotation効果があります。 positionと scaleInverse3とのスキーマの一貫性を保つために許可されていますが、グリップには影響しません。

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

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


probe_position / probe_orientation​

制御コマンドを送信しないセッション(例:Haply Hubでデバイスを監視している場合など)向けの、監視専用のキープアライブです。

{
"inverse3": [{ "device_id": "049D", "commands": { "probe_position": {} } }]
}
{
"verse_grip": [{ "device_id": "DEF456", "commands": { "probe_orientation": {} } }]
}
ほとんどの場合、プローブは必要ありません

セッションがすでに制御コマンド(set_cursor_force, set_cursor_position など)を送信している場合、デバイスの状態はすべての応答とともに自動的に更新されます。プローブは、読み取り専用のモニタリング セッションでのみ有用です。