search
LoginSignup
0

posted at

updated at

Raspberry Pi3 Model B aeroTAP 3Dカメラ接続環境構築手順

はじめに

最近、改めてRaspiberry pi3 Model Bに3Dカメラを接続したので、最新情報での簡単構築手順について説明します。最新版OSでRaspberry pi3を設定」していると、問題もあり、また多くの時間がかかったのでここで設定した環境のイメージをアップしておきました。
早速 aeroTAP 3D USBカメラを接続して使っていたい方は、イメージをダウンロードしてご利用ください。

Raspberry Pi3 aeroTAP 3D USBカメラキットはこちらから購入できます。

できること

環境設定ができると、Raspberry pi3上でaeroTAP 3D USBカメラ用のサンプルプログラムを実行したり、3Dカメラをネットワーク3Dカメラサーバーとして稼働したりすることができます。

また、aeroTAP 3D USBカメラを使うためのpythonの環境も構築し、サンプルを実行します。

準備するのも

  • Raspberry Pi3 Model B (Raspberry Pi4でもほとんど同様の手順となります)
  • aeroTAP 3D USBカメラ ( G1, GSまたはG2 )
  • ネットワーク( Wifiなど )
  • aeroTAP SDKおよび cam2webは、下記からダウンロード

Raspberry Pi3の初期設定

Raspberry pi Imagerを使ってSDカードを作成します。
Raspberry pi Imagerをダウンロードして、実行します。
RaspiImager.png

  • Release 4.2 Narch 2022

イメージを作成したら、Raspberry Pi3に差し込んで、起動します。
起動後必要な設定を行ってください。

  • Wifi設定
  • ユーザー作成 (piユーザー)
    アップデートが自動的に開始され、再起動します。(約2時間ほどかかりました)

再起動後 [Preference]>[Raspberry Pi Configuration]を起動して、SSHを有効します。

  • SSH (ファイル転送に使います)

RaspiのIPアドレスを確認しておいてください。ここでは、192.168.3.73とします。

環境構築

ダウンロードした aeroTAP SDKおよび cam2web.tar.gzをRaspiにアップロードしてください。

ファイルの転送にはFileZillaが便利です。

最低必要なライブラリのインストール

aeroTAP-sdk サンプルを実行するために以下のライブラリが必要です。

qiita.rb
sudo apt install libusb-dev
sudo apt install libudev-dev freeglut3-dev
sudo apt install libv4l-dev
sudo apt install libpng-dev libjpegp-dev
sudo apt install cmake

サンプルコードのビルド

アップロードした aeroTAP-SDK.tar.gz, cam2webを展開します。

qiita.rb
pi@raspberrypi: tar -xvzf aeroTAP-SDK.tar.gz
pi@raspberrypi: tar -xvzf cam2web.tar.gz

RGBDビルド

RGBDは、aeroTAP 3Dカメラからカラー画像を深度マップを取得して表示するサンプルです。
以下の手順でビルドします。

qiita.rb
pi@raspberrypi: cd aeroTAP/sample/RGBD
pi@raspberrypi:~/aeroTAP/sample/RGBD $ mkdir build
pi@raspberrypi:~/aeroTAP/sample/RGBD $ cd build
pi@raspberrypi:~/aeroTAP/sample/RGBD/build $ cmake ..
pi@raspberrypi:~/aeroTAP/sample/RGBD/build $ make

正常にビルドされているか確認してください。aerotap_RGBD 実行ファイルが作成されます。
実行してみてください。距離を色で表現した深度マップが表示されたWindowが開きます。

qiita.rb
pi@raspberrypi:~/aeroTAP/sample/RGBD/build $ ./aerotap_RGBD

画像をクリックすると、[カラー画像]>[グレースケール画像]の準備に切り替わります。

深度マップ カラー画像 グレイスケール画像
depth.png color.png gray.png

aeroTAP 3D USB G2カメラでの画像

[Esc]キーで終了します。

起動パラメータ

ソースコードを確認しても分かりますが、以下のパラメーターが利用可能です。

qiita.rb
	std::cout << "Options: -j MJPG,  -u uSB2.0, -f Enable Post Filter \n"
				 "Resolution: -r0 qvga, -r1 VGA, -r2 Wvga, -r3 HD\n" << std::endl;
  • -j オプションでカラー画像をMJPGモードで取り込みます。FPSを高速化できます。
  • -u USB20に接続している場合のオプションです。自動で認識されていない場合のみ指定します。
  • -f 深度マップを簡単にPost処理します。
  • -rX X:0 320x240, 1 640x480, 2 640x400 or 640x360, 3: 1280x720 ( GS or G2のみ)

Raspberry pi 3/4 Nano Pi等のUSB3.0に接続しても aeroTAP 3D USBカメラは、動作しません。USB2.0で接続してください。

PalmTrackビルド

PalmTrackは、aeroTAP 3Dカメラからのカラー画像/深度マップから手のひらを検出して表示するサンプルです。
以下の手順でビルドします。

qiita.rb
pi@raspberrypi: cd ~/aeroTAP/sample/PalmTrack
pi@raspberrypi:~/aeroTAP/sample/PalmTrack $ mkdir build
pi@raspberrypi:~/aeroTAP/sample/PalmTrack $ cd build
pi@raspberrypi:~/aeroTAP/sample/PalmTrack/build $ cmake ..
pi@raspberrypi:~/aeroTAP/sample/PalmTrack/build $ make

