Inverse3を使った開発
本記事はクイックスタートガイドの内容を前提とし、Inverse3をハプティック開発ツールとして紹介するものです。そのため、ハードウェア構成、制御方法、デバイスの動作を変える主要な機能など、さまざまな要素について説明します。
デバイスの利き手と座標系
Inverse3には、異なるシナリオに最適化された2つのハードウェア構成があります。

どちらのデバイスも左利きと右利きのどちらのユーザーでも使用できますが、状況によっては右利き向けに構成されたデバイスの方が使いやすい場合があります。
両手操作のシナリオで2台のデバイスを併用する場合は、衝突や干渉を最小限に抑えるため、左利き向けに構成されたデバイスを左側に、右利き向けに構成されたデバイスを右側に配置してください。

どちらのデバイスも、Inverse3のアーム側にあるデバイスプレートに表示された右手座標系に従います。座標系の原点は、取り付けプレートの平らな面上、中央付近に位置しています。
ご使用の言語またはプラグインに対応するInverseSDKのドキュメントを確認してください。SDKで提供される座標系は、ゲームエンジン固有の座標系にすでに準拠している場合があります。
Inverse3の制御
Inverse3の制御は力の制御に限られず、関節のトルクや角度を制御することも可能です。本セクションでは、各種制御モードと、それぞれに関連する入力と出力、およびその単位について説明します。
どちらのモードを使用する場合も、ユーザーとデバイスの双方に固有のリスクが伴います。安全に関する情報については、Inverse3 Safe Use を参照してください。
デカルト座標制御
力制御はInverse3を使用する際に推奨される方法です。力をニュートン (N), で入力し、位置をメートル (m) で、速度をメートル毎秒 (m/s) で返します。位置制御モードでは、Inverse3は指定された位置へ移動し、その位置を維持します。2つのモードは切り替えがシームレスであるため、併用することでより良いユーザー体験を提供できます。例えば、シミュレーションの開始時にデバイスをインタラクション可能なオブジェクトから遠ざけたり、トラッキングされたVerseGripを使用する場合は、ツールを切り替える際に位置制御モードでカーソルの位置を保持したりできます。

関節制御
同様に、Inverse3の関節トルクと角度を直接制御することができます。トルク制御モードでは、デバイスはニュートン・ミリメートル (N·mm) で指定されたトルクを発生させ、関節角度制御では、度 (°) 単位で指定された角度へ移動します。いずれの場合も、デバイスは位置を ° で、速度を度毎秒 (°/s) で返します。
カラーコード
Haplyのロゴのステータスライトは、デバイスの動作モードに応じて色が変わります。下の表は最新のファームウェアにおけるステータスライトの色を示しています(以前のファームウェアバージョンの色については、以下の レガシーのステータスライトの色 セクションを参照してください)
| 色 | ライトの点灯パターン | 状態 | 説明 |
|---|---|---|---|
| オフ | オフ | 未接続 | USB-Cのケーブルが切断されています |
| 赤 | 点滅 | ハンドシェイク未完了 | サービスへの接続が確立されていません |
| SOS点滅 | タイムアウト | 通信タイムアウトを検出しました。サービスからコマンドを受信していません | |
| 黄 | 点滅 | 未キャリブレーション・電源なし | 電源アダプターが接続されておらず、キャリブレーションが必要です |
| フェードイン/フェードアウト | 未キャリブレーション | デバイスのキャリブレーションが必要です | |
| 白 | 点灯 | アイドル | 有効な制御モードはありません |
| 点滅 | アイドル・電源なし | 電源アダプターが接続されておらず、有効な制御モードもありません | |
| 緑 | 点灯 | 力制御 | デバイスが力制御モードで動作しています |
| 点滅 | 力制御・電源なし | 電源アダプターが接続されておらず、デバイスは力制御モードです | |
| シアン | 点灯 | 位置制御 | デバイスが位置制御モードで動作しています |
| 点滅 | 位置制御・電源なし | 電源アダプターが接続されておらず、デバイスは位置制御モードです | |
| オレンジ | 点灯 | セーフティトリガー | 不安定な状態が検出され、セーフティトリガーが作動しました |
注: ステータスライトが赤のままの場合、USBがデータを正しく伝送できていない可能性があります。接続がしっかりしていることを確認するか、ケーブルを交換してください。ステータスライトが想定どおりのパターンにならない場合は、サポートリクエストを送信してください。
任意のパフォーマンス向上機能
Inverse3には、パフォーマンスと操作感を調整するための複数の機能があります。本セクションでは、これらの機能の概要と使い方を簡単に紹介します。
速度推定
速度は直接測定されるのではなく、位置データから算出されます。そのため、ノイズが多く不正確な信号につながることがあり、フィルタリングが必要です。Inverse3には、内蔵ハードウェアを活用し、追加のフィルタリングを必要としない速度信号を生成するオンボードの速度推定アルゴリズムが搭載されています。
なお、速度の推定値は近似値であり、完全に正確ではない場合があります。その性能と精度は、今後の改善に伴って向上する可能性があります。
重力補償
重力補償は、Inverse3の構成部品の質量によって生じる力を打ち消すため、取り付け向きに関係なく無重量のような操作感が得られます。シミュレーションの開始時には、デバイスに内蔵されたセンサーを使用してアルゴリズムのキャリブレーションを行います。動作中にデバイスの向きを変更すると、不安定な動作の原因となります。
重力補償は力制御モードでのみ動作します。

