Haply 逆向服务
Inverse Service作为后台进程在您的机器上运行,可将 Haply 触觉设备实时连接到您的应用程序。它会在应用程序代码之下的一层处理设备的检测、串行通信、安全监控以及状态流传输等所有工作,因此您可以专注于构建用户体验。
要求与兼容性
该服务可在主流桌面平台上运行,并支持通过配备 WebSocket 客户端和 JSON 解析器的任意编程语言进行操作:
- 平台: Windows 10 及更高版本(MSVC)、Linux(
.deb软件包)、macOS - 编程语言:Python、JavaScript / TypeScript、C++、C#、Rust、Go、Java、…… 所有支持 WebSocket + JSON 的语言
官方支持的集成
Haply 为Haply Inverse Unity Package、Toia、Geomagic Freeform以及NVIDIA Isaac Lab提供并维护官方集成支持。
除上述情况外,只要是具备 WebSocket 客户端和 JSON 解析器的平台或运行时,均可使用此服务。我们已验证该服务可与Unreal Engine、TouchDesigner以及其他实时和模拟技术栈配合使用。只要您的环境能够建立 WebSocket 连接,即可操作 Inverse 设备。
有关各编程语言的示例,请参阅公开的示例代码库:C++和Python。
通信接口
该服务公开了两个通信通道:
| 频道 | 端口 | 运输 | 用途 |
|---|---|---|---|
| 模拟 | 10001 | WebSocket | 实时命令/状态循环(1条消息输入 → 1个状态输出) |
| 活动 | 10020 | WebSocket(只读) | 系统事件:安全、电池、连接、速率警告 |
| 超文本传输协定 | 10001 | REST | 无状态的配置查询、配置、会话管理、设备信息查询 |
所有有效载荷均采用 JSON 格式。有关标准信封、端口和内容类型的规则,请参阅JSON 规范。
用例
| 目的 | 起始地点 |
|---|---|
| 将力或位置的目标值发送至力反馈设备 | 实时控制 |
| 设置:底层、安装、预设、滤镜 | 会话设置 |
| 场景导航(通过速率控制移动) | 导航模块 |
| 接收系统事件(安全、电池、连接) | 事件与监控 |
| 通过示例学习 | 教程 |
坐标系
Haply 的内部坐标系为右手系,Z 轴向上(+X 向右、+Y 向前、+Z 向上)。可通过使用单一基底的变换,将其转换为应用程序的坐标系。一旦设置完成,所有输入和输出都会自动进行转换。
在场景中,有两种用于确定设备位置的变换:
关于坐标转换管道的整体情况,请参阅“坐标系”和“工作空间”部分。
服务执行
Inverse Service 支持两种运行模式:
- Haply 集成到 Hub 中(推荐)—Haply Hub 包含最新的服务版本,并在 Hub 打开时自动启动。无需手动配置,即可始终使用最新的修复程序。
- 独立模式—使用 Inverse Installer将特定服务版本安装为 Windows 服务或 Unix 守护进程。这在持续集成(CI)、向无头环境部署以及在未运行 Hub 的机器上使用时非常方便。
独立服务的管理
Windows — 打开服务应用: Win+R按下,services.msc输入该内容,找到“Haply 反向服务”,右键单击并选择“启动”、“停止”或“重启”。
Linux (systemd):
systemctl start haply-inverse-service.service
systemctl stop haply-inverse-service.service
systemctl restart haply-inverse-service.service
systemctl enable haply-inverse-service.service # auto-start on boot
API参考(完整版)
关于所有端点和消息,其完整的机器可读规范如下:
- HTTP API 参考文档 (OpenAPI)— 交互式 Swagger UI
- 模拟 API 参考 (AsyncAPI)— 交互式 AsyncAPI 查看器