1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Jetson Nano + Realsense D455 を pyrealsense2で扱えるようにする。

Posted at

#はじめに
前回、Jetson NanoにJetpack44.1をインストールして使おうとした。現在は使っていない。理由は、Wifiを設定することができなかったからだ。jetpack43で動いていたUSB接続のwifiアダプター、44.1でも認識はする(lsusbにも表示もされる)が、アクティベートできなかった。面倒臭くなったので、jetpackを43に戻した。

ちなみに、前回44.1でtesorflowをインストールして目的の自然言語処理をやらせてみたのだが、PC(i7-4コア)で3時間で済んだ作業が、JetsonNanoでは24時間かかっても終わらなかった。

Jetson NanoをUSB接続のSSDから起動させ、記録領域(ディスク容量)としては128GBを確保してある。他者の記事を参考にしながら、Swapの設定やらも行って、OpenCVのコンパイルもできた。

  Jetson Nanoの/をUSBドライブにしてSDカードを長生きさせる
  https://qiita.com/sgrowd/items/87d65383c0b74306ea7d

  Jetson Nanoにスワップ領域を作成する ー とある変人のお道具箱
  https://www.henjins-toolbox.tech/entry/jetsonnano_make-swap

  (すんごくありがたい感じで情報が羅列されている掲示板)
  http://www.neko.ne.jp/~freewing/raspberry_pi/nvidia_jetson_convenience_script/
  (掲示板の管理人さんのGitリポジトリ)
  https://github.com/FREEWING-JP/Jetson_Convenience_Script

さらには、書籍も買ってみた。

  JetsonNano超入門 2019/12 ソーテック社
  https://www.amazon.co.jp/Jetson-Nano%E8%B6%85%E5%85%A5%E9%96%80-Japan-User-Group/dp/4800712513
  
以上、先達がいろいろと紹介してはくれるのだ・・・。ありがたいことだ。

さて、いざ、JetsonNanoを使おうとすると「バッテリー駆動できないじゃないか」問題に直面する。

  JetsonNanoの電源として使えるモバイルバッテリーについて
  http://kazuki-room.com/mobile_battery_that_can_be_used_as_a_power_source_for_jetson_nano/

上述の記事では、3A出力(急速充電対応)のモバイルバッテリーで起動する、と書いてあるが、起動するものの、USB接続の諸々を動作させるだけの電力が足りないのか、私の環境では数秒でシャットダウンする。Amazonで5V4A出力のモバイルバッテリーなんてみつからず、こいつを駆動させるだけの電力を供給できるモバイルバッテリーを素人は入手できない、と諦めた。

結局、小型で、Arm64なCPUで動き、nvidiaのCudaが使える、メモリ4GBのLinuxマシンで、通常のパソコンより消費電力は低いが、据え置きで使うしかないデスクトップPCとしての運用にする。

結局、私のような半素人では、JetsonNanoの使い道について、”物理的に持ち運び可能なんだけどコンセントが必須のWebサーバー”くらいしか思いつかなくなってしまった。

今回は、”コンセントが必須”という甚だ困った仕様であるが、JetsonNanoをビデオストリーミングサーバーを作って、離れた場所で撮影された映像をPCで見る、という装置を作ってみることにした。

#Jetson Nano に Realsense D455を利用するためのドライバ、ライブラリをインストール
2020年は、格安WEBカメラを見かけなくなった年だった。7月に横浜のド●パラで店員さんに質問した時は「もう、(2000円以下の)安いカメラなんて入手できませんよ、店頭の4000円くらいのを買っておいた方がいいですよ」と言われた。(こんなに優しい表現ではなく、もっと嫌みったらしく”買う気がないなら帰れ”ぐらいの感じで言われたが、若気の至であろうと見逃して差し上げた。そういえば、11月に新橋のじゃ●ぱらでiPadMiniを中古で売ろうとしたら、先輩店員が後輩店員に”ここに傷があるので9000円ほど査定が下がりまして●千円になります”と言わせていた。後輩店員が「震えながら」私に説明したので、何かあると思って売らずに帰った(その後、このアイテムは、別の店で倍以上の値段で売れた)。都会のPCパーツ屋の若者は人を騙すに親切を装うことすらできず、また後輩の心を荒ませるような上下関係もあるらしい・・・と、2020年は人心の荒廃を目の当たりした年でもあった。)

そんな2020年中に購入したカメラの一つは、IntelのRealsense D455である。3D点群取得、Depthセンスの機能の着いたカラーカメラがテーマとなっている業務を受託した都合で、研究開発のために購入したものだ。

  Intel Realsesnse D455
  https://www.intelrealsense.com/depth-camera-d455/
  

これをJetsonNanoで使ってみることにした。
参考となる情報を次のサイトで発見した。

  Jetson Xavier NXでRealSense D455を使用する際のインストール方法・注意点
  https://dev.classmethod.jp/articles/use-realsense-d455-with-jetson-xavier-nx/

こちらのサイト、Jetson Xavier(”ザビエル”って読むのかな?)で動かす例なのだが、要点を理解するにはちょうど良い情報量になっている。私にとって重要なポイントは、1)CMakeを更新する必要があることを教えてくれた、2)pythonでrealsenseを制御するpyrealsenseライブラリのJetson Nano用のインストールスクリプトが別サイトにあることを紹介してくれた、3)Jetson Nano用スクリプトをD455で作動するように改造するべき箇所を示してくれた、という3点だ。

余談だが、クラメソはいろんな情報が集まっていてありがたい。一体どんな会社なんだろうと興味はわくが、なんかありがたい人たちの集団なんだろうな、と距離をとっておくことにする。

