メインコンテンツへ移動

Haply Inverse SDK

Le Haply Inverse SDK は、Haply — いわゆる Inverse3、Inverse3x、 Minverse、VerseGrip、Wireless VerseGripといったハプティックデバイス向けの、WebSocket + HTTPに基づく言語非依存のインターフェースです。[email protected] — これはローカルサービスとして動作し、デバイスの検出、シリアル通信、セキュリティ監視、ステータスの配信を管理するため、アプリケーション側はソケットを介してJSONで通信するだけで済みます。

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

  • デバイスの検出と管理— REST HTTP API を通じて、接続されたHaply デバイスを自動的に検出・設定します。
  • リアルタイムの状態配信— WebSocketsを介して、デバイスの状態をハプティック制御周波数(数kHz)で送信します。
  • コマンド処理— 力および位置のコマンドを高い精度で実行し、正確なハプティックフィードバックを実現します。
  • バックグラウンドでの動作— ローカルサービスとして実行され、ユーザーの操作を必要とせずにデバイスを常時利用可能な状態に保ちます。

Haply ハブを使用した設置​

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

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())
ご注意

力の値の変更は慎重に行ってください。力の値を急激に高く設定すると、本機が破損したり、予期せぬ動作を引き起こしたりするおそれがあります。

インフォメーション

メッセージのエンベロープ、ポート、およびコンテンツタイプのルールについては、「JSON 規約」のページをご覧ください。

その他の例​

Python、C++(nlohmann)、C++(Glaze)に関する包括的なチュートリアル(フォースフィードバック、位置制御、マルチデバイス構成、マウントおよびベースマークの設定、イベントフローなどを網羅)については、「チュートリアル」ページをご覧ください。