本文へスキップ
バージョン:3.4.x

シミュレーション・チャンネル

一般

デフォルトのシミュレーションチャネルのウェブソケットURLは次のとおりです。 ws://localhost:10001.注:ポートはコンフィギュレーションで変更できる。

これは高周波の双方向通信チャネルで、デバイスの状態を受け取ることが期待できる。セッション 関連またはデバイス関連のコマンドを受け取ることが期待されます。システムは受信した各メッセージに対して1:1の状態応答メッセージを送信する(状態更新を参照)。 メッセージを受信します(状態の更新を参照)。

モジュール

このページでは、一般的なコマンドについて説明します。私たちは、独自のコマンドでシステムを登録・拡張する様々なモジュールや機能を持っています。 それらはモジュールセクションで別々に文書化されています;

イニシャルメッセージ

このサービスは、ウェブソケットが接続されると、完全なデバイスリストを含むメッセージを送信します。最初のメッセージは次のようなものです。 JSON という形式をとっている:

{
"inverse3": [
{
"device_id": "04BA",
"config": {
"type": "inverse3",
"device_info": {
"minor_version": 1,
"major_version": 7,
"id": "04BA",
"model": 4,
"uuid": "2D35F80DD9005F599B68F49944CB04BA"
},
"port": "COM13",
"extended_device_id": "2D35F80DD9005F599B68F49944CB04BA",
"extended_firmware_version": "8C20FDC8010AA1E15AA133CDA2534874",
"gravity_compensation": {
"enabled": true,
"scaling_factor": 1
},
"handedness": "right",
"torque_scaling": {
"enabled": true
}
},
"state": {
"angular_position": {
"a0": -69.31704,
"a1": 137.62952,
"a2": 19.832787
},
"angular_velocity": {
"a0": 0,
"a1": 0,
"a2": 0
},
"body_orientation": {
"x": -0.01940918,
"y": 0.7026367,
"z": 0.00048828125,
"w": 0.7113037
},
"cursor_position": {
"x": 0.07842738,
"y": -0.14836666,
"z": 0.14297646
},
"cursor_velocity": {
"x": -0.011969013,
"y": 0.0012009288,
"z": -0.043197
},
"mode": "idle"
},
"status": {
"calibrated": false,
"in_use": false,
"power_supply": true,
"ready": true,
"started": true
}
}
],
"verse_grip": [
{
"device_id": "61548",
"config": {
"port": "COM3",
"type": "verse_grip"
},
"state": {
"button": false,
"hall": 0,
"orientation": {
"x": -0.5019531,
"y": 0.8632202,
"z": -0.048095703,
"w": -0.022338867
}
},
"status": {
"error": 0,
"ready": true
}
}
],
"wireless_verse_grip": [
{
"device_id": "0",
"config": {
"port": "COM6",
"type": "wireless_verse_grip",
"major_version": 1,
"minor_version": 4,
"hardware_version": 1
},
"state": {
"battery_level": 0.816,
"battery_voltage": 3.77,
"buttons": {
"a": false,
"b": false,
"c": false
},
"hall": 16,
"orientation": {
"x": -0.019866943,
"y": -0.017486572,
"z": 0.05508423,
"w": -0.9963989
}
},
"status": {
"connected": true,
"awake": true,
"ready": true
}
}
]
}

状態更新メッセージ

サービスは、各メッセージを受信するごとに、全デバイスの状態を含む1つの状態更新メッセージを送信する。

もしマシンの状態を知りたいのであれば、あらかじめ力の値(たとえ値がゼロであっても)などのメッセージを送っておく必要があります。 これは、私たちのデバイスを入力デバイスとして使用する場合、特に重要です。例えば、位置をトラッキングし、力を加えない場合などです。 状態更新メッセージには次のようなものがあります。 JSON という形式をとっている:

{
"inverse3": [
{
"device_id": "04BA",
"state": {
"angular_position": {
"a0": -69.31704,
"a1": 137.62952,
"a2": 19.832787
},
"angular_velocity": {
"a0": 0,
"a1": 0,
"a2": 0
},
"body_orientation": {
"x": -0.01940918,
"y": 0.7026367,
"z": 0.00048828125,
"w": 0.7113037
},
"cursor_position": {
"x": 0.07842738,
"y": -0.14836666,
"z": 0.14297646
},
"cursor_velocity": {
"x": -0.011969013,
"y": 0.0012009288,
"z": -0.043197
},
"mode": "idle"
},
"status": {
"calibrated": false,
"in_use": false,
"power_supply": true,
"ready": true,
"started": true
}
}
],
"verse_grip": [
{
"device_id": "61548",
"state": {
"button": false,
"hall": 0,
"orientation": {
"x": -0.5019531,
"y": 0.8632202,
"z": -0.048095703,
"w": -0.022338867
}
},
"status": {
"error": 0,
"ready": true
}
}
],
"wireless_verse_grip": [
{
"device_id": "0",
"state": {
"battery_level": 0.816,
"battery_voltage": 3.77,
"buttons": {
"a": false,
"b": false,
"c": false
},
"hall": 16,
"orientation": {
"x": -0.019866943,
"y": -0.017486572,
"z": 0.05508423,
"w": -0.9963989
}
},
"status": {
"ready": true
}
}
],
"custom_verse_grip": [
{
"device_id": "0",
"state": {
"battery_level": 0.816,
"battery_voltage": 3.77,
"buttons": {
"a": false,
"b": false,
"c": false
},
"hall": 16,
"orientation": {
"x": -0.019866943,
"y": -0.017486572,
"z": 0.05508423,
"w": -0.9963989
},
"extension_data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
},
"status": {
"ready": true
}
}
]
}

