本文へスキップ

Haply Inverse SDK

Haply Inverse SDKは、言語に依存しないWebSocket + HTTPインターフェースであり、Haply のハプティックデバイス(Inverse3、Inverse3x、 Minverse,VerseGrip,Wireless VerseGrip)にアクセスできるようにします。ローカルサービスとして実行され、デバイスの探索、シリアル通信、安全監視、およびステータスのストリーミングを処理するため、アプリケーション側ではソケットを介してJSONを使用するだけで済みます。

主な機能は以下の通りです:

  • デバイスの検出と管理— HTTP REST API を通じて接続されたHaply デバイスを自動的に一覧表示し、構成します。
  • リアルタイムの状態ストリーミング— WebSocketsを介して、ハプティック制御サイクル(数kHzレベル)でデバイスの状態を送信します。
  • コマンド処理— 精密なハプティックフィードバックを実現するため、力および位置のコマンドを高精度で実行します。
  • バックグラウンドでの動作— ローカルサービスとして実行され、ユーザーの操作を必要とせずに、デバイスをいつでも使用できる状態に保ちます。

Haply Hubのインストール​

始めるのに最も簡単な方法は、**Haply Hub**です。これは、Haply デバイスのインストール、実行、設定、テスト、および監視を行うためのデスクトップアプリケーションです。ファームウェアを最新の状態に保つことができ、Inverse Serviceバンドルやデモも含まれているため、コードを書く前にハードウェアを確認することができます。

Haply

Haply

Haply Hubの最新バージョンをダウンロード

Hubをダウンロードしてインストールし、デバイスを接続すると、Hubがファームウェアの更新手順を案内します。インストールが完了すると、Hubが開いている間は、バックグラウンドでInverse Serviceが自動的に実行されます。

スタンドアロンでのインストールをご希望ですか?

Hub を使用しなくても、Inverse Service の特定のバージョンをシステムサービス(Windows)またはデーモン(Linux / macOS)としてインストールすることができます。インストーラーのリンクおよび説明については、サービスの実行に関するドキュメントを参照してください。

簡単な例​

サービスに接続して、最初の Inverse3 のカーソル位置を読み取り、力が 0 のキープアライブ(keepalive)を送信することで、サービスがステータスフレームのストリーミングを継続するようにします:

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)を使用した全機能チュートリアル(力フィードバック、位置制御、複数デバイスの設定、マウント/ベースの構成、イベントストリーミングを含む)については、チュートリアルページをご覧ください。