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 查看器