インバース3を使った開発
本記事は、クイックスタートガイドの内容を前提として、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ケーブルが外れています |
| 赤 | 点滅 | ハンドシェイクが完了していません | サービスへの接続が確立されていません |
| 紫 | 点灯 | 未校正 | デバイスのキャリブレーションが必要です |
| 点滅 | 未校正・電源なし | 電源アダプターが外れているため、キャリブレーションが必要です | |
| 白 | 点灯 | アイドル | 制御モードが有効になっていません |
| 点滅 | アイドル・電源なし | 電源アダプターが外されており、制御モードが有効になっていません | |
| 緑 | 点灯 | 力制御 | デバイスは力制御モードで動作中です |
| 点滅 | 力制御・電源なし | 電源アダプターが外されており、デバイスは電力制御モードになっています | |
| ロイヤルブルー | 点灯 | 位置制御 | デバイスは位置制御モードで動作中です |
| 点滅 | 位置制御・電源なし | 電源アダプターが外されており、デバイスは位置制御モードになっています | |
| シアン | 点灯 | ダンピング安全機能 | 速度/力のダンピング安全機能が作動しました |
| ピンク | 点灯 | 安定性の上限 | 不安定な動作が繰り返し発生したため、力の上限値が引き下げられました |
| バイオレット | 点灯 | 安定性アシストが作動しました | 不安定な状態が検出されると、力が自動的に段階的に低減されます |
| オレンジ | 点灯 | 緊急ブレーキ | 即時停止、緊急ブレーキが作動中です |
| 黄 | 高速点滅 | タイムアウト | 通信タイムアウトが検出されました |