Jetson Nano に pptk をインストールする


前置き

Kaolin を Jetson Nano で動かしてみようと思いました。
ドキュメントに沿って進めてみましたが、ERROR: kaolin 0.1.0 requires pptk, which is not installed. など、パッケージの不足を示す複数のエラーが...

ほとんどは pip install 〇〇 で解決できましたが、 pptk に関しては解決できず、インストールに苦労したので、 pptk を Jetson Nano にインストールする方法をメモとして残します。

実行環境

$ uname -a
Linux JetsonNano 4.9.140-tegra #1 SMP PREEMPT Mon Dec 9 22:47:42 PST 2019 aarch64 aarch64 aarch64 GNU/Linux

初めに試したこと

pptk を pip でインストールする。

$ pip install pptk
ERROR: Could not find a version that satisfies the requirement pptk (from versions: none)
ERROR: No matching distribution found for pptk

上記のように、Jetson Nano Ubuntu18.04 ではインストールすることができませんでした。

また、PyPIからwhlファイルも探しましたが、Jetson Nano Ubuntu18.04 に該当するファイルは見つかりませんでした。

pptk の GitHub を確認

pptk の GitHub を確認したみたところ、インストール方法として pip 以外に、ソースから pptk をビルドする方法がありました。今回はこの方法を利用します。

pptk に必要な依存関係のインストール

以下に示す5つが必要です。

  • QT
  • TBB
  • Eigen
  • Python
  • Numpy

CMakeCache.linux.txt を参考に QT、TBB、Eigen のインストール方法をメモとして残します。なお、QT、TBB、Eigen それぞれのバージョンは、CMakeCache.linux.txt と一致させています。

また、後述する CmakeCache.txt を作成するための準備として、インストールしたファイルを格納するためのディレクトリを用意します。

$ cd
$ mkdir Sources && cd Sources

それでは、必要なファイルをインストールしていきます。

QT

$ sudo apt install qtbase5-dev qttools5-dev-tools qt5-default

TBB

$ wget wget https://github.com/oneapi-src/oneTBB/releases/download/2018_U1/tbb2018_20170919oss_lin.tgz
$ tar -xzvf tbb2018_20170919oss_lin.tgz

Eigen

$ wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2
$ tar -xjvf 3.3.4.tar.bz2
$ mv eigen-eigen-5a0156e40feb/ eigen-3.3.4/

pptk のビルド

必要なファイルのインストールが完了したら、pptk のビルドを行います。
まず、 pptk を GitHub から クローンします。

$ cd
$ git clone https://github.com/heremaps/pptk.git temp

次に、ビルドするためのディレクトリを作成し、そのディレクトリ内に CmakeCache.txt を作成します。

$ cd temp
$ mkdir build && cd build
$ touch CMakeCache.txt

それでは、CMakeCache.linux.txt を参考に、CMakeCache.txt を記述します。

上記の手順で進めた場合、CMakeCache.txt は以下のようになります。
Numpy_INCLUDE_DIR:PATH は異なると思いますので、環境に合わせて変更して下さい。

CMakeCache.txt
Numpy_INCLUDE_DIR:PATH=/home/JetsonNano/.virtualenvs/py33d/lib/python3.6/site-packages/numpy/core/include/numpy
Eigen_INCLUDE_DIR:PATH=/home/JetsonNano/Sources/eigen-3.3.4
Qt5_DIR:PATH=/usr/lib/aarch64-linux-gnu/cmake/Qt5
TBB_INCLUDE_DIR:PATH=/home/JetsonNano/Sources/tbb2018_20170919oss/include
TBB_tbb_LIBRARY:FILEPATH=/home/JetsonNano/Sources/tbb2018_20170919oss/lib/intel64/gcc4.7/libtbb.so
TBB_tbb_RUNTIME:FILEPATH=/home/JetsonNano/Sources/tbb2018_20170919oss/lib/intel64/gcc4.7/libtbb.so
TBB_tbbmalloc_LIBRARY:FILEPATH=/home/JetsonNano/Sources/tbb2018_20170919oss/lib/intel64/gcc4.7/libtbbmalloc.so
TBB_tbbmalloc_RUNTIME:FILEPATH=/home/JetsonNano/Sources/tbb2018_20170919oss/lib/intel64/gcc4.7/libtbbmalloc.so
PPTK_PATCHELF:FILEPATH=/home/JetsonNano/Sources/install/bin/patchelf

CMakeCache.txt の作成後、以下を実行します。

$ cmake ~/temp/

cmake の 実行後、以下のようにディレクトリ pptk が生成されます。

$ tree -L 1 ~/temp/build
/home/JetsonNano/temp/build
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── licenses
├── Makefile
└── pptk

生成された pptk をコピーします。

$ cp -r pptk /home/JetsonNano/.virtualenvs/py33d/lib/python3.6/site-packages/

pptk の確認

最後に pptk がインストールされているか確認します。

$ python3
>>> import pptk
>>> import kaolin
>>>