見出し画像

ProjectNorthStarをRealsense™️ T265で6DoF化してみた【ノンコーディング】


この記事はLeapmotion社がオープンソースで(Apache License 2.0)公開しているARHMD"ProjectNorthStar"を6DoFに対応し、部屋を歩き回れるようになるまでの方法を解説したものです。


0.はじめに

ProjectNorthStarとは、Leap Motion社によってオープンソース化されたARヘッドセットです。オープンソースなため組み立てに必要なソフト・ハードの設計図が公開されています。視野角が100度以上・片目1600×1440の高解像度・ハンドトラッキング・PC駆動・光学シースルー(視界を阻害しない)とてんこ盛りの内容になっています。

オープンソース化されているため改良版がいくつか世の中に出回っており、そのなかでもexiiiさんによる簡易版ProjectNorthStarは日本でも購入できる部品で再構成されているため、僕のような学生でも製作することができます。しかし、これらのProjectNorthStarでは位置・加速度などを取得していないため、製作できるコンテンツに制限がありました。ArduinoやViveトラッカーを装着して独自に3DoF・6DoF対応している方もいました。そんな中登場したのが、今回のRealsense™️ T265です。

Realsense™️ T265は、スタンドアロンで動作する Intel製インサイドアウト方式トラッキングデバイスです。 搭載したIntel Movidius Myriad 2.0 VPUにより、 1.5Wという省電力・小さなサイズでV-SLAMを実現可能な点が魅力的です。今回はこのRealsense™️ T265(以下T265)を使って、ProjectNorthStarを6DoF化し歩き回れるようにしたいと思います!


1. デバイスの動作確認

まずはRealsense™️さんのHPからT265を購入しましょう。公式から購入すると$199.00スイッチサイエンスさんだと¥29,565 なので公式から購入しましょう。それにしてもこんなものが$199(+送料)で手に入るなんてなんて素晴らしい世界なんだ...


T265が到着したら、さっそく動作確認を行います。公式が配布しているViewerをGitHubからダウンロードします。この後で使用するので「Intel.RealSense.Viewer.exe」と「Intel.RealSense.unitypackage」の2つをダウンロードします。(記事内はIntel® RealSense™ SDK 2.0 (build 2.19.0)を使用)

アプリケーションをダウンロードできたら、Intel.RealSense.Viewerを起動してみましょう。

PCにT265を接続し、左上メニューの「Tracking Module」を On にすると、デバイスが取得している情報(魚眼カメラ画像・加速度など)のビジュアラーゼーションを見ることができます。

右上で2D/3Dモードが切り替えられるので、T265のトラッキング精度を確認します。なかなか自己位置推定の精度が高くてビビりますよね...これでT265とお友達になれた気がする人は次のステップに進みましょう!


2.UnityでProjectNorthstarとT265を組み合わせる 


まずは、Unity(今回は2018.2.21f1)でT265の動作確認(2回目)を行います。こちらの記事でもやり方が詳しく紹介されているので非常に参考になります。

①適当な名前をつけて3Dのプロジェクトを立ち上げます。今回は、「T265_test」というプロジェクト名にしました。


②プロジェクトが立ち上がったら、Asset>Import Package>Custom Packageから先ほどGitHubからインストールした「Intel.RealSense.unitypackage」をインポートします。すべてチェックがついている状態で大丈夫です。 


③インポートが完了したら「Assets/RealSenseSDK2.0/Scenes/StartHere」というシーンをダブルクリックし、シーンを再生します。

もし正常にT265が接続されている場合はここで「SLAM(Pose)」というカテゴリがゲームビューに出現します。このシーンではT265が計測したの位置・姿勢に応じて T265 のモデルを表示+軌跡を表示するものです。以下のようなゲームビューを確認できたら準備はバッチリです!!!

ここでもし「Connect A RealSense Device」というエラーが表示されたら、USBの抜き差しや再起動などして対応しましょう。僕は半日ほっといたら治りました


④T265の準備が終わったら、ProjectNorthStarの動作確認とキャリブレーションを行いましょう。この部分に関しては素晴らしいエンジニアの方々がキャリブレーション方法をやさしく解説してくださっているので、おんぶに抱っこでサクサク進めていきましょう。唯一注意するべき点は、同じプロジェクト内に「LeapAR.unitypackage」をインストールすることです。

※自分は最新のLeapAR.unitypackageをUnityにインストールした際に怒られが発生したので旧バージョンを使用しました。

正常にProjectNorthStarが動作することを確認したら、早速組み合わせていきましょう。もうここまできたら6DoF化は70%終わったも同然です。


「ctrl+s」忘れずに!


④「Assets/RealSenseSDK2.0/Scenes/Samples/SLAM」シーンのヒエラルキーにある「Pose・RsDevice」の2つをコピーし、「Assets/Leapmotion/NorthStar/Scenes/Northstar」シーンのヒエラルキーに貼り付けます。

この「RsDevice」というコンポーネントがT265の情報を取得し管理している重要な役割を果たしています。「Pose」というオブジェクトは取得した情報をビジュアライズするのが主な役割のようです。

コピペ後、RsDeviceコンポーネントのインスペクタービューを見て、StreamをPose・Formatを6DoFの設定になっているかチェックしておきましょう。ここがちゃんと設定できてないとエラー吐かれます。
引用:http://tips.hecomi.com/entry/2019/03/21/224437


⑤「Assets/Leapmotion/NorthStar/Scenes/Northstar」のシーン再生してRealSense T265の動きをちゃんと取れているか確認しましょう。もし取れていない場合はそもそもPCがT265を認識していない可能性があるので、Viewerで確認/USB抜き差しを行ってみましょう(たまにUnityでのみ反応しなかった)。


⑥NorthStarシーン「ARCameraRig/LeapOdmetryOrigin/ARHeadsetHalo~」を選択し、インスペクタービュー上のAdd component から「RsPoseStreamTransformer」をアタッチします。


Sourceには、ヒエラルキーに存在する「RsDevice」をアタッチします。


⑦確認用に適当なキューブを配置しましょう。このままだと大きすぎるので、Scaleを(0.3, 0.3, 0.3)に変更します。また、視認しやすいように明るい色にするとわかりやすいので、こちらを参照してCubeの色変更を変更しましょう。


「ctrl+s」忘れずに!


3.T265をProjectNorthStarに装着する


RealSenseT265を両面テープでProjectNorthStar上部に固定します。ここでケチって薄い物を使用するとちょっときょろきょろしただけでふっとんでいくので、ケチらずちゃんとした両面テープを購入することをお勧めします!

このような固定具を製作している方もいるので、ProjectNorthStarとT265を固定する部品を3Dプリンタで出力するのも良いですね。(時間ができたらチャレンジしてみますね)


もうここまできたらあとはぽっちと再生ボタンを押すだけです。


3.シーンを再生してProjectNorthStarが6DoF化しているかチェックしましょう!



ここまでやり切った方、お疲れ様でした!

蓋を開けてみるとRealsense™️さんが用意してくれた素晴らしいunitypackageのおかげで何もコードを書かずに【ノーコディング】でProjectNorthStarを6DoF化することができました。

6DoFに対応することで表現の幅がグッと広がり、自分で製作したARHMDとは思えないコンテンツを制作できるようになりました。機能だけ強くても中身が備わってないと体験する人の感情を揺さぶることはできないので、これからはこの環境を生かしたアプリケーション開発などを行なっていく予定です。ぼくの技術系記事はこれが初めてだったのですが最後まで読んでくださった方、ありがとうございました!

サポートして頂いたお金は,3Dプリンタのフィラメント代や生きていくための食費に利用させていただきます!