自作ARヘッドセットを用いてシューティングゲームを作る ハードウェア編【Project North Star】
はじめに
こんにちは。ハッピーマウンテンです。
前回、Project North Starについて簡単な説明をしましたが、今回は実際に製作する方法について紹介しようと思います。よろしくお願いします。
では早速作っていきましょう。
仕様を決める
まず仕様を決めていきます。基本は公式と同じもので問題ないと思いますが、SLAM用のセンサがないので、今回はRealSense T265を追加します。
Intel RealSense T265
RealSense T265はインテルが開発したトラッキングセンサで、2つの魚眼カメラと6軸加速度センサを搭載しています。加速度の計算(積分とかカルマンフィルタかけたりとか)は全てセンサ内で行うので、手軽にトラッキングを行えるのが魅力です。
国内だとスイッチサイエンスさんで買えますが、割高なので直接輸入したほうが安いと思います。
T265以外にも、Structure Core使ったり、MPU6050+Arduino使ったりといろいろ試行錯誤がなされているようです。今後はそういうのもやりたいなと思っています。
それからディスプレイの焦点が75cmと25cmの2種類あるのでそれも決めてしまいます。今回は75cmを焦点とします。焦点によってディスプレイの取り付け部品が変わるようです。
材料を用意する
次に材料を用意します。公式の部品表やCADデータに載っている部品は日本で入手し難いものが多いので、日本国内で入手できる部品で代替していきます。代替するにあたって、ねじ径を変えるなど細かいところで手を加えました。変更した部品表をGoogleドライブに上げておきます。大半の部品はホームセンターで手に入ると思います。
ディスプレイ、ドライバ基板、リフレクタについてはSmart Prototypingさんで取り扱ってくれています。セットを買うのがお得です。これだけで2万5千円くらいしますが、ディスプレイの解像度がかなり高いようなので仕方ないですね。ちなみにラズパイ用のディスプレイを用いれば、解像度は落ちますが安価に入手できるようです。
ドライバ基板くらいなら自作できそうですが、ANX7530が入手できなかったので諦めました。
ここで悲報。現在リフレクタが売り切れているようです。なので、ディスプレイとドライバ基板だけ買って、リフレクタは後で自作することにします。
3Dプリンタで印刷する
大体の部品は3Dプリンタで印刷します。公式のデータの中(ProjectNorthStar/Mechanical/)に3D Prints.zipというファイルがあるので、それを解凍すると3Dデータが使用できます。もし3Dデータを改造したいのであれば、CAD.zipを解凍すればCADデータも使用できます。
解凍するとおそらく光学ブラケット部分がバージョン3とバージョン3.1に分かれていると思います。バージョン3.1では3Dプリントへの最適化が行われているようですので、そちらを使用されることをおすすめします。
一番大きいパーツである光学ブラケット部分は15時間くらいかかりました。それにしてもフィラメントの糸引きが酷い…印刷設定を見直す必要がありますね。
今回はRealSense T265を取り付けるので、そのためのマウンタを作ります。部品番号#120-004を改造して、上に取り付けられるようにします。RealSense T265は背面にM3のねじ穴が開いているので、そこを利用します。
こんな感じです。
3Dプリントは結構時間がかかる上に、そこそこ部品数も多いので、早めに始めたほうがいいかもしれません。
ちなみに使用したプリンタはAnycubic i3 Megaというやつです。安くて高精度なのでおすすめです。
アルミ板を加工する
ヘッドギア部分と光学ブラケット部分を固定するのに用いるアルミ板を加工します。公式データにAssm Drawing North Star Release 3.pdfという組立図がありますが、この組立図の最後の方にアルミ板の図面が載っているので、それを参考に2枚加工します。
図面では寸法は3×10×165mmですが、余裕をもって3×50×165mmでアルミ板を発注しました。これをシャーリングマシンで10mm幅に切断し、ボール盤で3か所穴をあけ、M2.6でタップを立てれば完成です。
別にここはM2.5でタップ立ててもいいんですが、その場合は、この部分だけ別にM2.5のねじを用意する必要はあります。
リフレクタを作る
Smart Prototypingさんのリフレクタが売り切れていたので、自作することにします。
リフレクタを自作するためにはアクリルを曲面に加工しなければなりませんが、方法はいくつかあります。
- アクリルブロックをフライスやマシニングセンタなどで切削する
- レジンを使って3Dプリントする
- アクリル板を熱して柔らかくしてから成型
ざっと思いついただけでこのくらいでしょうか。
アクリルブロックを切削
この方法で作っている人が多い印象でした。自分の学校にはマシニングセンタがあるので、この方法で作ることもできますが、アクリルの切削は割れたり溶けたりして難しいと聞いたので、断念。外注は高くなるので行いたくはないです。
3Dプリント
これはそもそもレジンを3Dプリントできるプリンタを持っていないので、作ることができません。
熱して成型
おそらくこの方法が一番手軽だと思います。アクリルは熱可塑性を持ち、熱変形温度も比較的低いので、簡単に変形させることができます。
redditに真空成型でアクリルを成型させている人がいたので、それを参考にします。
型を作る
まず型を作ります。公式データの中にリフレクタの3Dデータがあるので、それを参考にします。
こんな感じで、左右両方作ります。
これを3Dプリンタで印刷していきます。印刷設定は最高精度(0.1mm)にしています。
出来た型はこんな感じです。最高精度といっても積層印刷で結構ガタガタなので、紙やすりで軽くやすりがけしておきます(結局アクリルも磨くのでそんなに丁寧にやすりがけする必要はない)。
真空成型機を作る
次に真空成型用の機材を作ります。といっても100均の材料で作ることができます。
ここを参考に作りました。安く簡単に作れるのでいいですね。
真空成型する
そして板厚3mmのアクリル板を用意します。公式のデータではリフレクタの厚みは2.5mmですが、2.5mm厚のアクリル板が無かったので3mmで代用します。ホームセンターか、通販ならはざいやなどで購入するのが良いでしょう。
みんな大好きコモグラス。大きさはA4くらいのものを発注しました。これを100均で購入した額縁で固定します。
2枚購入して挟むのがいいと思います。
電気コンロで額縁ごとアクリル板を熱します。熱いので軍手をしましょう。今回は3mmとかなり分厚いので、しっかりまんべんなく熱する必要があります。アクリル板を押してみて簡単に変形するようになったらちょうどいいくらいだと思います(ここら辺は余裕が無くて写真撮れてないです。ごめんなさい)。
掃除機を真空成型機に繋ぎ、スイッチを入れておきます。型をセットして、柔らかくなったアクリル板を上からガバっと被せます。すると…
いい感じに成型できました。これを左右で1個ずつ作ります。
切断して磨く
成型したアクリルをリフレクタの形に沿ってコンターマシンで切断し、切断面をやすりでやすって仕上げます。その後、3Dプリンタの印刷跡が付いているので表面を耐水ペーパーとアクリサンデーで磨いていきます。
まず、耐水ペーパーで#1000→#1500→#2000→#3000の順に磨いていきます。結構根気のいる作業なので、諦めずに頑張りましょう。#1000で磨いた時点で細かい傷が無数について結構白く濁ると思いますが、それが目立たなくなるまで磨きます。目が粗いうちに傷や3Dプリンタの跡を無くしておいたほうが楽です。
水に浸けて磨きますが、このままだと傷が見えにくいので、こまめに布で水分をふき取って確認しましょう。
次にアクリサンデーで磨きます。その前に目が粗めのコンパウンドをかけておいたほうが良いかもしれません。柔らかい布にアクリサンデーを少量付け、磨きます。耐水ペーパーの時点で傷は目立たなくなっていると思いますが、アクリサンデーで磨くとかなり透明になります。
こんな感じです。端のほうがまだ白いので磨きが足りてないですが、疲れたのでこのあたりで完成と言うことで。リューターなどがあれば、もっと楽にできると思います。
ハーフミラー化する
これでリフレクタは8割くらい完成です。後はこれをハーフミラーにするだけです。
ハーフミラー化には車の窓ガラスに張り付ける用のフィルムを使います。今回使用したフィルムは透過率50%、反射率25%のフィルムですが、反射率はもう少し高いほうがいいと思います(ディスプレイの映像が薄くなってしまうため)。
曲面にフィルムを貼る方法については、
こちらのように細長く切る方法や、
こちらのようにヒートガンで熱して柔らかくする方法などがあります。今回は後者の方法で貼りました。
具体的な方法としてはリンク先の動画を見てもらえれば分かると思います。ヒートガンでフィルムを熱しながら、気泡を抜いていくように貼ります。
以上でリフレクタは完成です。単体の写真を撮り忘れたので、後でお見せします。
組み立てる
これで部品は大体完成したので、組み立てていきます。公式のデータにある組立図の通りに組み立てるだけです。組み立てに関しては、以下のリンクが参考になると思います。
Ryan Makes Stuff - Building Project North Star: Day 1
インサートナットの取り付け
インサートナットは、プラスチックなどの柔らかい部品に取り付けることで、ねじ穴の強度を高めるための部品です。上のリンク先にもありますが、穴にインサートナットをセットし、上からはんだごてを当ててプラスチック部分を柔らかくして圧入するのが簡単だと思います。
ディスプレイの取り付け
ディスプレイは裏面にリボンケーブルが貼られた状態で届くので、剥がす必要があります。リボンケーブルは非常に断線しやすいので、注意しながらゆっくり剥がしましょう。
リボンケーブルが剥がれたら、ドライバ基板に繋いでテストします。DPケーブルと5V電源も基板に繋ぎます。電源はUSBから取るのが簡単だと思います。秋月に電源用USBコネクタがあるので、それを使うのが簡単です。
無事動作することが確認できたので、組み込んでいきます。
こんな感じです。リボンケーブルの取り回しに苦労しましたが、両面テープで見えない場所に貼っておくのが楽です。
配線
3Dプリンタで印刷したフレームには配線用に隙間があったりするので、それを参考に配線していきます。今回はRealSense T265があるので、
- ディスプレイ用miniDP-DPケーブル
- ディスプレイ用電源USBケーブル
- 各種センサ用USB3.0microBケーブル ×2本
の計4本が必要です。amazonで適当なのを探して購入しました。一応ケーブルにも相性があるらしいので、極端に安いケーブルとかはやめておいたほうが良いと思います。
後はケーブルの長さについてですが、USB3.0(3.1Gen1)の規格でケーブル長が最大3mとなっているので、全て3mにしています。延長回路が組み込まれたケーブルならもっと伸ばせるようですが、バカみたいに高いので今回は3mで我慢します。
部品番号#113-000、#114-000にケーブル固定用の穴があるので、そこにインシュロックなどを使用してケーブルを束ねておくと装着時に動きやすくなります。
それにしてもUSB3.0のケーブルって極太ですよね…Project North Star内にはあまり隙間が無いのもあって、取り回しに非常に苦労しました。自分の使ったケーブルは、コネクタ部分がデカすぎてLeap Motion Controller部分の隙間に収まりきらなかったので、被覆部分を剥いて熱収縮チューブで覆っておきました。
ディスプレイ用の電源ケーブルはディスプレイ上面を通して左側に持ってきました。microBコネクタを用いて、USBから電源を取るようにしています。
先ほど作ったリフレクタを前面に接着します。取り外せなくなるので本当は接着したくないのですが、固定のことを何も考えずに作ってしまったのでこのままでいきます。3Dプリンタに使われているPLA樹脂はアクリル系の接着剤で接着できるそうです。アクリサンデーの接着剤かABN-1を使うのが良いと思います。
完成!
後は改造した部分にRealSense T265を取り付ければ完成です。
お疲れさまでした。
ちなみに作るの面倒って人へ
実はSmart Prototypingさんで完成品が売られてたりします。
多少割高ですが、組立&キャリブレーションまでやってくれているそうなので、「俺はソフトウェア開発がやりたいんだ!」って人はコチラを買ったほうが手っ取り早いです。
さいごに
クオリティ面で結構難がありますが、ハードウェア部分は一応完成したので、次回はソフトウェア部分をUnityを使って作っていきます。
ご覧いただきありがとうございました。