重力補償の強度は、重力スケーリング係数(デフォルトでは0.75に設定)を使用して調整できます。また、SDK固有のコマンドを使用してすべて無効にすることもできます(詳細はSDKリファレンスを参照してください)。
力のスケーリング
Inverse3は方向によって発生できる力の大きさが異なります。そのため、Inverse3の性能を超える力を発生させようとすると、意図した方向とは異なる方向の力が生じることがあります。力のスケーリングを有効にすると、力の方向は維持されたまま、その大きさが小さくなります。この機能はデフォルトで有効になっていますが、SDK固有のコマンドを使用して無効にすることもできます。
VerseGripの姿勢トラッキング
Inverse3でツールの姿勢をトラッキングするには、VerseGripが必要です。
VerseGripsの詳細については、はじめに: VerseGripの記事を参照してください。
レガシーのステータスライト
ファームウェア 7.4.x 以前
| 色 | 点灯パターン | 状態 | 説明 |
|---|---|---|---|
| オフ | オフ | 未接続 | USB-C のケーブルが切断されています |
| 赤 | 点滅 | ハンドシェイク未完了 | サービスへの接続が確立されていません |
| 紫 | 点灯 | 未キャリブレーション | デバイスのキャリブレーションが必要です |
| 点滅 | 未キャリブレーション・電源なし | 電源アダプターが切断されており、キャリブレーションが必要です | |
| 白 | 点灯 | アイドル | 制御モードが有効になっていません |
| 点滅 | アイドル・電源なし | 電源アダプターが切断されており、制御モードが有効になっていません | |
| 緑 | 点灯 | 力制御 | デバイスが力制御モードで動作中です |
| 点滅 | 力制御・電源なし | 電源アダプターが切断されており、デバイスは力制御モードになっています | |
| ロイヤルブルー | 点灯 | 位置制御 | デバイスが位置制御モードで動作中です |
| 点滅 | 位置制御・電源なし | 電源アダプターが切断されており、デバイスは位置制御モードになっています | |
| シアン | 点灯 | ダンピング安全機能 | 速度/力のダンピング安全機能が作動しました |
| ピンク | 点灯 | 安定性上限 | 繰り返し不安定な動作が発生したため、力の上限値が引き下げられました |
| バイオレット | 点灯 | 安定性アシスト作動 | 不安定な状態が検出され、力が自動的に段階的に低減されます |
| オレンジ | 点灯 | 緊急ブレーキ | 即時停止、緊急ブレーキが作動中です |
| 黄 | 高速点滅 | タイムアウト | 通信タイムアウトが検出されました |