見出し画像

Jetson Nano + Cinder

以前の記事にて Jetson Nano 環境でopenFrameworks環境をビルドしてみたのですが、久しぶりにCinderを使う機会があり、そういえばLinux対応ってどういう状況なんだろう?と思ってしらべたところ…

バージョン表記が古いことはさておき、公式にJetson TK1 の文字が。Jetson系統が記載されているので、これはもしや行けるのでは…?
早速、セットアップを試してみました。

コンパイラのインストール周りでつまずく

基本的にはTK1向けに記載された手順に沿って作業をすすめていく。
実行環境はopenFrameworksを試した環境のままだ。
しかし、apt-get で g++ が見つからない様子…
とりあえず、一度この時点でmakeしておけばよかった。と思ったのは後の祭りで、g++の代わりにclangのインストールをすすめることにしたが、色々とうまく行かない…
一度、他のSDカードでまっさらな状態から試してみることに

改めてビルド手順

もう一度、TK1向けの手順を元に作業をすすめる。
JetsonNano向けSD Imageもバージョンが上がっているようで、今回は
jetson-nano-sd-r32.2-2019-07-16.zip を利用しました。(書き込み方法は過去記事を参照)
パッと見でもgccのバージョン等上がっていると思いますので、最新版を使ったほうが作業しやすいかと思います。

g++のインストール
最初から入っていたのでスルーしてOK。
念の為バージョンを確認するには以下コマンドを実行。

$ g++ --version
g++ (Ubuntu/Linaro 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

cmakeのインストール
TK1向け手順ではソースからビルドしていたが、aptのcmakeでもバージョンが条件(CMake 3.0+)をみたしていたので、サクッとaptでインストールする

$ sudo apt install cmake

依存ライブラリー郡のインストール

$ sudo apt-get install libxcursor-dev \
libxrandr-dev \
libxinerama-dev \
libxi-dev \
libgl1-mesa-dev \
libgles2-mesa-dev \
zlib1g-dev \
libfontconfig1-dev \
libsndfile1 \
libsndfile1-dev \
libpulse-dev \
libasound2-dev \
libcurl4-gnutls-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
gstreamer1.0-libav \
gstreamer1.0-alsa \
gstreamer1.0-pulseaudio \
libboost-filesystem-dev

libmpgはソースからビルドする必要があるようです。

$ cd ~/
$ wget https://www.mpg123.de/download/mpg123-1.24.0.tar.bz2
$ tar xvf mpg123-1.24.0.tar.bz2
$ cd mpg123-1.24.0
$ ./configure --prefix=/opt/local
$ make -j 4
$ sudo make install

Cinder本体のビルド
cinderのgitリポジトリにはサブモジュールが含まれるので、--recursiveオプションをつけることを忘れないよう気をつけます。

$ cd ~/
$ git clone --recursive https://github.com/cinder/Cinder.git
$ cd Cinder
$ mkdir build && cd build
$ cmake ..
$ make -j 4

以上でCinderを使う準備が整いました。
ためしにサンプルプロジェクトをビルドしてみます。

$ cd samples/BasicApp/proj/cmake
$ mkdir build && cd build
$ cmake ..
$ make

コンパイルが正常終了したら実行してみます。

$ ./Debug/BasicApp/BasicApp

ただの黒い画面が表示されれば完了です。

他のサンプルもビルドしてみましたが実行できました。
以下はGeometryプロジェクトの実行画面。
これくらいの画像処理であれば、GPUアクセラレーションが効いているので、グリグリ動かしてもスムーズに動きます。

ただ、Geometryプロジェクトでは以下のようなエラーが出ていました。

Ignoring xlib error: error code 3 request code 2

これについては、後日検証します。

他にも、アドオンは対応してないものも多く、たとえばQuickTimeBasicプロジェクトなど(今どきQuickTimeというのも考えものですが…)は動きませんでした。
openFrameworks (以下oF)と比べると、oFがシェルスクリプトベースでコンパイル対応させているのに対し、Cinderはcmakeでコンパイル出来て、C++の標準的なコードに近いとおもいます。

今後、OpenCVなどを使ったテストを予定しているので、それも公開できるタイミングで記事にしてみたいと思います。

今までの関連記事


この記事が気に入ったらサポートをしてみませんか?