ある日の事、VR関連の案件を扱っているメンバーから
「VIVE TRACKERに外部入力を付けたいんですけど…」
と相談を受けました。
何故か社内ではハードウェアに詳しい人と認識されているみたいです。
機械いじりが好きなだけで決して詳しい訳ではないのですけど。
話を聞くと、どうやらVRで実際の業務に即した操作を模倣したいとの事。
VIVE TRACKERについては良く分かっていなかったので、Google先生に教えを請う事に。
VIVE TRACKERとは
VIVE TRACKER公式サイト
https://www.vive.com/jp/vive-tracker/
「VIVE トラッカー を使うと、現実世界のどんな物もVR空間に取り込めます!」
現実世界での位置情報(動き)を取得し、仮想世界に反映させる為のHTC VIVEのオプション。
…いや知りたいのは皆が知っているそんな事では無く。
VIVE Developers
https://developer.vive.com/us/vive-tracker-for-developer/
こちらがVIVEの開発者向けのページです。
このページに「VIVE Tracker Developer Guildeline」というリンクがあります。
※スペルミスがありますが、そのまま記述しています。
VIVE TRACKERの「技術仕様」がPDFファイルに纏められています。
この資料ではユースケースとして以下の5つが挙げられていました。
画像出展:https://dl.vive.com/Tracker/Guideline/HTC_Vive_Tracker_Developer_Guidelines_v1.5.pdf
…何だかとてもフリーダムな感じがするのは私だけでしょうか。
確認したところ、既にユースケース3の状態で運用しているようでしたので、ユースケース4または5に移行してやれば良さそうです。
VIVE TRACKERとアクセサリー間のインターフェイスを確認します。
POGO pin/USBでの通信が出来るようです。但し、USBでの通信はアクセサリー側にHID(ヒューマンインターフェイスデバイス)のホスト機能が必要です。
ここを自作する場合、少しハードルが高くなります。
※VIVE TRACKER(2018)ではアクセサリーとのUSB通信機能は削除されています。
POGO pinのほうも見てみましょう。
画像出展:https://dl.vive.com/Tracker/Guideline/HTC_Vive_Tracker_Developer_Guidelines_v1.5.pdf
出力が1系統、入力が4系統で信号は全てデジタル。3.3V系です。
入力端子は全て内部の抵抗でプルアップされていますので、GNDと短絡するだけでON/OFFの操作が出来ます。
出力端子は20mAほどしか流せないので、振動モーターを駆動するくらいでしょうか。
アクセサリー側の開発が楽になる反面、出来る事は限られそうです。
取り敢えずはユースケース5、POGO pinでの入出力で求められているものは実現出来そうです。
作ってみた
まずは検証用の基板を製作します。
ユニバーサル基板にタクトスイッチを4つ取り付けただけの簡単なもの。
今後の拡張を考慮し、POGO pinの信号をそのままスルーするヘッダーピンも取り付けます。
これで外部入力の検証が出来るようになりました。
出力端子に確認用のLEDでも付けておけば良かった…
製作時に困ったのがPOGO pinのピン間隔が3.5mmとちょっと特殊な事。
また、アクセサリー側の接点を少し嵩上げする必要があるため、工夫が必要です。
今回使用したユニバーサル基板はスルーホールの間隔が2.54mm。
そのまま接点を設けようとしてもピッチが合いません。
図の上側が2.54mmピッチ(◎)。下側が3.5mmピッチ(○)。
一番外側はほぼ無視出来る差しかありませんが、内側は基板に穴加工を行うか接点部分を補正する必要があります。
今回は接点部分の補正を行いました。
ピッチはこれで何とかなりましたが、接点部分の嵩上げが残っています。
これは単純にすずメッキ線をラジオペンチの先端でつまんで、くるり。小さなループを作ります。
ループの大きさは現物合わせです(笑)
これをそのまま配線材とし、基板に半田付けする事でPOGO pinとのコンタクト部とします。
すずメッキ線は1.0mmのものを使用しましたが、0.8mm程度のものを使用したほうが良いと思います。
動作確認したところ、上手く動いているようなので次は外部入力(スイッチ)の製作です。
今回の案件では
・つまみを捻って強弱の入力が欲しい。
・そんなにきめ細かくなくても良い。3段階くらいでも構わない。
との事なので4接点のロータリースイッチを使用しました。
結線図は以下のようになります。
図のようにつまみを捻る事で導通する接点が切り替わります。
これを検証基板のヘッダーピンに接続出来るように配線します。
単純ではありますが、一般的なスイッチの「押す」を「捻る」操作に変える事が出来ます。
後はプログラム側で導通したピンに応じて強弱の表現を変えれば、目的は果たせそう。
ちなみに完成したものがこちら。
これで一応求められていた機能は実現出来ました。
簡易な対応でモヤモヤ感はあるのですけど、少しずつブラッシュアップしていければと。
ロータリースイッチを16接点のものに変え、3~6ピン(4bit)の入力を同時に読み取れば16段階の強弱の入力も出来そうです。美しいかどうかは別ですが。
シリーズ化?
新たにVIVE TRACKERの出力で外部機器を制御したいとの要求をぶつけられています(笑)
上で製作した検証基板から出力信号を取り出して、リレー回路を介して別電源の機器のON/OFF制御を行います。
これで3.3V/20mAの制約を外す事が出来、色々と応用範囲が広がりそうです。
DC駆動の機器を接続する予定ですので、出力調整用にPWM回路も組み込むつもりです。
また、次回の投稿で紹介出来ればと思います。
出力編はこちら
https://www.widesoft.co.jp/technology/4297