Haply 逆サービス
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ビューア