Haply Inverse Service
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(只读) | 系统事件:安全、电量、连接、速率警告 |
| HTTP | 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 Inverse 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 查看器