Haply Inverse Service
Inverse Service は、お使いのマシン上でバックグラウンドプロセスとして動作し、Haplyハプティックデバイスをリアルタイムでお使いのアプリケーションに接続します。アプリケーションのコードより下の層で、デバイスの検出、シリアル通信、安全監視、状態のストリーミングをすべて処理するため、体験の構築に集中できます。
要件と互換性
このサービスは主要なデスクトッププラットフォームで動作し、WebSocketクライアントとJSONパーサーを備えた任意の言語から操作できます:
- プラットフォーム: Windows 10以降(MSVC)、Linux(
.debパッケージ)、macOS - 言語: Python、JavaScript / TypeScript、C++、C#、Rust、Go、Java、… WebSocket + JSON に対応したあらゆる言語
公式にサポートされている連携
Haplyは、Haply Inverse Unity Package、Toia、Geomagic Freeform、NVIDIA Isaac Lab 向けの公式連携を提供・保守しています。
これら以外にも、WebSocketクライアントとJSONパーサーを備えたプラットフォームやランタイムであれば、このサービスを利用できます。当社では、Unreal Engine、TouchDesigner、その他のリアルタイムやシミュレーション用のスタックと併用して動作を確認しています。お使いの環境でWebSocketを開ければ、Inverseデバイスを操作できます。
言語ごとのサンプルについては、公開サンプルリポジトリを参照してください: C++とPython。
通信インターフェース
このサービスは2つの通信チャネルを公開しています:
| チャネル | ポート | トランスポート | 用途 |
|---|---|---|---|
| シミュレーション | 10001 | WebSocket | リアルタイムのコマンド / 状態ループ(1メッセージ入力 → 1状態出力) |
| イベント | 10020 | WebSocket(読み取り専用) | システムイベント: 安全、バッテリー、接続、レートの警告 |
| HTTP | 10001 | REST | ステートレスな設定クエリ、設定、セッション管理、デバイス情報の確認 |
すべてのペイロードはJSON形式です。標準のエンベロープ、ポート、コンテンツタイプのルールについては、JSONの規約を参照してください。
ユースケース
| 目的 | 開始場所 |
|---|---|
| 力や位置の目標値をハプティックデバイスに送信 | リアルタイム制御 |
| 設定: 基底、マウント、プリセット、フィルター | セッション設定 |
| シーンをナビゲート(レート制御による移動) | ナビゲーションモジュール |
| システムイベントを受信(安全、バッテリー、接続) | イベントと監視 |
| サンプルで学ぶ | チュートリアル |
座標系
Haplyの内部座標系は右手系、Z軸上向き(+X 右、+Y 前方、+Z 上)です。単一の基底の置換を使用して、アプリケーションの座標系に変換できます。一度設定すると、すべての入力と出力が自動的に変換されます。
シーン内でデバイスの位置を決める変換は2つあります:
- マウント — デバイスの物理的なオフセット(プリセット経由、または明示的に設定)
- ワークスペース — カメラ / シーンのナビゲーション用の実行時のドリフト(手動、またはナビゲーションモジュール経由で設定)
座標変換パイプライン全体については、マウントとワークスペースを参照してください。
サービスの実行
Inverse Serviceは2つのモードで実行できます:
- Haply Hubに組み込み(推奨)— Haply Hubには最新のサービスバージョンが含まれており、Hubが開いているときに自動的に起動します。手動の設定は不要で、常に最新の修正を利用できます。
- スタンドアロン — Inverse Installerを使用して、特定のサービスバージョンをWindowsサービスまたはUnixデーモンとしてインストールします。CI、ヘッドレス環境へのデプロイ、Hubが動作していないマシンでの利用に便利です。
スタンドアロンサービスの管理
Windows — サービスアプリを開きます: Win+Rを押し、services.mscと入力して、「Haply Inverse Service」を探し、右クリックして「開始」「停止」「再起動」を選択します。
Linux (systemd):
systemctl start haply-inverse-service.service
systemctl stop haply-inverse-service.service
systemctl restart haply-inverse-service.service
systemctl enable haply-inverse-service.service # auto-start on boot
APIリファレンス(完全版)
すべてのエンドポイントとメッセージについて、機械可読な完全な仕様は以下のとおりです:
- HTTP APIリファレンス (OpenAPI) — インタラクティブなSwagger UI
- シミュレーションAPIリファレンス (AsyncAPI) — インタラクティブなAsyncAPIビューアー