search
LoginSignup
0

posted at

updated at

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

はじめに

今回は、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
What you can do with signing up
0