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

チュートリアル

各チュートリアルは、Inverse Serviceの機能の一つを実演する独立したプログラムです。3つの言語バージョンが同梱されているため、各言語の表現方法を比較し、プロジェクトに適したスタックを選択することができます:

  • Python — 最も短く、最も簡単な入り口(websockets + json)
  • C++ (nlohmann/json)— 移植性の高い C++11 ライブラリ、実行時に解析される JSON
  • C++ (Glaze)— コンパイル時リフレクションとゼロアロケーション解析を備えた最新のC++20。リアルタイムのハプティックループに推奨されます。

ソースコードは、2つの公開サンプルリポジトリで公開されています:

  • haply — チュートリアルごとに1つのディレクトリが用意されており、nlohmann/json(C++11)とGlaze(C++20)の両方のバリエーションが含まれています。ビルドターゲットには -glz Glaze バリアントの接尾辞。
  • haply— チュートリアルごとに1つのディレクトリ。

Inverse Serviceの各リリースでは、両方のリポジトリに一致するタグが作成されます。以下の手順に従ってください: release/<version> このドキュメントに対応するバージョンを維持するためにブランチを作成してください。

前提条件

  • について 逆サービス が実行中である(以下のいずれかの方法で) Haply または スタンドアロンインストーラー) ポート 10001.
  • Haply 検出されました。各チュートリアルは特定のデバイスファミリーを対象としています。詳細は以下の表をご覧ください。
  • Pythonのチュートリアル: pip install websockets (チュートリアル04、05、06、07も必要です keyboard(Linuxでは、これを行うには管理者権限が必要です)。
  • C++チュートリアル: nlohmann バリアントには CMake 3.15 以降および C++11 対応コンパイラ、Glaze には C++20 対応コンパイラが必要です(-glz) バリエーション。サンプルリポジトリのトップレベル CMakeLists.txt 取得 libhv, nlohmann/jsonそして glaze FetchContent 経由 — 手動での依存関係の設定は不要です。

チュートリアル一覧

#名称デバイスバリエーション学習内容
00デバイス一覧いずれかPython · C++ · C++ GlazeHTTPデバイス検出、セッションスコープのクエリ
01Inverse3印刷Inverse3Python · C++ · C++ GlazeWebSocketの状態ストリーミング、ゼロフォース・キープアライブ、初回メッセージ・ハンドシェイク
02VerseGripを印刷Wired VGPython · C++ · C++ Glazeオリエンテーションのライブ配信、 probe_orientation keepalive、クォータニオン → オイラー
03印刷 ワイヤレス VGWVGPython · C++ · C++ Glazeボタン、電池、ホールセンサー
04こんにちは、フロアInverse3Python · C++ · C++ Glaze最初の触覚効果 — set_cursor_force ペナルティスプリング
05ポジション・コントロールInverse3Python · C++ · C++ Glazeset_cursor_position 操作方法:ランダムターゲット(C++)またはWASDキーを押したまま移動(Python)
06合計Inverse3 WVGPython · C++ · C++ Glazeマルチデバイス・ループ、クォータニオンから方向へのカーソル駆動
07ベース&マウントInverse3Python · C++ · C++ Glazeconfigure.basis, configure.preset、および実行時間 configure.mount オーバーライド;プリセットとマウント間の排他制御
08リモート設定(近日公開予定)いずれかPyHTTP 経由でのリモートデバイス設定;プロファイルによるセッション検出
10イベントPython · C++ · C++ Glazeポート10020のイベントストリームリスナー、レベル/名前のフィルタリング

ヒント — ハプティック・ループのベンチマークを行う

チュートリアル10(イベント)は、他のどのチュートリアルと並行して進められるように設計されています。 --no-hide-rate 有効にすると、そのサービスの system-rate-report このイベントには、デバイスの実効ティックレートが含まれています。同じチュートリアルの Python / C++ (nlohmann) / C++ (Glaze) 各実装間でレート比較を行い、約 4 kHz の制御ループにおけるシリアライゼーションのオーバーヘッドの影響を確認してください。

# Terminal 1 — pick a tutorial variant
./04-haply-inverse-hello-floor # C++ nlohmann
./04-haply-inverse-hello-floor-glz # C++ Glaze
python 04-haply-inverse-hello-floor.py # Python

# Terminal 2 — watch the rate
./10-haply-inverse-events --no-hide-rate