跳至主要内容

Haply Inverse SDK

Haply Inverse SDK 这是一个与编程语言无关的WebSocket + HTTP接口,用于连接Haply触觉设备,包括 Inverse3、Inverse3x、Minverse、VerseGrip和Wireless VerseGrip。它以本地服务的形式运行,负责设备发现、串口通信、安全监控和状态流传输,因此您的应用只需通过套接字与JSON进行通信即可。

其功能包括:

  • 设备发现与管理— 通过HTTP REST API 自动列出并配置已连接的Haply设备。
  • 实时状态流传输— 通过 WebSocket 以可感知的速率(kHz 级别)传输设备状态。
  • 指令处理——以高保真度执行运动和位置指令,实现精确的触觉反馈。
  • 后台运行— 以本地服务形式运行,无需用户干预即可保持设备处于就绪状态。

使用 Haply Hub 安装​

最简单的入门方法是 Haply Hub——一款用于安装、运行、配置、测试和监控 Haply 设备的桌面应用程序。它能确保固件始终保持最新版本,内置 Inverse Service,并附带演示程序,让您在编写任何代码之前即可验证硬件。

Haply Hub

Haply Hub

下载Haply Hub的最新版本

下载并安装 Hub,连接您的设备,Hub 将引导您完成任何固件更新。安装完成后,只要 Hub 处于开启状态,Inverse Service就会在后台自动运行。

想要独立安装吗?

您也可以在不使用 Hub 的情况下,将特定版本的 Inverse Service 以系统服务(Windows)或守护进程(Linux / macOS)的形式进行安装。安装程序链接和说明请参阅“运行服务”。

快速示例​

连接服务,读取第一个Inverse3的光标位置,并发送零力心跳信号,使服务持续推送状态帧:

import asyncio, json, websockets

async def main():
# Connect to the Haply Inverse service WebSocket
async with websockets.connect("ws://localhost:10001") as ws:
# Read the first state frame to discover the device id
first_state = json.loads(await ws.recv())
device_id = first_state["inverse3"][0]["device_id"]

# Build a zero-force keepalive command targeting that device
keepalive = {"inverse3": [{
"device_id": device_id,
"commands": {"set_cursor_force": {"vector": {"x": 0, "y": 0, "z": 0}}}
}]}

# Realtime loop: one send per tick, then read the resulting state
while True:
await ws.send(json.dumps(keepalive))
state = json.loads(await ws.recv())
pos = state["inverse3"][0]["state"]["cursor_position"]
print(f"pos: {pos}")

asyncio.run(main())
注意

请谨慎调整力值。突然施加过大的力值可能会损坏设备,或导致意外情况。

信息

有关消息封装、端口和内容类型(content-type)规则,请参阅JSON 规范页面。

更多示例​

如需查看功能齐全的 Python、C++(nlohmann)和 C++(Glaze)教程(涵盖力反馈、位置控制、多设备配置、mount/basis 配置以及事件流),请参阅教程页面。