cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

nVidiaのJetson nanoで、ホログラムディスプレイのLookingGlassをHoloPlay.jsのSDKで使えるようにする。

Looking Glassは超面白いですね。今まで、さんざん色々な3Dディスプレイの表示クオリティの低さにがっかりさせられてきましたが、Looking Glassの画質はかなりいい線まで来ているように思えます。(欲を出せばいろいろありますが。)
Looking Glassにリアルタイムで描画しようと思ったら、3Dモデルを40枚同時に描画できなければいけないので、PCの要求仕様がかなり高いことが難点です。とくにそれらの値段が高く大きく重いことが悩みになります。
ところが、折しもちょうどいいタイミングでnVidiaのJetson Nanoという高度な描画能力を持ったマイコンボードが1万3千円ぐらいで買えるようになっていますので、この2つを組み合わせれば理想的じゃないか、と誰もが思いつくと思います。今日は、これをやってみたいと思います。

1.Jetson Nanoの準備

Jetson Nanoのイメージの焼きこみなどは、こちらを参考にしてください。
developer.nvidia.com
ぐぐれば一杯情報が出てきます。まっさらにインストールした状態から始めることにします。

2.準備

まず、作業用のディレクトリを作ります。

> mkdir workspace
> cd workspace
> mkdir ThreeJSTutorial
> cd ThreeJSTutorial
> mkdir js

次に、three.jsライブラリとHoloPlay.jsライブラリをダウンロードして展開します。

GettingStartGuideを見ながら進めるといいでしょう。
docs.lookingglassfactory.com
読むのが面倒くさい人は、次のリンクから。
https://github.com/mrdoob/three.js/archive/master.zip
https://s3.amazonaws.com/static-files.lookingglassfactory.com/ThreeJSLibrary/v0.2.1/HoloPlay.zip
これらのZIPを展開して、中身を~/workspace/ThreeJSTutorial/jsの下にコピーします。必要なのは.jsファイルが二つだけですが面倒くさいので全部コピーでも動きます。(WEBを公開する予定があって、セキュリティ等が気になる人は必要なファイルだけの方が無難。)

テスト用のindex.htmlを作ります。

まっさらの状態のJetson Nanoですとまだ使いやすいエディタも入っていないので適当なものを入れます。

sudo apt-get update
sudo apt-get -y install nano

Getting StartのWEBページの一番最後にあるexampleのソースコードをコピーして、index.htmlファイルを作ります。

> nano index.html
コピペ

medium.com
こちらのページにも同様のexampleが載っていますが、こちらの方は時間ごとに更新されて動くのでアニメーションさせたいときの参考になります。

3.WEBサーバのインストール

WindowsLinux向けのWEBサーバーインストーラアプリXAMPPは、x86/x64をターゲットにしたバイナリで配布されているので、ARMコアのJetsonNanoでは動きません。要はLAMPのアプリが入っていればいいので、手動でインストールしていきます。Lampのインストール方法は、Jetson向けの物はほとんど見つかりませんが、RaspberryPi用の記事はたくさん書かれていますのでこれを参考にします。
www.neko.ne.jp
インストールコマンドだけを抜き出すと、こんな感じになります。sudoで始まる行だけ辿れば大丈夫のはず、です。

> uname -a
> perl -V
> sudo apt-get udpate
> sudo apt-get -y install apache2
> apache -V
> sudo apt-get -y install php php-dev php-fpm php-gd
> sudo apt-get -y install php-mysql
> sudo a2enmod proxy_fcgi setenvif
> sudo a2enconf php7.2-fpm
> sudo systemctl reload apache2

php7.2-fpmの7.2はphpのバージョンに対応します。適切なバージョンを入れてください。

> sudo apt-get -y install mysql-server
> mysqld -V
> mysql -V
> sudo apt-get -y install phpmyadmin
[yes]
[password] x2
[apache2]

4.WEBコンテンツのパスを通す

apache2のdefaultのWEBコンテンツの置き場所は、/var/www/html/の下です。状況が変わって見つからないときは、

> sudo find / -name index.html -print

などで探すとよいでしょう。ここに、workspaceディレクトリの下に作ったThreeJSTutorialディレクトリのシンボリックリンクを張ります。

> cd /var/www/html
> sudo ln -s ~/workspace/ThreeJSTutorial ThreeJSTutorial
> cd

5.Holoplay.js for Linuxを起動する

何の制限があってかわかりませんが、LookingGlassのThree.jsライブラリであるHoloPlay.jsはWindowsMacにしか正式に対応していません。これを何とかするライブラリを先人が開発してくれているので、これを使いわせてもらいます。一応、アンオフィシャルだと思うので何があっても自己責任でお願いします。
github.com
初出はこちら。
Holoplay.js for Linux - Made with Looking Glass - Looking Glass Factory Forum

Githubからソースコードをダウンロードしてきて解凍します。適当な場所においてもかまわないはずなのですが、なぜかapt-getでgolang goをインストールしようとすると~/goにGOPATHを通そうとする(そして.bashrcに別の場所を書いても無視される)などのよくわからない挙動をしめす「ことがある」ので、~/goに展開してしまいます。

golangをインストール

> sudo apt-get -y install golang-go
> nano ~/.bashrc
一番最後の行に、
export GOPATH=~/go
export GOBIN=$GOPATH/bin
export PATH=$GOPATH/bin:$PATH
を足す。
> bash

golangのパスの機嫌がよくわからないときがあるので、何か困ったらWEBでもっと詳しいページを調べてください。
次にgoの実行環境を整えます。

> cd ~/go
> go get

何も言われず終了すればうまくいっているようです。何か文句を言われたら、PATHの設定などが間違えているのかもしれません。
これで準備ができましたので、goスクリプトを実行します。

> sudo go run main.go

この時点では何の応答もありません。
LookingGlassのUSBを接続して、WEBブラウザで用意したThreeJSTutorialを開きます。
すると、上手くいっていればキャリブレーションデータがターミナルに表示されて、ブラウザ内に次のような画面が表示されます。

Chromiumhttp://localhost/ThreeJSTutorial/index.htmlを開く。

f:id:cvl-robot:20190513190436j:plain
LookingGlass+JetsonNanoの動作テスト

うろ覚えで書いているので、上手く動いた動かない、のフィードバックをお待ちしています。

今日の工具

一流工具が欲しい病気にかかっています。