メインコンテンツまでスキップ

Haply Inverse SDK

Haply Inverse SDK は、Haplyの触覚デバイス(Inverse3、Inverse3x、Minverse、VerseGrip、および Wireless VerseGrip)に対する、言語非依存のWebSocket + HTTPインターフェースです。デバイスの検出、シリアル通信、安全性の監視、状態ストリーミングを処理するローカルサービスとして動作するため、アプリケーションはソケット経由でJSONにより通信するだけで済みます。

主な機能は次のとおりです:

  • デバイスの検出と管理 — HTTP REST API を介して、接続されたHaplyデバイスを自動的に一覧表示し、設定します。
  • リアルタイム状態ストリーミング — WebSocket を介して、触覚制御レート(数kHz)でデバイスの状態を配信します。
  • コマンド処理 — 精密な触覚フィードバックのために、力と位置のコマンドを高い忠実度で実行します。
  • バックグラウンド動作 — ローカルサービスとして実行され、ユーザーの操作を必要とせずにデバイスの準備状態を維持します。

Haply Hub でのインストール​

最も簡単に始める方法は、Haply Hub を使用することです。これは、Haplyデバイスのインストール、実行、設定、テスト、監視を行うためのデスクトップアプリケーションです。ファームウェアを最新の状態に保ち、Inverse Service を同梱し、コードを1行も書く前にハードウェアを検証できるようデモも提供します。

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())
警告

力の値を変更する際は、十分にご注意ください。急激に大きな力の値を設定すると、デバイスが損傷したり、予期しない動作を引き起こしたりする可能性があります。

備考

メッセージのエンベロープ、ポート、コンテンツタイプの規則については、JSON の規約 ページを参照してください。

その他の例​

Python、C++(nlohmann)、C++(Glaze)で作成された、力フィードバック、位置制御、複数デバイス構成、mount/basis 設定、イベントストリーミングを扱う高機能なチュートリアルについては、チュートリアル ページを参照してください。