安装与工作区转换
有两种变换可将设备定位在应用空间中。了解 该流程有助于您选择合适的变换。
坐标管道
| 舞台 | 功能介绍 | 如何设置 | 执着? |
|---|---|---|---|
| 基础 | 重新映射坐标轴(例如,Z轴向上 → Y轴向上) | session.configure.basis | 是 |
| 施加变换 | 设备的物理安装偏移量(臂的位置、旋转角度、刻度) | configure.mount 或 configure.preset | 是 |
| 工作区转换 | 摄像机/场景导航偏移 | commands.set_transform 或 导航模块 | 是(置顶) |
施加变换
“安装”描述了设备在物理上的位置——其臂偏移量、 方向和比例。该设置仅需设置一次(或当用户更改物理 布局时),运行时极少更新。
预设(出厂设置)
与其自己计算挂载点,不如选择一个已命名的预设:
| 预设 | 源位置 | 手臂朝向 |
|---|---|---|
defaults | 设备底座 | 向前(手臂向前) |
arm_front | 设备底座 | 转发 |
arm_front_centered | 办公中心 | 转发 |
led_front | 设备底座 | LED 侧向向前 |
led_front_centered | 办公中心 | LED 侧向向前 |
custom | 说明书 — 自行安装支架 | — |
预设可一次性设置坐标系、基底和工作空间原点。
直接设置挂载点
- WebSocket
- 超文本传输协定
{
"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 转换。
命令与快照的不对称性
当 发送 安装后,包裹 transform: { "mount": { "transform": { … } } }.
当 阅读 这是快照中的一个挂载点,它是平的: { "mount": { "position": …, "rotation": …, "scale": … } }.
这是设计使然——命令使用统一的 command_data 包装器;快照
序列化 core::transform 直接。
工作区转换
工作区变换是在挂载操作之上应用的运行时偏移。 其典型用例是场景导航——在设备物理位置保持不变的情况下,对 应用程序视图进行平移、旋转或缩放。
挂载和工作区变换都是持久的——该服务会记住 您发送的最后一个值。两者的区别在于用途和性能:
- “Mount”的设计理念是“设置一次,长期保持”——它描述了物理 配置,并针对不频繁的更新进行了优化。
- 工作空间变换的设计初衷是支持高频流式处理 (例如,在摄像机导航过程中每帧执行一次)——其内部处理流程 已针对此更新频率进行了优化。
- WebSocket
- 超文本传输协定
{
"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 恢复为恒等式。
使用“导航”模块实现自动漂移
如果您需要持续移动(气泡导航、速率控制漂移),
请使用 导航模块 而不是手动
流式传输 set_transform 每次更新——它都会为您处理物理模拟、触觉
反馈以及工作区边界。