本文へスキップ
バージョン: 3.5.x

Haply Inverse SDK

その Haply Inverse SDK は、Haply のHaply デバイス( Inverse3Inverse3xMinverseVerseGripWireless VerseGrip)への言語非依存のWebSocket + HTTPインターフェースです。これはローカルサービスとして動作し、デバイスの検出、シリアル通信、安全監視、状態のストリーミングを処理するため、アプリケーション側はソケット経由でJSONをやり取りするだけで済みます。

その機能には以下のようなものがある:

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

Haply を使ってインストールする

始めるのに一番簡単な方法は、 Haply です。これは、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)の充実したチュートリアルについては、「チュートリアル」ページをご覧ください。