Haply 逆向服务
Inverse Service作为后台进程在您的设备上运行,可实时将Haply 设备与您的应用程序连接起来。它负责处理代码层面的所有底层工作:设备检测、串行通信、安全监控以及状态流传输——因此您可以专注于打造用户体验。
系统要求与兼容性
该服务支持主流桌面平台,并可通过任何具备 WebSocket 客户端和 JSON 解析器的编程语言进行调用:
- 平台: Windows 10 及以上版本(MSVC)、Linux(
.deb(软件包),macOS - 编程语言:Python、JavaScript/TypeScript、C++、C#、Rust、Go、Java……以及任何支持 WebSocket + JSON 的语言
官方支持的集成
Haply 针对Haply Unity 包、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 向上)。您可以通过一次基向量变换将其映射到应用程序的坐标系——一旦设置完成,所有输入和输出都会自动转换。
有两个变换用于将设备定位在场景中:
完整的坐标处理流程请参见“Mount & Workspace”。
运行该服务
Inverse 服务支持两种运行模式:
- 集成于Haply 中 (推荐) Haply 已预装最新服务版本,并在 Hub 打开时自动启动。无需手动设置;您将始终获得最新的修复程序。
- 独立模式— 使用Inverse Installer 将特定服务版本安装为Windows 服务或 Unix 守护进程。适用于持续集成(CI)、无头部署,或未运行 Hub 的机器。
管理独立服务
Windows — 打开“服务”应用:按下 Win+R, 输入 services.msc,找到“Haply Service”,右键单击 → 启动 / 停止 / 重启。
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 查看器