마운트 및 작업 공간 변환
두 가지 변환 방식을 통해 장치를 애플리케이션 영역에 배치할 수 있습니다. 파이프라인을 이해하면 적합한 방식을 선택하는 데 도움이 됩니다.
좌표 파이프라인
| 단계 | 기능 | 설정 | 영구적인가요? |
|---|---|---|---|
| 기초 | 축의 순서를 재설정합니다(예: Z축 위 → Y축 위). | session.configure.basis — 참조 튜토리얼 08 (HTTP 원격 구성) | Ja |
| 몽타주-변형 | 장치의 물리적 장착 오차 (팔 위치, 회전, 크기 조정) | configure.mount 또는 configure.preset — 참조 튜토리얼 08 (HTTP 원격 구성) | Ja |
| 작업 공간 변환 | 카메라 또는 장면 탐색 시 발생하는 드리프트 | commands.set_transform — 참조 튜토리얼 09 (Takt용 WebSocket 스트리밍) | 예 (영구 저장됨) |
몽타주-변형
마운팅은 장치가 물리적으로 위치한 곳, 즉 암 오프셋, 정렬 및 스케일링을 설명합니다. 이는 한 번만 설정되며(또는 물리적 구성이 변경될 때), 실행 시에는 거의 업데이트되지 않습니다.
기본 설정 (출고 시 설정)
조립 과정을 직접 계산하는 대신, 이름이 지정된 사전 설정을 선택하십시오:
| 기본 설정 | 초기 위치 | 팔의 방향 |
|---|---|---|
defaults | 기기 기반 | 전면 (팔 앞면) |
arm_front | 기기 기반 | Vorne |
arm_front_centered | 워크스페이스-미테 | Vorne |
led_front | 기기 기반 | 전면 LED 패널 |
led_front_centered | 워크스페이스-미테 | 전면 LED 패널 |
custom | Manuell — 직접 조립 설정 | — |
기본 설정을 통해 조립체, 베이스 및 작업 공간의 원점을 한 번에 지정할 수 있습니다.
몽타주 직접 지정
- 웹소켓
- 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 그리고 preset 서로 배타적이다동일한 메시지에 두 항목을 동시에 전송하는 것은 모호하므로, 해당 서비스는 이를 허용하지 않습니다.
다음 중 하나를 선택하십시오: 이름이 지정된 preset (설치를 대신 결정해 주는) 또는 명시적인
mount-변형.
베임 센덴 한 번의 조립 과정으로 변형을 완성하세요: { "mount": { "transform": { … } } }.
베임 읽기 스냅샷에서 추출한 몽타주 중 하나는 평면입니다: { "mount": { "position": …, "rotation": …, "scale": … } }.
이는 의도된 기능입니다 — 명령어는 일관된 command_data-Wrapper, Snapshots
다음과 같이 직렬화합니다. core::transform 직접.
작업 공간 변환
워크스페이스 변환은 어셈블리 위에 적용되는 런타임 드리프트입니다. 이 기능의 대표적인 사용 사례는 장면 이동으로, 기기가 물리적으로 제자리에 머무르는 동안 애플리케이션 화면의 팬, 회전 또는 확대/축소 기능을 수행하는 것입니다.
조립 변환과 작업 공간 변환은 모두 영구적입니다. 이 서비스는 마지막으로 전송된 값을 기억합니다. 두 변환의 차이점은 용도와 성능에 있습니다:
- 몽타주는 한 번 설정되면 그대로 유지되도록 설계되었으며, 이는 물리적 구성을 나타내며 드문 업데이트에 최적화되어 있습니다.
- Workspace-Transformation은 높은 빈도로 스트리밍되도록 설계되었습니다 (예: 카메라 이동 중 매 프레임마다) — 내부 파이프라인은 이러한 업데이트 빈도에 최적화되어 있습니다.
- 웹소켓
- 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 침투 깊이는 대략 (가상 장면은 장치의 이동 거리에 비해 두 배 크기이므로), 그 결과 발생하는 힘은 대략 halb ~만큼 큰 1x. 반대로, 다음의 스케일링은 0.5x 대략 그 정도 힘이다.
대개 이것이 원하는 동작입니다. 햅틱 장면에서 줌 아웃하면 접촉 강도가 자연스럽게 약해지고(접촉 지점이 “더 멀리 떨어져” 있기 때문), 줌 인하면 강도가 강해집니다. 만약 이것이 원하지 않는 동작이라면 — 예를 들어 사용자가 줌을 조절할 때 강성이 일정하게 유지되어야 하는 경우 — 힘 증폭 계수를 반비례적으로 조정하여 이를 보정하십시오.
지속적인 이동이 필요한 경우(방광 내비게이션, 속도 제어 드리프트),
다음 기능을 사용하십시오. 내비게이션 모듈, 대신 set_transform 매 박자마다
수동으로 스트리밍할 수 있습니다. 물리 엔진, 햅틱
피드백, 작업 공간 내 제한 기능은 시스템이 자동으로 처리해 줍니다.