주요 콘텐츠로 건너뛰기
버전: 3.4.x

시뮬레이션 채널

일반

기본 시뮬레이션 채널 웹소켓 URL은 다음과 같습니다. ws://localhost:10001. 참고: 포트는 구성에서 변경할 수 있습니다.

디바이스 상태를 수신할 수 있는 고주파 양방향 통신 채널입니다. 세션 관련 또는 디바이스 관련 명령을 관련 또는 디바이스 관련 명령을 받을 것으로 예상합니다. 시스템은 수신된 각 메시지에 대해 1:1로 상태 응답 메시지를 보냅니다. 메시지를 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
}
}
]
}

상태 업데이트 메시지

서비스는 수신된 각 메시지에 대해 모든 디바이스의 상태가 포함된 상태 업데이트 메시지를 한 번씩 전송합니다.

기계의 상태를 알고 싶다면 힘 값(값이 0이더라도)과 같은 메시지를 미리 보내야 합니다. 이는 위치 추적이나 힘을 가하지 않는 등의 입력 장치로 사용하는 경우 특히 중요합니다. 상태 업데이트 메시지에는 다음이 포함됩니다. 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는 위로"라는 의미입니다.

언리얼과 같은 왼손잡이 Z업 시스템의 예시입니다(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
}
}
}
}
]
}

또한 하나의 메시지로 여러 디바이스에 명령을 보낼 수도 있습니다. 다음은 그 예입니다:

{
"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바이트.
  • 값 범위: 각 값의 범위는 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
]
}
}
}
]
}