さて、このクラメソ情報を参考に、次のとおりに作業した。
1)CMakeの更新
 これは、前項で述べたありがたい掲示板サイトの管理人さんのGithubリポジトリにCMakeのインストールスクリプトがあるのでこれを使わせてもらった。ただ、このConvinienceScriptのリポジトリ全部を、git cloneさせてもらってみたら、サイズのデカさ(約150MB)にびっくりする。なお、スクリプトを使わせてもらってCMakeの更新には、1時間弱の時間がかかった。インストールしたらターミナルを再起動またはsshを再接続すること。

\def\textsmall#1{%
  {\rm\scriptsize #1}
}
​​​​
\textsmall{実は以前にCMake更新なしでrealsenseをインストールしたことがあり、CMake 3.10.2 (Jetpack標準)でもいちおうRealsenseを動作させることができたことは(私の環境だけ?かもしれないので)、王蟲にも聞こえない程度の小声程度にしてメモ。}

2)Jetson Nano用のlibRealsense, pyrealsense2インストールスクリプトの取得

cd (自分の好きなフォルダへ)
git clone https://github.com/JetsonHacksNano/installLibrealsense
cd installLibrealsense

参照先のクラメソの人は、installlibrealsense.shを実行した上で、buildlibrealsense.shを実行しているが、私はinstalllibrealsense.shの実行は不要と判断した。udev.ruleが二重にインストールされることになるのが気に入らなかっただけのことだが・・・。

3)スクリプトをJetsonNano+D455用に書き換える。
参照先には書いてないが、個人的に重要だと感じたのは、このbuildスクリプトを実行させていただくと、scripts/installdependencies.shも実行され、その中で、aptでcmakeをインストールしてくれたりする。せっかく、cmakeを最新版に更新したのに、システム標準を入れ直すのだ。たぶん、クラメソの人も見落としているんだろうと思う。この余計なお世話処理、消えてもらわねばならぬ。

vi ./scripts/installDependencies.sh
------------以下のように変更------------
# This is for ccmake
apt-get install build-essential cmake cmake-curses-gui -y
→ (コメントアウト:行頭に # を挿入)

さて、いよいよbuildだ。言うまでもなく、ここが本投稿最大のヤマバだ。本稿作成時点でlibrealsenseの最新バージョンは、2.41.0だったので、バージョンをこれに合わせる。また、cmakeは、/usr/local/binにインストールした更新版を使う。

vi ./buildLibrealsense.sh
------------以下のように変更------------
LIBREALSENSE_VERSION=v2.31.0
→ LIBREALSENSE_VERSION=v2.41.0
# D455を利用するため。v2.31.0ではサポート外。

"time " を消す
# timeコマンドがあると、not foundという旨のエラーになるらしい。というか、筆者個人的には本件で時間の厳密な計測は不要・・・。

/usr/bin/cmake ../ -DBUILD_EXAMPLES=true -DFORCE_LIBUVC=true -DBUILD_WITH_CUDA="$USE_CUDA" -DCMAKE_BUILD_TYPE=release -DBUILD_PYTHON_BINDINGS=bool:true
→ /usr/local/bin/cmake ../ -DBUILD_EXAMPLES=true -DFORCE_LIBUVC=true -DBUILD_WITH_CUDA="$USE_CUDA" -DCMAKE_BUILD_TYPE=release -DBUILD_PYTHON_BINDINGS=bool:true -DPYTHON_EXECUTABLE=/usr/bin/python3
# Python3用のライブラリを出力させる(デフォルトではpython(Python2.7)用が出力されてしまう)
--------------------------------------

sh ./buildLibrealsense.sh
# 待つ(1時間弱)

# 出力されたライブラリを移動。(もしくはパスを追加しても良いかもしれません)。

sudo cp /usr/local/lib/python3.6/pyrealsense2/py* /usr/local/lib

Jetson Nano に Realsense D455 を接続

USBポートに刺してしまえばいいのだろう、と思う。JetsonNanoのUSBポート、全てがUSB3.0対応なのだそうだが・・・。D455は、USB-C3.1 Gen.1と仕様に書かれている。多分、全力駆動はできないだろう。

動作テスト

まずは、realsense-viewerを動かそう。必要に応じて、カメラのファームウェアのバージョンアップもやってくれる。ただし、realsense-viewerはGUIで動作する。リモートでcui接続している場合は、GUIを使えるように設定して実行。

$ realsense-viewer

私の環境では、エラーが出てカラーカメラの映像が表示されなかった。Jetson Nano + D400シリーズ + realsense-viewer では、発生する現象らしいので、期待せずに改善を待とう。(例えば、https://github.com/IntelRealSense/librealsense/issues/4031)
・・・ここまででわかるとおもうが、JetsonNanoに過度な期待はよくない。同じ費用で扱うならば、raspberypi4の8GBモデルの方が使い勝手がよいかもしれない。

次に、参照先のクラメソ先輩の動作確認スクリプトを動かしてみる。RealSense D455を接続した状態で、以下のPythonスクリプト実行。

$ python3

import pyrealsense2 as rs

ctx = rs.context()
devices = ctx.query_devices()
for device in devices:
  print(device)

実行結果例:

<pyrealsense2.device: Intel RealSense D455 (S/N: xxxxxxxxxxxxxxxx)>

このように、デバイスが列挙表示されたら成功だ!

まとめ

先達たちの情報を活用して、Jetson Nano Jetpack43に Realsense D455 を接続して、python3 で扱えるようになった。

Jetpack44で新機能にくらいつけたり、モバイルバッテリー駆動させたりすることができれば、とは考えないようにすることも重要であると合わせて学んだ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?