メインコンテンツへスキップ

Haply Inverse SDK

Haply Inverse SDK Haplyの触覚デバイス( Inverse3、Inverse3x、Minverse、VerseGrip、Wireless VerseGripといったHaplyの触覚デバイスに接続するための、言語に依存しないWebSocket + HTTPインターフェースです。これはローカルサービスとして動作し、デバイスの検出、シリアル通信、セキュリティ監視、ステータスストリームの転送を担当するため、アプリケーション側ではソケットを介してJSONで通信するだけで済みます。

その機能には以下が含まれます:

  • デバイスの検出と管理— HTTP REST API を使用して、接続済みの Haply デバイスを自動的に一覧表示し、設定を行います。
  • リアルタイムステータスストリームの送信— WebSocket を通じて、触覚制御レート(kHz レベル)でデバイスのステータスを送信します。
  • コマンド処理— 高精度な実行力と位置指令により、正確な触覚フィードバックを実現します。
  • バックグラウンドでの実行— ローカルサービスとして実行され、ユーザーの操作を必要とせずにデバイスを常時利用可能な状態に保ちます。

Haply Hub を使用してインストールする​

最も簡単な始め方は Haply Hub——Haplyデバイスのインストール、実行、設定、テスト、監視を行うためのデスクトップアプリケーションです。ファームウェアを最新の状態に保ち、Inverse Serviceを内蔵しており、デモプログラムも付属しているため、コードを記述する前にハードウェアの動作を確認することができます。

Haply

Haply

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)の完全なチュートリアルをご覧になりたい場合は、チュートリアルページをご参照ください。