正常にビルドされているか確認してください。aerotap_PalmTrack 実行ファイルが作成されます。
実行してみてください。
距離を色で表現した深度マップが表示されたWindowが開きます。手のひらをカメラに向け、検出されると矩形が表示されます。

qiita.rb
pi@raspberrypi:~/aeroTAP/sample/PalmTrack/build $ ./aerotap_PalmTrack

画像をクリックすると、[カラー画像]>[グレースケール画像]の準備に切り替わります。
[Esc]キーで終了します。

cam2web カメラサーバーの作成

cam2web.tar.gzを展開して、ビルドします。cam2web 実行ファイルが作成されます。

qiita.rb
pi@raspberrypi:~/ $ tar -xvzf ./cam2web.tar.gz
pi@raspberrypi:~/ $ cd cam2web/src/apps/linux
pi@raspberrypi:~/ $ cd cam2web/src/apps/make

cam2webを実行します。

qiita.rb
pi@raspberrypi:~/cam2web/src/apps/ $ ./cam2web

ライブラリ libaeroTAP-sdk.so が見つからないとエラーが表示される場合は、LD_LIBRAYRY_PATHを設定してください。
export LD_LIBRARY_PATH=/home/pi/aeroTAP/lib/linux_arm.pi3/

ブラウズ

PCからブラウスして見てください。3Dカメラからの深度マップ画像をストリーミングできます。

qiita.rb
http://192.167.3.73:8000/

直接動画をストリーミングする場合:
http://192.167.3.73:8000/camera/mjpeg

画像を取得する場合:
http://192.167.3.73:8000/camera/jpeg

IPアドレスは、RaspiのIPアドレスを指定します。ポート番号 8000がデフォルトです。起動オプションにより解像度、表示内容、ポート番号などを変更することができます。以下のコマンドで利用可能なパラメーターを表示できます。
cam2web -?

複数のネットワーク3Dカメラからの取得

複数ネットワーク3Dカメラを構築したら、中央PCから同時に参照したくなります。下記のサイトにサンプルプログラムをアップしましたので、お試しください。

Pythonで扱う3Dカメラ

aeroTAP 3D USBカメラを扱うためのPythonライブラリは、aeroTAP/lib/pythonフォルダーにあります。実行するには、Python + Opencvの環境が必要です。

今回、Raspberry Pi3 Model BのOSバージョン

  • Debian 11.4
  • Python 3.9.2 (default, Mar 12 2021, 04:06:34)
    すでに python3, pip3はインストールされているようでした。
    その場合、下記のコマンドでnumpy. opencvがpython3で使えるようになるはずですが、import cv2でエラーが発生します。
sudo pip3 install numpy
sudo pip3 install opencv-python
sudo pip3 install opencv-contrib-python

python3
>>>import cv2

ネットでいろいろ調べたことろ下記の方法で解決できました。

まず、不足しているライブラリのインストール

sudo apt-get install libhdf5-dev libhdf5-serial-dev libatlas-base-dev

opencv-contribをアンインストールして、3.4.14.51をインストール

sudo pip3 uninstall opencv-contrib-python
sudo pip3 --default-timeout=1000 install opencv-contrib-python==3.4.14.51

python3
>>>import numpy
>>>import cv2

numpyでエラーがでます。

ImportError: numpy.core.multiarray failed to import

numpyの更新

pip install numpy --upgrade

python3
>>>import numpy
>>>import vc2

エラーなく、成功しました。

pythonサンプルの実行

LD_LIBRARY_PATHを設定(設定していない場合)して、

export LD_LIBRARY_PATH=/home/pi/aeroTAP/lib/linux_arm.pi3/

cd ~/aeroTAP/lib/python

aerotap.py サンプル

カメラを接続して、pyファイルを実行してください。

python3 ./aerotap.py

aeroTAP 3D USBカメラからカラー画像と、深度マップをカラー表示します。
デモは、'q'キーで終了、または一定フレーム数で終了します。

aerotapPalm.py サンプル

こちらは、手のひら検出を使った例です。

python3 ./aerotapPalm.py

aeroTAP 3D USBカメラからカラー画像、手のひらを検出すると矩形を表示します。
デモは、'q'キーで終了、または一定フレーム数で終了します。

pythonライブラリが正しく実行できたら、pythonライブラリを使って独自のアプリに挑戦し手見てください。

作成したRaspberry Pi3用イメージ

久しぶりに最新環境でRaspberry Pi3を設定すると、多くの問題で時間を浪費してしまいました。
ここで設定したRaspberry pi3のSDカードイメージをアップしておきましたので、aeroTAP 3D USBカメラで利用したい場合は、こちらのイメージを使っていただければ簡単い作業に入れます。

raspi3-March2022-aerotap.rar

ダウンロード、展開後、Win32DiskImagerを使って、SDカードに書き込んでください。

ユーザーID/パスワードは、pi/pi です。

起動後、WiFiなどネットワークの設定を行ってください。

イメージには、aeroTAP SDK, cam2webがすでに含まれていますが、最新版をGithubからダウンロードしてご利用ください。

参考文献

[NumPyとOpenCVのimportでエラーが出る件] https://qiita.com/thinknee/items/9489119c8b85d9323132
[ラズパイ(Raspberry Pi)へのOpenCVのインストール方法・手順] https://python-academia.com/raspberrypi-opencv/

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