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

Haply Inverse SDK

これは Haply Inverse SDK は、WebSocketとHTTPを組み合わせた、Haply 製ハプティックデバイス向けの言語非依存インターフェースであり、その中には Inverse3、Inverse3x、 Minverse、VerseGrip、Wireless VerseGripなどが含まれます。このインターフェースはローカルサービスとして動作し、デバイス検出、シリアル通信、セキュリティ監視、ステータスストリーミングを処理します。これにより、アプリケーションは単一のソケットを介してJSONで通信するだけで済みます。

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

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

Haply ハブを使用した設置​

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

Haply

Haply

Haply 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)に関する完全なチュートリアル(力フィードバック、位置制御、複数デバイスを用いたセットアップ、マウント/ベースの構成、イベントストリーミングなど)は、「チュートリアル」ページでご覧いただけます。