LoginSignup
0

More than 1 year has passed since last update.

NanoPi NEO3 のネットワーク3Dカメラ化

Last updated at Posted at 2021-10-14

はじめに

今回は、NanoPi NEO3を入手れたので、少し調べた結果を記録しておきます。
aeroTAP 3D カメラ(https://www.aerotap.com/) を接続して、簡単にネットワーク3Dカメラ化するための手順を記事にしておきます。
NanoPi NEO3は、ARM Cortex-A53(64ビットクワッドコア RK3328)にUSB3.0ポートが付いた極小で安価なSBCです。さらにギガビット イーサーネットも搭載しているので、3Dネットワークカメラの構築にいいのでは?と思います。

cam2web.png

方法

ここでは、cam2webを使ってカメラをネットワーク化します。

NanoPi NEO3のような安価な極小SBCでリアルタイムで3Dデータをネットワーク越しで得られると、また新しいアイデアが出て来るのではないでしょうか。

#準備するもの

  • NanoPi NEO3 (ネットワークケーブル)
  • aeroTAP 3Dカメラ
  • PC (Putty, ブラウザ)

DSC_0112.JPG

ソフトウェア

GitHubにキットをアップしましたのでご利用ください。

#NEO3 セットアップ

Nano Pi NEO3のセットアップは、 https://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO3 を参照しました。
イメージは、rk3328-sd-friendlycore-lite-focal-5.10-arm64-20210830.img を使います。下記のステップで作業しました。

  • DiskIamgerでMicro SDにイメージを書き込み
  • Nano Pi NEO3をネットワークに接続し、電源Onで起動
  • DHCPで起動されるので、Nano Pi NEO3のIPアドレスを探す
  • PCからssh (Putty)を使って接続
  • ユーザー名/パスワード pi/piでログイン

OS環境の設定

無事にログインできたら、以下のコマンドを実行して必要な環境を設定します。

sudo apt-get update
sudo apt-get upgrade

sudo apt-get intall libudev-dev
sudo apt-get install libv4l-dev
sudo apt-get install libjpeg8 libjpeg8-dev 

cam2web のビルド

cam2web をGitHubからダウンロードして、いくつかのaeroTAP 3Dカメラを使うためにカメラ部分のコードを変更します。
変更したcam2webのコードをGitHubにアップしました。
ダウンロード、展開してビルドします。

tar -vxzf cam2web.tar.gz
cd ~/cam2web-aeeoTAP/src/tools/web2h/make/gcc
make
cd ~/cam2web-aeroTAP/src/apps/linux
make

cam2webの実行

ビルドが成功したら、後はaeroTAP 3DカメラをNano Pi NEO3のUSBポートに接続して実行するだけですが、その前に、aeroTAP SDKのライブラリを共有化します。

export LD_LIBRARY_PATH=~/cam2web-aeroTAP/src/core/cameras/aeroCAM/lib/linux_aarch64

cam2webを実行する前に、コマンドライン パラメータを確認してください。

./cam2web -?

-size<0-12> パラメータでカメラの解像度を選択できます。
利用可能な解像度は、利用する aeroTAP 3Dカメラにより異なります。

aeroTAP 3D G2 aeroTAP 3D aeroTAP 3D GS
320x240 320x240 -
640x480 640x480 640x480
- 640x400 -
1280x720 - 1280x720

例えば、aeroTAP 3D G2カメラを使っている場合、-size:0, -size:2, -size:3 を選択することができます。
解像度が小さいほど高速で画像が得られます。

./cam2web -size:0

結果の表示

エラーなく起動できたら、PCのブラウザから3D画像(Depth Map)をストリーミングしてみましょう。
ブラウザを起動して、URL http://192.168.1.131:8000 を入力します。

  • IPアドレスは、Nano Pi NEO3のIPアドレスです。
    結構高速で3Dデータを色で表した画像ストリーミングが得られます。
    -size:3で1280x720で取得してみましょう。
    これをRaspberry pi3で実行すると非常に遅いのですが、さすがNano Pi NEO3です。

その他拡張

カメラに関するソースコードは、/cam2web-aeroTAP/src/core/cameras/V4L2/XV4LCamera.cpp になります。
aeroTAP SDKを使っています。
カラー画像化した3Dデータをストリーミングしています。
カラー画像、グレースケール画像、3D RAWデータに変えたりできます。
3D RAWデータで別のPCで取得して、3D表示/解析するなども可能になります。

#define 		_IMAGE_COLOR 0 
#define 		_IMAGE_GRAY 1 
#define 		_IMAGE_DEPTH 2
#define 		_IMAGE_DEPTHRAW 3
...
bool XV4LCameraData::Init( )
{
...
	nImageType = _IMAGE_DEPTH;

Raspberry Pi 3での実験

同じ手順で、Raspberry Pi3のネットワーク3Dカメラ化も可能です。
Raspberry Pi 3では、aeroTAP SDK /linux_arm フォルダのライブラリを使うことに注意してください。
ビルド前に、cam2web-aeroTAP/src/apps/linux/Makefile line:95 を編集してください。

	$(COMPILER) -o $@ $(OBJ) $(LDFLAGS) -L/home/pi/aeroTAP/lib/linux_arm

cam2web-aeroTAP/src/core/cameras/aeroCAM/lib/linux_armフォルダー内のlibaeroTAP-sdk.so を共有化します。

export LD_LIBRARY_PATH=~/cam2web-aeroTAP/src/core/cameras/aeroCAM/lib/linux_arm

*Raspberry Pi3では、640x480 が限界でしょうか。1280x720では相当フレームの更新が遅いです。

その他Linux ( Ubuntu )

Ubuntuでは、aeroTAP SDK /linux64 フォルダのライブラリを使うことに注意してください。同様にMakefileを編集してください。

終わりに

今回、aeroTAP 3Dカメラを接続するためにcam2webのL4L2のコードを基に最小限変更してみました。画像の切り替えなどもクライアント側からできるといいのですが、何もしてません。
さらに展開してもらえれば幸いです。

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
0