セッションコマンド

セッションコマンドは、現在のシミュレーション/接続/セッションに関連するアクションです。デバイスに依存しないアクションです。 アクションです。

強制レンダリング状態

すべてのデバイスと構成の状態スナップショットを要求する。

{
"session": {
"force_render_full_state": {}
}
}

座標原点の設定

全デバイスの座標原点を設定する。座標原点は以下のいずれかに設定できる。 device_base または workspace_center.デフォルトは device_base.

座標原点を workspace_centerこの場合、(0, 0, 0)の位置はデバイスのワークスペースの中央に移動します。

{
"session": {
"set_coordinate_origin": {
"coordinate_origin": "workspace_center"
}
}
}

基本設定

私たちの座標系からあなたの座標系へのマッピングを指示します。このマッピングはセッション全体にわたって維持される。

前述したように、Haply Z-Upで右手座標系を使用する。このコマンドを使うと、現在のセッションを別の座標系で設定することができる。 これにより、その座標系から返されるすべての状態がその座標系で表現されるようになる。また また、他のコマンドの一部として与えられたすべての値の仮定座標系を変更する。例えばカーソル位置を設定する

座標系は我々の座標系からの相対座標系であり、符号文字 (+ または -)の前に有効である。 X, Yあるいは Z 文字。これは有効な値の例である: XYZ, ZYX, +Y-Z+X, X-ZYなど。 つまり、「YZX」と定義されたシステムは、具体的には「Yは右、Zは前、Xは上」を意味する。

これは、アンリアル(X-YZ)

{
"session": {
"set_basis": {
"permutation": "X-YZ"
}
}
}

デバイスコマンド

すべてのデバイス

プローブ・コマンド

probe_position をinverse3 、そして probe_orientation バースグリップの場合、すべてコマンドデータが含まれていません。 これらの力は、報告された位置情報が次のメッセージで最新であることを確認するために、デバイス情報クエリを実行します。 これは、シミュレーションに影響を与える可能性のある力を加えたり、他のアクションを実行したりするコマンドを送信せずに、変化を観察したい場合に便利です。 シミュレーションに影響を与える可能性のある他のアクションを実行するコマンドを送信せずに変化を観察したい場合に便利です。

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"probe_position": {}
}
}
],
"verse_grip": [
{
"device_id": "049D",
"commands": {
"probe_orientation": {}
}
}
],
"wireless_verse_grip": [
{
"device_id": "049D",
"commands": {
"probe_orientation": {}
}
}
]
}

インバース

にコマンドを送信する。 inverse3 クライアントは、指定されたデバイスIDのコマンド・メッセージを送信しなければならない。以下はその例である:

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"set_cursor_force": {
"values": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
}
}
]
}

また、1つのメッセージで複数のデバイスにコマンドを送信することも可能だ:

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"set_cursor_force": {
"values": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
}
},
{
"device_id": "049E",
"commands": {
"set_cursor_force": {
"values": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
}
}
]
}

カーソル位置の設定

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"set_cursor_position": {
"values": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
}
}
]
}

カーソルフォースの設定

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"set_cursor_force": {
"values": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
}
}
]
}

角度位置の設定

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"set_cursor_force": {
"values": {
"x": 1.0,
"y": 2.0,
"z": 3.0
}
}
}
}
]
}

設定角トルク

{
"inverse3": [
{
"device_id": "049D",
"commands": {
"set_angular_torque": {
"values": {
"a0": 1.0,
"a1": 2.0,
"a2": 3.0
}
}
}
}
]
}

エクステンデッド・ヴァース・グリップ

セット・グリップ・エクステンション・データ

について set_extension_data コマンドは、Verseグリップ用の拡張プロトコルの一部であり、基板拡張通信プロトコルを実装したグリップバージョンで使用されます。 グリップバージョンで使用されます。

サポートされるデータ長:

  • アップストリームで最大20バイト。
  • ダウンストリームに最大12バイトを出力(「状態更新メッセージ」を参照)。

データスペック

  • 配列の長さ:20バイト。
  • 値の範囲:各値の範囲は0~255。
{
"wireless_verse_grip": [
{
"device_id": "049D",
"commands": {
"set_extension_data": {
"extension_data": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
}
}
]
}