Project North Star Update3 の作成
はじめに
1月に機構がアップデートされたProject North Star Update 3を作ってみました。 きっかけは今年の初めに参加した某ミートアップで結構多くの人が3Dプリンターを所持しているようで私も買わないとこのビッグウェーブに乗れないなと思い、6万ぐらいのプリンターを買いました。買ったプリンターを有効活用したいと思い色々考えて、Project North Starのことを思いつきました。 周りの人の話で、リフレクターを仕上げるのが難しいという話で大変そうだなとは思っていましたが、ちょうど参加したミートアップですでに出来上がったリフレクターが買えるという話を聞き、それなら結構簡単にできるのかもと思い製作を決意しました。
作成の結果感想としては、
- パーツのプリントに時間が結構かかる(私のプリンターで1週間ぐらい)。そしてプリントしてたものが歪んでてショックだったことも...
- 図面通りのネジ、部品が日本では入手困難なものがある。
- 部品が揃えば組み立て、アプリ立ち上げはそんなに大変じゃない。
- 自作ガジェット(とは言っても説明書通りに組み上げただけだが)を作った達成感を味わえる。
と言ったところです。
懸念として現在、私が購入したディスプレイのドライバーボード(https://www.smart-prototyping.com/Project-North-Star-Display-Driver-Board)が品切れのようで、すぐに入手できないと思われます。ドライバーボード、ディスプレイ基盤が入手できない場合はexiiiさんが公開されている簡易版(https://exiii.jp/2018/07/19/project_north_star_jp-2/)を製作すると良いと思います。 というか基盤系の入手難易度が理由だか、この記事のようにgithubのProjectNorthStarのレポジトリみて作るほうがマイナー? とりあえず可能な限り忠実にgithubのProjectNorthStarのレポジトリの指示通りに作成しましたが、結構お金かかるのでお気をつけください。 なおPCはWindows10、GTX1070 Max-Qのものを使用して動作確認しました。 また説明が結構適当でメモ書きみたいになっており申し訳ございませんが、不明点があれば質問願います。
材料費
- 基盤: $80 (約9000円)
- ディスプレイx2 :$65x2 (約14500円)
- リフレクター: $40 (約4500円)
- LeapMotion: 9900円
- 3Dプリンターフィラメント代: 1000円ぐらい?
- MiniDisplayPort-DisplayPortケーブル:2000円
- USB2.0ケーブル:200円
- ボルトナットスプリング類:計4000円?
- ジャンパーワイヤー:500円程度?
- (溶接ヘルメット 3000円)
概算で48700円ですね。もっともジャンパーワイヤーやLeapMotionなど過去に買っていたものを流用したので、実際は3万程度追加で使ったかなという印象です。
手順説明
設計図などのダウンロード
githubのレポジトリを一式ダウンロードします。特にMechanicalのなかの North Star Release 3 3D Files/3D Printing STL.zip にフレームの3Dデータ(.stl)が保存されているので、こちらを解凍します。 GitHub - leapmotion/ProjectNorthStar: The open-source files comprising Leap Motion's Project North Star AR Headset. こちらの部品を揃えていきます。
購入が必要なパーツ
- LeapMotion: 私は前から持っていましたが、最近はどこで買うのがいいのでしょうか? とりあえずアマゾンでありそうだったので貼っておきます。
基盤(ディスプレイ用のドライバーボード) 左右のディスプレイを接続できるようになっています。またminiDisplayPortを搭載しており、PC側DisplayPortで接続します。 $80かかります。 Project North Star Display Driver Board
ディスプレイ(1440x1600) x2
リフレクタに投影する映像を表示します。こちらが二つ必要です。$65 x 2=$130かかります。 www.smart-prototyping.comリフレクタ 反透過で現実空間を観れる一方、現実空間にディスプレイの映像が重ねられて表示され、AR体験ができます。 こちらは左右で1セットになっています。$40です。 Project North Star Lens
DisplayPort Mini - DisplayPort ケーブル 上述基盤とPCを接続します。Smart PrototypingのHPには1mのケーブルが良いということでしたが、2mのケーブルでもいけました。
https://www.yodobashi.com/product/100000001002134414/
- 5V電圧供給用ケーブル: 基盤に+-のピンが取り付けられており、そこに5V電圧で電力供給する必要があります。お手頃なのは安いUSB2.0ケーブルを買ってきて、USB Aオス側を残して逆側を切断し、電源供給用の線2本をジャンパーワイヤーと接続してピンに取り付けるのが楽だと思います。(USB 2.0ケーブルはなんでも良いと思います。私は秋葉原で200円ぐらいのものを買ってきました)
配線4本のうち、5V電圧の+-となる赤黒のみを使用します(データ転送用の緑白は使いません) なお基盤の販売サイトにも注意書きとして書いてますが、基盤のピン二つの+(赤、MiniDisplayPort側)と-(黒、MiniDisplayPortからみて奥側)の順序を間違えないようにしてください。逆流防止のダイオードは組み込まれておらず、最悪基盤が破損するようです。
(参考)USB2.0の生贄ケーブルですが、アマゾンで調べたらこの辺りがヒットしました。 Amazon CAPTCHA
ジャンパーワイヤ:上記のUSB2.0ケーブルの赤黒の導線を接続し、基盤に刺して電力を供給します。 (参考) https://www.amazon.co.jp/uxcell-%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%97%E3%83%AF%E3%82%A4%E3%83%A4-%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%91%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC-1%E3%83%94%E3%83%B3%E3%83%97%E3%83%A9%E3%82%B0-%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC/dp/B01BV68CYW/ref=sr_1_19?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%82%B8%E3%83%A3%E3%83%B3%E3%83%91%E3%83%BC%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB&qid=1555133234&s=diy&sr=1-19
ボルト・ナット類
M4x0.7ナット(660-001) ヘッドセットのメインフレーム(パーツ番号110-001)と左右のレール状の部分(113-000,114-000)を固定するためのものです。こちらは110-001側に取り付けます。下のセットにM4用のナットがあるので、そちらを買えば不要かもしれないです? Amazon CAPTCHA
M4x20mm ,M2x8mm ボルトなどを含むボルト・ナットセット。 M4x20mm(640-002): ヘッドセットのメインフレーム(パーツ番号110-001)と左右のレール状の部分(113-000,114-000)を固定するためのものです。こちらはセットになっており、次に記載しているM2x8mmも入っております。ただし20本しか入っておらず、足りません... M4x20mm単体で手に入るならそれを買ったほうがいいかもしれません。 https://www.amazon.co.jp/gp/product/B07PB8MDDT/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1
M2x8mm(650-001) : こちらはいろいろなところで使うので(図面中には28本分登場する)、追加で購入しました。 www.amazon.co.jp
M2.5x6mmボルト(640-001):20個以上? ただしプラスチックが仕込まれていてパーツに溶け込む特殊なM2.5ナット?( 690-001)が入手できず実際あまり使用しませんでした。 Amazon CAPTCHA
ワッシャー(670-001): こちら完全に失念してました。M4x20mmのボルトと使うようです。オススメのものあれば教えてください。
ヘッドバンド 公式の図面のパーツだけだと、頭に固定できないので、溶接用ヘルメットのヘッドバンド部分を使いました。 ヘッドバンド単体のものもAmazonで注文したのですが、未だ届かず、Prime対応のものを追加購入しました。 Amazon CAPTCHA
今なら単体のものも再入荷しているようです。 Amazon CAPTCHA
- 3Dプリンター用フィラメント(黒) 私の保有している3Dプリンター(CR-10S)で使用したフィラメントです。他のものでもいいと思います。なお3Dプリントを外注する方は不要です。 https://www.amazon.co.jp/gp/product/B07KXSWHBB/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&psc=1
3Dプリントが必要なパーツ
3Dプリンターは初心者でいまいち適切な設定がまだわかっておりませんが、 普通にstlファイルをスライスソフトで読み込み、接地面が最大になりそうな方向に回転させ、65mm/s、積層ピッチ0.2mm、ラフトありで印刷しました。 以下がプリントが必要なパーツです。
メインフレーム側
HMDメインフレーム(110-001) メインとなる部分。ディスプレイ、リフレクターを取り付けるフレームとなります。一番綺麗に印刷したほうがいいパーツだと思います。ちなみに私のプリンターなら分割なしで印刷できましたが、0.2mm積層ピッチで14時間ぐらいかかりました。
Facial インターフェース (115-001):おでこと接触するパーツ。
Leapmotion固定フレーム(120-001): Leapmotionを取り付けるフレームで、メインフレームの上側に来るパーツです。次に説明する基盤を取り付けるパーツ121-000がその上にきます。
基盤固定フレーム(121-001): 基盤を取り付けるパーツです。 上記のLeapmotionを取り付けるフレームの上にくるパーツです。
基盤固定パーツ(121-002): 基盤のMiniDisplayPort付近を固定するパーツです。ただこれをつけると基盤の5Vピンとぶつかってしまうのと、なくても一応なんとかなるので組み立て時は使用しませんでした。Release3.1バージョンではピンの部分がかけていて、ピンが通せるようになっているみたいです。
上蓋(120-002): 上記の基盤を取り付けたパーツ121-001を上から蓋するパーツです。T265とかD435iとかStructure Coreで6DoF化したり、Mappingしたりする場合はここを差し替えるのだと思います。
Display固定パーツ(111-001:左 112-001:右 または 111-002:左 112-002:右) ディスプレイをはめ込み、メインフレームにディスプレイを固定させるためのパーツです。薄くてディスプレイとリフレクターへの距離が遠くなるバージョン(111-001、112-001)と 厚くて距離が近くなるバージョン(111-002、112-002)の選択になります。私は組み立ての部分で述べますが、薄いバージョン(111-001,111-002)を選びました。
頭部側面関連
メインフレーム接続パーツ 左右 (113-000,114-000) メインフレーム(110-001)とスライド式の側面パーツを繋げる部分です。スライド機構のレールとなるパーツ(900-005)をM2.5ボルトで固定します。
スライド機構用レール(900-005) x2 スライド部分(230-002,240-002)を通して、HMDを前後に調整できるようにするためのレール部分です。図面では6061のアルミニウム合金を使用するよう指定されていますが、加工が大変そうなので、こちらも3Dプリンターで作成しました。なお、レールの断面部分は少し小さめに(1mmぐらい)印刷しないとスライド部分をレールに通した時キツキツとなってしまい可動できなくなるので注意が必要です。
レール終端キャップ(110-002)x2 レールからスライド部分が抜け落ちないようにストッパーとなる部分です。
頭部上面固定関連
スライド部分(230-002,240-002) レールを通して、HMDを前後調節できるようにするパーツです。
スライダー取り付け部分(複合パーツ番号230-000,240-000)
- 円形状パーツ(220-001) x2
- 円形状パーツ(220-002)x2
- S形状のパーツ(230-001,240-001) 左右
- スライドブレーキ(230-003,240-003) 左右
- ケーブル止めフック(230-004,240-004) 左右
頭部上面メインパーツ(210-001) おでこ辺りの1/4ドーム形状のパーツです。
頭部上部頭側パーツ(210-002) 上の1/4ドーム形状のパーツの内側に取り付けるパーツです。本来はウレタンフォームなどをここに挟んで頭へのクッションにするものと思われます。 なおこちらのパーツ印刷後にドーム形状のパーツに沿うように曲げないといけませんが、私はコンロで炙りながら少しづつ曲げました。
組み立て
基本は図面通りに組み立てていけば大丈夫です。 私は以下の順に組み立てました。(NorthStarの図面を転載)
左右のレール部分を組み立て
メインフレームにディスプレイ、左右のレールを取り付け
なお図面中の3番(690-001)の特殊なナット(加熱しながら部品の穴に入れると溶けて入り込む)が入手できなかったため、薄いバージョンを選び、4箇所の穴を少し広げ、ディスプレイ側からM2のナットを入れ、メインフレーム側からM2x8mmボルトで固定しました。なお図面でM2.5ボルトとM2.5の特殊ナットを使うペアが何箇所が出てきますが、ナットが手に入らないため全て無視しました。
基盤を基盤用の台に取り付け
基盤の台をLeapMotionを搭載する上側フレームに取り付け、上蓋で閉じる。上蓋で閉じる前に基盤へMiniDisplayportを繋いで、上蓋の溝にケーブルを合わせて閉じるとケーブルがすっぽり埋まって良い。
上側フレームをメインフレームに取り付け。
レールに通すスライダーの作成(左右対称)
頭の上に乗るドーム部分の作成。なお3,4番はそのままつけるのではなく、6で作成したスライダーの穴に通してからつけるものと思われる。
スライダー部分とメインフレーム部の結合
完成図
なお図面の通りに組み立てて完成させても、頭に組み立てたNorthStar一式を固定することができず、ヘルメット形状の何らかの支えが必要になります。 他の方もよくやっているようですが、溶接ヘルメットの頭部固定部分を流用しました。 なお面の部分無しバージョンが配達に時間がかかるようで、一方面付きのバージョが3000円でしかもPrimeで買えるのでこちらを買いました。面はそのうち溶接したくなった時に有効活用します。
ディスプレイの接続確認
ディスプレイドライバーをMiniDisplayPort経由でPCに接続および電源をUSBなどで供給(PCなどのUSBポートですと電力供給不足でディスプレイがチカチカするだけで起動しないなどのことがあるので、USB電源アダプター経由で電源供給してください。なお私は当初5V-2.4Aのアダプタを使おうとしていましたが、電力供給が足りないらしく5V-3Aのものを追加購入しました。当初は5V-2AのアダプタとUSBケーブルを二つ用意し、並列でつなぎ電流をあげていましたが、試行錯誤しているうちにケーブルを買い換えたのもあるのか、5V-3A、USBケーブル1本で供給が十分になりました。
ディスプレイがしっかりと表示されたら、PCからNorthStarのディスプレイ2枚が1枚の追加ディスプレイとして認識されているはずです。ディスプレイ設定で「ディスプレイの拡張」を選択してください。 PC側ではNorthStarの2枚のディスプレイを1枚と認識しており、ここに真ん中で半分に分かれた映像を表示し、それが左右のリフレクターにそれぞれ投影され立体的に見えるという仕組みです。スマホVR・ARの仕組みに近いと思います。
アプリ起動
LeapMotionのドライバーのダウンロード
必ずLeapMotionのgithubのページのzipを解凍してexeを実行してインストールしてください。(公式サイトのものだと動かなかったです) 確認時点ではLeapDeveloperKit_4.0.0+52238_win.zipというファイル名でした。 UnityModules/Multidevice Service at feat-multi-device · leapmotion/UnityModules · GitHub
Unity2018.2 以降?のダウンロード
2018.2以降が必要であることが、Project North Starのレポジトリのページに記載されています。
LeapMotionのUnity Plugin(unitypackage)のダウンロード、プロジェクトへの読み込み。
githubのProjecrNorthstarページからpackageをダウンロード、Unityプロジェクトにインポートしてください。 github.com
サンプルシーンはAssets->Plugins->LeapMotion->North Star->Scenes->NorthStarです。
キャリブレーション
ヒエラルキーのAR CameraRigのwindow Offset ManagerのX Shiftの値を変更して、NorthStar実機のスクリーン上にゲームシーンが表示されるように調節してください。 値変化後にMove Game View to Headsetを押すことで画面を表示することができます。(押せば押すほどゲームビューが増殖するので、適宜Close all Game Viewsを押してゲームビューを消してください。
また、AR CameraRig->Head -> Leap Providerのxyzを変更することで、手の表示位置を調整することができます。
おまけ
とりあえず間も無く新しい時代がやってきますが、それを記念して元号の手話(平成、令和)を識別するジェスチャーを作ってみました。
令和と平成を実装。誤検出除去がなかなか難しそうだが、ジェスチャー作り面白い。#projectnorthstar #令和 #平成 pic.twitter.com/U0lECBJbHR
— higrademe (@EL2031watson) 2019年4月17日